我有一个名为myapp
的git repo,它具有一个develop
分支和多个(正在进行中的)功能分支,其中包括我正在使用的一个分支feature/one
。
我的feature/one
分支是大约一个星期前从刚拉过的develop
上剪下来的,但是develop
从那以后已经更新了好几次。我只是在git merge develop
分支上运行了feature/one
,发现有些自动合并失败了:
Automatic merge failed; fix conflicts and then commit the result.
所以我运行了git status
并看到:
$ git status
On branch feature/one
Your branch is ahead of 'origin/feature/one' by 5 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
<whole bunch of stuff here I'm omitting for brevity!>
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by us: src/main/java/com/myapp/Fizz.java
deleted by us: src/main/java/com/myapp/Buzz.java
both modified: src/test/java/com/myapp/Foobar.java
我对此并不陌生,但我解释是指:
feature/one
分支中,我删除了Fizz.java
和Buzz.java
,但是由于合并时它们仍然存在于develop
分支中,因此git添加了他们回来给我。而且,由于我确实希望删除它们,因此需要在feature/one
上将它们重新删除;和develop
所做的更改和我的feature/one
都修改了相同的Foobar.java
文件,因此我需要手动检查更改并自己解决合并冲突。我能正确解释此输出吗?如果不正确,git实际告诉我什么?我选择使用git status
来查看自动合并失败是正确的还是有更好的方法来查看失败的原因以及可能需要进一步注意的问题?预先感谢!
答案 0 :(得分:0)
在我的本地功能/一个分支中,我删除了Fizz.java和Buzz.java,但是由于在合并它们时它们仍然存在于develop分支中,因此git为我重新添加了它们。
不,它们不仅是存在,实际上是在另一个分支上发生了更改。如果这些文件没有被更改,那么您的删除就不会有冲突(这些文件将在合并结果中被删除,而不会打扰您。)
您可以再次删除它们,但是您需要注意,这样做是在删除其他人的更改。
最近要开发的更改和我的功能/一个都修改了相同的Foobar.java文件,因此我需要手动检查更改并自己解决合并冲突。
正确。 Git已使用合并信息更新Foobar.java
并提供了冲突标记。例如:
This is a file
that will be
involved in a merge.
<<<<<<< HEAD
This is a change in
"my" branch.
=======
Here's a conflicting
change in the "master"
branch.
>>>>>>> master
You'll need to choose
the best changes and
resolve the conflict.
分支中的信息位于<<<<<<< HEAD
和=======
行之间。 other 分支中的信息在=======
和>>>>>>> master
行之间。选择如何包括这两个更改,保存文件并继续。