我正在运行一个碰撞冲突的基础:
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: Better `SelectMotifsView.js`
Using index info to reconstruct a base tree...
M browser/AddLinkView.js
M browser/SelectMotifsView.js
M browser/index.html
Falling back to patching base and 3-way merge...
Auto-merging browser/index.html
CONFLICT (content): Merge conflict in browser/index.html
Failed to merge in the changes.
Patch failed at 0001 Better `SelectMotifsView.js`
The copy of the patch that failed is found in:
/Users/dmitry/dev/links/.git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
没什么大不了的 - 我做了一个我知道会引起冲突的小改变:
diff --cc browser/index.html
index ba9c4f3,4c2a1c2..0000000
--- a/browser/index.html
+++ b/browser/index.html
@@@ -40,6 -40,7 +40,10 @@@
<label>
<%= label %>
<select class="form-control" name="motif">
++<<<<<<< HEAD
++=======
+ <% console.log(exclude); %>
++>>>>>>> Better `SelectMotifsView.js`
<% motifs.each(function(motif) { if (!exclude || exclude.indexOf(motif) < 0) { %>
<option value="<%= motif.get('id') %>"><%= motif.get('name') %></option>
<% } }); %>
我想保留HEAD
的版本,这是空的,所以我进入并删除整个版本:
++<<<<<<< HEAD
++=======
+ <% console.log(exclude); %>
++>>>>>>> Better `SelectMotifsView.js`
我保存文件browser/index.html
,然后保存git add browser/index.html
:
$ git add browser/index.html
$ git rebase --continue
但是:
Applying: Better `SelectMotifsView.js`
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
之前从未见过...... git status
显示没有剩余未解决的路径。该怎么办?我读了其他相关问题,这可能是--skip
的一个很好用,但这似乎不是一个空提交。或者我错了吗?
答案 0 :(得分:4)
看起来补丁是空的,所以你可以安全地跳过它,就像git建议的那样:
$ git rebase --skip
答案 1 :(得分:4)
git rebase
被困在&#34; rebase循环中的一个可能原因&#34;是git gc
这已在git 2.7.1 (February 6th, 2016)
commit 8c24f5b见Jeff King (peff
)(2016年1月13日)
(Junio C Hamano -- gitster
--于2016年1月26日commit eefc461合并)
的失败
rebase
:忽略来自&#34;gc --auto
&#34;在变基之后,我们致电&#34;
gc --auto
&#34;如果我们创造了很多松散的物体来清理。但是,我们在&&
- 链内进行此操作。如果&#34;gc --auto
&#34;失败(例如,因为先前的背景gc通过离开&#34;gc.log
&#34;来阻止我们),然后:
- 我们将无法清理状态目录,让用户永远陷入rebase(即使&#34;
git am --abort
&#34;无法正常工作,因为它会调用&#34;gc --auto
&#34;!)。- 在某些情况下,我们可能会从rebase返回一个伪造的退出代码,表示除auto-gc以外的所有内容都成功时失败。
醇>我们可以通过忽略&#34;
gc --auto
&#34;的退出代码来解决此问题。
所以要解决此问题,只需删除gc.log
:
rm .git/gc.log