【发布时间】:2017-07-03 08:10:36
【问题描述】:
我恢复了提交(当然是推送到远程)。
然后我看到在 2 次新提交之后有人修改了我的提交还原的代码,而没有中间还原我的还原。
这是怎么做到的?
【问题讨论】:
标签: git git-revert
我恢复了提交(当然是推送到远程)。
然后我看到在 2 次新提交之后有人修改了我的提交还原的代码,而没有中间还原我的还原。
这是怎么做到的?
【问题讨论】:
标签: git git-revert
足够简单。假设您更改了README.txt:
-We don't support fribble mode.
+We do support fribble mode.
你提交了那个,然后意识到它是错误的并恢复它。 (README 现在又说我们不支持 fribble 模式了。)
与此同时,Bob 正在编辑README.txt。他在他的编辑器中得到了错误的版本。它说我们确实支持 fribble 模式。
他更新了他的存储库和工作树,在他的编辑器中保留了错误的版本。
他将错误的版本写入工作树并添加文件。
同时,他还进行了他打算进行的更改(无论是对README.txt 还是对其他一些文件)。他写下这些更改并git adds。
现在他提交了,他更改了README.txt 以包含您还原的部分。他推动,现在 Bob 已经撤消了你的回复。
【讨论】:
git pull 只是意味着(缩写并减去许多繁琐的细节)git fetch && git merge。 git rebase 表示“复制一些提交并移动分支名称”。 git pull --rebase 表示 git fetch && git rebase 而不是 git fetch && git merge。这些单独的操作都不会自行撤消提交,但可以指示git rebase 故意省略 提交。这需要更多关于谁在做什么的更多细节。