一.已经git pull,但是发现出错了,想撤回的时候怎么办?
1.在撤回本地修改:
-
git reflog
查看分支历史变动记录
-
git reset --hard <版本号>
或者git reset --hard HEAD@{n}
还原本地代码
此时的<版本号>是错误版本的前一个版本,也就是图上的b9577868。所以还原命令应该是git reset --hard b9577868
或者git reset --hard HEAD@{7}
2.撤回远程提交:
如果此时使用命令:git push origin <分支名>
会提示本地的版本落后于远端的版本;
所以我們要使用git push origin <分支名> --force
覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force
综上,撤回提交远程分支(pull)的提交命令为:
git reflog
git reset --hard <版本号>
或者git reset --hard HEAD@{n}
git push origin <分支名> --force
另外补充一个刚发现的致命打击 。git push origin <分支名> --force
只能在你的提交处于最新提交的时候才能使用,因为版本回退也会覆盖掉别人的提交
二 . 合并其他分支的commit
git cherry-pick commit-id
其中commit-id可以用git log
查看,也可以直接在仓库里找到要合并的commit,如图
三. git忽略修改的文件
忽略此文件的修改:
git update-index --assume-unchanged <files>
取消忽略此文件的修改 :
git update-index --no-assume-unchanged <files>
四. git查看修改的文件
git diff 文件名
四. 暂存(stash)的用法
git stash
: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop
: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list
: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear
: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
网友评论