git常用命令
git use
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
初始一个仓库
#在当前目录新建一个Git代码库
git init
#或在当前目录新建一个目录,将其初始化为Git代码库
git init [project-name]
关联远程仓库
git remote rm origin
git remote add origin url
解决冲突
在文本编辑器中清理这些冲突,处理完后将文件标记为已解决状态(通过执行命令 “git add filename”)。最终,当所有的冲突被解决后,你必须通过一个正常的提交操作来完成这个清理合并冲突的工作。
撤销一个合并
git reset --hard
当你解决完冲突,并且在合并完成后发现一个错误,你仍然还是有机会来简单地撤销它。你只须要键入 “git reset --hard ” 命令,系统就会回滚到那个合并开始前的状态。
分支(branch)的基本操作
查看本地所有分支
git branch
查看远程所有分支
git branch -r
创建一个功能分支(从develop创建一个分支feature-x)
git checkout -b feature-x develop
开发完成后,将功能分支合并到develop分支
git checkout develop
git merge --no-ff feature-x
上一条命令的--no-ff参数是什么意思。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。
推送分支到远程仓库
git push --set-upstream origin feature-x
删除本地feature分支
git branch -d feature-x
删除远程分支
git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
git push origin:<branchname> //删除后推送至服务器
重命名本地分支
git branch -m <oldbranch> <newbranch>
重命名远程分支:
1、删除远程待修改分支
2、push本地新分支到远程服务器
一些选项解释:
-d
--delete:删除
-D
--delete --force的快捷键
-f
--force:强制
-m
--move:移动或重命名
-M
--move --force的快捷键
-r
--remote:远程
-a
--all:所有
丢弃工作区的修改,让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file
把暂存区的修改撤销掉
git reset HEAD <file>
#此时需要再清理下工作区
git checkout -- <file>
删除一个文件
# 删除后,在.gitignore添加这个文件,git将不再跟踪这个文件
git rm file
#强制删除
git rm -f file
#只从stage中删除,保留物理文件
git rm --cached file
查看提交日志
git log
强推到远程:
git push origin HEAD --force
#或 git push -f
还原代码
在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,有两种解决方法:回退(reset)、反做(revert)。
1. reset
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id 退到/进到 指定commit的sha码,使用 git log 查看commit_id
#使用“git push -f”提交更改,此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧
使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。每个版本都会有自己的版本信息,如特有的版本号、版本名等。git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本。如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
2. revert
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
操作
1、反做,使用“git revert -n commit_id”命令。如下命令,我们反做版本号为8b89621的版本:
git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861
1
注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。
2、提交,使用 git commit -m "提交信息"
3、使用 git push
推上远程库
参考 一个小时学会Git
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦