git checkout
-
git checkout -- <file_name>
#这条命令把filename从HEAD中签出 -
git checkout .
#这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子. - 注意:在使用
git checkout
时,如果其对应的文件被修改过,那么该修改会被覆盖掉。
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
复原
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
链接到github(三步走):
git remote add origin git@github.com:sunguangchao/hellow-world.git
git pull origin master
git push -u origin master
git pull --rebase
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git bash出现vim的时候怎么退出?
- 命令模式下,先输入
i
进入编辑模式 - 想退出的话,首先
Esc
退出输入状态,然后Shift+;
,再输入q
或wq
(q不保存改动,wq是保存文件的写入修改) - vim使用教程
git stash
- 使用
git stash
保存当前的工作现场,那么就可以切换到其他分支进行工作,或者在当前分支上完成其他紧急的工作,比如修订一个bug测试提交。 - 如果一个使用了一个
git stash
,切换到一个分支,且在该分支上的工作未完成也需要保存它的工作现场。再使用git stash
。那么stash 队列中就有了两个工作现场。 - 可以使用
git stash list
。查看stash队列。 - 如果在一个分支上想要恢复某一个工作现场怎么办:先用
git stash list
查看stash队列。确定要恢复哪个工作现场到当前分支。然后用git stash pop stash@{num
}。num
就是你要恢复的工作现场的编号。 - 如果想要清空
stash
队列则使用git stash clear
。 - 同时注意使用
git stash pop
命令是恢复stash
队列中的stash@{0}
即最上层的那个工 -
git stash apply [--index] [<stash>]
不删除已恢复的进度,其他同git stash pop
从工作区添加到暂存区
git add .
和git reset HEAD <file_name>
配合使用
git reset HEAD <file_name>
可以将某文件从已经git add
的列表中剔除出去
git cherry-pick commit_SHA
简而言之,cherry-pick
就是从不同的分支中捡出一个单独的commit
,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug
。如果你在一个分支中解决了它,你可以使用cherry-pick
命令把它commit
到其它分支上去,而不会弄乱其他的文件或commit
。
branch切换有关的命令
git branch -D #删除一个分支
git branch -r # List remote branches
git branch -a # List local branches and remote branches
git branch -va #查看所有的远程分支
git checkout -b <name> <remote_name> #创建并转到远程分支并改名字为name
git push origin <name> #可以把本地创建的分支push到远端
Remove file from both repo and wroking directory : git rm <file>
tag相关的命令
git tag <name> #创建版本
git tag -r #查看远程版本
git tag -a <name> -m 'comment' #新建一个name tag,并添加comment
git push origin <tag_name> #把标签传送到远程服务器
merge流程
要想从一个branch merge回main_line
可以通过merge commit ID
、tag
或者branch
三者中的一个来进行。
- 为了确保安全,要基于最新的main_line新建一个temporary branch当做跳板。
- 在temporary branch上进行merge并resolve conflict,完成后一定要push到远程。
- 然后在main-line上merge
romote temporary branch
注意:在main-line上merge romote temporary branch
的时候,不能有别人的提交,不然会失败,这是使用tempary branch的意义之一:可以减少这个过程的时间。
resolve the conflict
vim <file> #edit the conflict file
git add <file>
git commit -s
网友评论