【问题标题】:Revert seems to disappear without an intermediate revert没有中间还原,还原似乎消失了
【发布时间】:2017-07-03 08:10:36
【问题描述】:

我恢复了提交(当然是推送到远程)。
然后我看到在 2 次新提交之后有人修改了我的提交还原的代码,而没有中间还原我的还原。
这是怎么做到的?

【问题讨论】:

    标签: git git-revert


    【解决方案1】:

    足够简单。假设您更改了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 已经撤消了你的回复。

    【讨论】:

    • 这样就不会有冲突了?
    • 如果你像 Bob 那样愚蠢的话就不会。有些编辑器很聪明,会注意到下面的文件发生了变化,并警告你,但如果你告诉他们,他们无论如何都会覆盖。找出取消了你的回复,并与他交谈(通常是“他”......)。此外,它不一定是编辑会议,尽管我见过大多数人这样做。不过,无论如何,是 Bob(或任何做出提交的人)做到了。
    • 那么在这种情况下,做一个 pull rebase 是无关紧要的?
    • 你没有提到任何拉动或变基。但是对于它的价值:git pull 只是意味着(缩写并减去许多繁琐的细节)git fetch && git mergegit rebase 表示“复制一些提交并移动分支名称”。 git pull --rebase 表示 git fetch && git rebase 而不是 git fetch && git merge。这些单独的操作都不会自行撤消提交,但可以指示git rebase 故意省略 提交。这需要更多关于谁在做什么的更多细节。
    • 另一个人会领先于远程,即当 git 添加我恢复的更改时。然后他不先拉就不能推。 git不会让这对吗?所以需要拉动。所以拉不会显示任何冲突?我实际上删除了一个带有还原的文件。即使在那种情况下,他修改了旧的本地文件并提交不会与删除文件的恢复冲突?
    猜你喜欢
    • 2016-07-28
    • 2021-07-29
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多