git rebase是否删除了最近的更改?

靛青

我有一个master分支和两个工作分支,a并且b分支b是从与同一点创建的,a但是涉及不同的文件(仅一个共享d.py)。b刚被拉进去master

                (a)   F---H-J----L---
                     /
(master)A--B--C--D--E--------------M
                     \            /
                 (b)  G----I----K

在我的分支请求请求中,aGithub现在说

该分支存在必须解决的冲突

使用Web编辑器或commandline解决冲突。

冲突的文件

clippy / d.py

我以为我可以做显而易见的事情,git pull --rebase master并得到一个看起来像这样的历史:

                             F---H-J----L--
                            /            
A--B--C--D--E--------------M
             \            /
              G----I----K

然后合并成主人,一切都会很棒

                             F---H-J----L
                            /            \
A--B--C--D--E--------------M--------------N
             \            /
              G----I----K

当我尝试合并时,这就是我得到的

You are currently rebasing branch 'bug/1500/Things' on '1234567'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   apps/a.py
    modified:   apps/b.py
    modified:   apps/c.py

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

    both modified:   apps/d.py

我认为一切都会很好。但后来我看了看a.py,并实现了从所有提交我的变化FHGL已经消失。同样适用于b.pyc.py等等。据我所知,卡在rebase中的唯一更改是d.py两个分支之间共享的文件。我放弃了变基并再次尝试,git rebase master但发生了同样的事情。

git为什么要这样做?以及如何成功地将提交合并为基础?

里奥·科雷亚

如果master和您的a分支之间存在冲突,则重新定位将在存在冲突的位置停止,并希望您对其进行修复。

首先,可以进入分支的原始状态git rebase --abort这将撤消尝试的变基。

如果您仍处于重新部署的中间,则可以git diff查看冲突的位置。您会在冲突文件中看到类似的内容

<<<<<<< HEAD
...
=======
....
>>>>>>> branch-a

您可以通过选择要保留的代码并删除<<<< ===== >>>>>>>来编辑文件以解决冲突

完成文件和冲突的编辑后,可以运行git add .,然后运行git rebase --continue重新定位将继续将您的提交上移HEAD在任何时候,您可能会或可能不会遇到更多冲突。如果不这样做,您将看到重新建立基础工作成功,然后就可以将更改推送到分支机构。但是,由于已经重新设置了基准,所以您将只能执行强制推送,因为您的提交引用将与远程的提交引用有所不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章