git reset、git checkout 和 git revert

一、git reset 和 git checkout

git reset [commit]

重置为[commit]所对应节点的提交(通过移动分支指针和HEAD指针实现),如果不指定[commit]则默认为HEAD
--soft 工作区和暂存区不变,重置仓库
--mixed 工作区不变,重置暂存区和仓库,此为默认选项
--hard 工作区、暂存区和仓库全部重置,修改完全丢失

git reset [commit] [file]

重置某个commit的指定文件到暂存区(指定了[file],不会移动分支指针和HEAD指针)
备注:如果不指定[commit]则默认为HEAD,如果参数都不指定则重置暂存区所有文件

git checkout [file]

重置暂存区的指定文件到工作区(file为 . 则表示所有文件)

git checkout [commit] [file]

重置某个commit的指定文件到暂存区和工作区

[commit]:可以为SHA-1值、HEAD,而HEAD~表示HEAD的父节点,HEAD~2表示HEAD的父节点的父节点,以此类推

二、git revert

git revert [commit]

用[commit]所对应节点的提交,创建一个新的反转的提交

三、git fetch 和 git pull

git fetch 仅更新origin\master分支,需要手动merge
git pull 更新origin\master分支和当前分支,相当于fetch+merge

四、其他常用命令

git pull --rebase

以变基形式merge远程代码,关于git rebase可参考:https://segmentfault.com/q/1010000000430041

git merge --no-ff develop

以非fast-farward形式merge代码

git log --graph --oneline --decorate --all

绘制ASCII图像并显示提交历史

git checkout -b [本地分支名] [远程名]/[分支名]

基于某个远程分支创建新分支

 

 

posted @ 2018-04-07 13:05  空の彼方  阅读(808)  评论(0编辑  收藏  举报