我正面临一个我不确定如何解决的问题.
我从我的分支机构对主人做了一次反对:
git rebase master
Run Code Online (Sandbox Code Playgroud)
并得到以下错误
First, rewinding head to replay your work on top of it...
Applying: checkstyled.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging AssetsLoader.java
CONFLICT (content): Merge conflict in AssetsLoader.java
Failed to merge in the changes.
Patch failed at 0001 checkstyled.
Run Code Online (Sandbox Code Playgroud)
所以我去了我最喜欢的编辑器,修复了1行冲突,保存了文件并执行了git状态并获得了以下输出:
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: PassengerContactHandler.java
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: AssetsLoader.java
#
Run Code Online (Sandbox Code Playgroud)
我做了一个git添加AssetsLoader.java和一个git状态并得到以下内容:
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: AssetsLoader.java
# modified: PassengerContactHandler.java
#
Run Code Online (Sandbox Code Playgroud)
当我做git rebase时 - 继续我得到:
git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add
Run Code Online (Sandbox Code Playgroud)
我知道我可以跳过补丁并继续使用rebase,但我不确定PassengerContactHandler.java中的更改是否会重新绑定到我的分支中.
所以我不确定,我该怎么办?
编辑:可能是解决冲突的文件与原始版本完全一样吗?
非常感谢,卢卡斯
编辑,它再次发生在我身上:
它再次发生在我身上,
(307ac0d...)|REBASE)$ git status
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: assets/world/level1/Level-1.xml
# modified: George.java
# modified: DefaultPassenger.java
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# mb-art/originalAssets/27dec/
Run Code Online (Sandbox Code Playgroud)
((307ac0d ...)| REBASE)$ git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add
Run Code Online (Sandbox Code Playgroud)
git --version
git version 1.7.1
Run Code Online (Sandbox Code Playgroud)
jon*_*sfh 100
发生这种情况是因为在修复冲突时,您删除了应用于您正在重新定位的分支的补丁程序中的所有代码.使用git rebase --skip
继续.
更多细节:
通常,在重新定位期间修复冲突时,您将编辑冲突文件,将当前正在应用的修补程序中的部分或全部代码保留到您重新绑定的分支上.修好补丁后再做
git add your/conflicted/file
git status
Run Code Online (Sandbox Code Playgroud)
你会得到一条(通常是绿色的)显示修改过的文件的行
修改:你的/冲突/文件
git rebase - 在这种情况下继续工作正常.
但是,有时候,在解决冲突时,您会删除新补丁中的所有内容,只保留您重新启用的分支中的代码.现在,当您添加文件时,它将与您尝试重新绑定的文件完全相同.git status将不显示显示已修改文件的绿线.现在,如果你这样做
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
git会抱怨
没有变化 - 你忘了使用'git add'吗?
在这种情况下,git真正想要你做的是使用
git rebase --skip
Run Code Online (Sandbox Code Playgroud)
跳过补丁.以前我从来没有这样做,因为我总是不确定如果我这样做会实际跳过什么,对我来说,"跳过这个补丁"真的意味着什么并不明显.但如果你没有得到绿线
修改:你的/冲突/文件
在编辑冲突的文件,添加它并执行git状态之后,你可以非常确定你删除了整个补丁,你可以改用
git rebase --skip
Run Code Online (Sandbox Code Playgroud)
接着说.
原帖说这有时会起作用:
Run Code Online (Sandbox Code Playgroud)git add -A git rebase --continue # works magically?
...但不要依赖于此(并确保不在存储库文件夹中添加剩余文件)
acm*_*cme 21
基本上它应该工作,如果你这样做
git diff
Run Code Online (Sandbox Code Playgroud)
在解决你的冲突然后
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
应该管用.
Sco*_*des 20
I got this warning when I had unstaged files. Make sure you don't have any unstaged files. If you don't want the unstaged files changes, then discard the changes with
git rm <filename>
Run Code Online (Sandbox Code Playgroud)
修复更改后,您可能会忘记运行“git add -A”
git add -A
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
尝试在命令行中运行此命令:
$ git mergetool
Run Code Online (Sandbox Code Playgroud)
应该打开一个交互式编辑器,让您解决冲突。比尝试手动执行更容易,而且 git 会识别您何时进行合并。还将避免当您尝试手动执行合并时可能发生的意外未完全合并的情况。
您错过了 AssetsLoader.java 中的合并冲突。打开它并查找冲突标记(“>>>>”、“====”、“<<<<<”),然后再次执行 git add 。如果您找不到它,请执行“git diff --staged”。
归档时间: |
|
查看次数: |
66056 次 |
最近记录: |