git重基期间:同一个文件保持冲突

git重基期间:同一个文件保持冲突,git,git-rebase,Git,Git Rebase,我查看了一个名为“主题”的分支。我仍在研究这个主题,但我想包括现在主分支中的更改。所以我这样做了: $ git checkout topic $ git rebase master 之后,文件xyz.txt存在合并冲突。所以我修改了这个文件,使之成为我想要的,git添加了它,并做了git-rebase——continue 但很快,同一个文件就发生了合并冲突。我再次修复了该文件,这次必须执行git reabase--skip才能继续 但同样的文件有完全相同的合并冲突。这是怎么发生的? 编辑: 在

我查看了一个名为“主题”的分支。我仍在研究这个主题,但我想包括现在主分支中的更改。所以我这样做了:

$ git checkout topic
$ git rebase master
之后,文件
xyz.txt
存在合并冲突。所以我修改了这个文件,使之成为我想要的,git添加了它,并做了
git-rebase——continue

但很快,同一个文件就发生了合并冲突。我再次修复了该文件,这次必须执行
git reabase--skip
才能继续

但同样的文件有完全相同的合并冲突。这是怎么发生的?

编辑:

在此之前,我一直在将master合并到topic分支以实现此目的。然后我才知道瑞贝斯。所以我猜这与此有关


下面是git在第三次提交之前的状态

$ git status
# Not currently on any branch.
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      xyz.java
#
no changes added to commit (use "git add" and/or "git commit -a")

$ git ls-files -u
100644 cbf74a88604dd4ee0afe89d7aac1d179ce75e92c 1       xyz.java
100644 52841c2b4b6cc055251d533d5b83441d1329b412 2       xyz.java
100644 c45e7c6b979ec1e20b7dd70b38698193ea235abd 3       xyz.java

$ git log --graph --pretty=format:%d HEAD master topic
*  (HEAD)
*
*  (master)
*
*
*
*
*
*
*
*
| *  (topic)
| *
| |\
| |/
|/|
* |
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
* |
* |
|\ \
| * |
* | |
|/ /
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
|/
*
*
$git状态
#目前不在任何分支上。
#未合并路径:
#(使用“git重置磁头…”取消分级)
#(酌情使用“git add/rm…”标记分辨率)
#
#两者都已修改:xyz.java
#
未向提交添加任何更改(使用“git add”和/或“git commit-a”)
$git ls文件-u
100644 cbf74a88604dd4ee0afe89d7aac1d179ce75e92c 1 xyz.java
100644 52841c2b4b6cc055251d533d5b83441d1329b412 xyz.java
100644 c45e7c6b979ec1e20b7dd70b38698193ea235abd 3 xyz.java
$git log--graph--pretty=格式:%d主控主题
*(标题)
*
*(硕士)
*
*
*
*
*
*
*
*
|*(主题)
| *
| |\
| |/
|/|
* |
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
* |
* |
|\ \
| * |
* | |
|/ /
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
|/
*
*

我不知道这是如何导致问题的,但我非常确定问题是由我以前合并而不是重定基址的事实引起的。但是我还没有推出
主题,所以我将只介绍整个重新基础过程。

尝试
git-rebase--interactive
来验证git将如何重新基础历史。将有一个提交列表,该列表将按给定顺序应用于基本提交的顶部,即
master

例如:

pick 12345678 # This will be the first commit of your rebased topic branch
pick deadbeef
pick ffffffff
pick 01010101 # This will be HEAD after the successful rebase
有时候,Git不知道提交在分支中是真正的新提交,还是仅仅是具有不同祖先的现有提交(来自
master
)。可以通过从文本文件中删除提交来跳过提交


如果这不能立即解决您的冲突,那么这两个分支之间就存在真正的冲突。确保合并文件并使用git add将其暂存。之后,请确保使用
git-rebase——继续
继续。不要使用git rebase——如果您不知道它在这里是否有用,请跳过它。(
--skip
将忽略当前的冲突提交,并尝试应用下一次提交,这可能会在以后导致进一步难以理解的冲突)。

请不要回答您自己的问题,如果它不是真正的答案。相反,编辑你的问题以提供更多信息。我明白你的观点。我之所以发布这篇文章,是因为我确信之前合并的分支是这个问题的原因。所以我觉得这个答案在回答这个问题时是准确的,但是缺乏足够的精确性,因为我不知道为什么这是答案。至少,我的想法是这样的。我只是想检查一下,既然你没有明确地声明,当你得到冲突并编辑你的文件时,你会做一个
git添加;git提交
在执行git rebase之前--继续
?是。我要加上它。我更新了问题