2017-05-07 3 views
0

我是新來的混帳,我試圖壓扁我的承諾。錯誤:無法應用--->通過看指令,但嘗試以正確的方式,但仍爲git壁球的錯誤

在我的分支中,它顯示了我的32個提交(約翰史密斯),在另外兩個開發人員的三次提交中(羅爾夫王子和哈利)。

對於開發者修改的一個提交。

現在,如果我嘗試壁球所有我得到一個錯誤的提交:

錯誤:無法適用ccdfa76 ...添加readme.md

我GOOGLE了錯誤,但無法找到它。
我試着擠十,然後十,但也扔錯誤。
你們可以告訴我如何游泳它提供下面的錯誤?

$ git的變基-i AAAA

pick 04dc4d0 play: wip sports 
pick f255d38 play: sports 
+0

我看你有沒有合併的提交。當你嘗試重新綁定時,你是否嘗試過包括'-p'('--preserve-merges')開關? –

+0

@ J.Titus嘿我很困惑......如果你告訴我我需要執行的一組命令,那將是非常好的: –

+0

嘗試去做同樣的事情,但是也包括'-p'你在提交列表中有一些合併提交,因此''git rebase -pi 1a3cc3'。我不是100%確定這會工作,因爲我自己沒有嘗試過.. –

回答

2

您試圖rebasesquash沒有失敗。你看到的不是一個錯誤。

您的重新佈局操作已被暫停

仔細閱讀該消息:

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".
Could not apply ccdfa7670a8eb780954edd1383e3378ef43292ac... Add readme.md

看的命令提示。 rebase/continuerebase/skiprebase /abort。這基本上告訴你,rebase仍在進行中。它已暫停。你可以忽略這個問題並跳過,你可以做一些事情並繼續,或者你可以徹底放棄(並回滾)rebase。

好的。所以我們知道情況如何。現在,我們來檢查一下爲什麼。
如果您閱讀郵件,您知道它是「不能應用ccdfa(..)」。

你無法檢查狀態,索引等,看看發生了什麼,但你沒有顯示它們。所以,現在讓我們使用你已經給我們的東西。

如果真的仔細閱讀的東西,我們可以看到本說明git的日誌:

commit c0ad7755f58f1bef92d71b72b8e1397b9e07fdea
Merge: ccdfa76 b1ba9e4
Author: Prince Rolf
Date: Tue March 2 19:07:32 2017 -0500

Merge branch 'sports-module' of gitlab.cell.com:grp-imco-products/im-lap-sports into sports-module

# Conflicts:
# README.md

看高呼「衝突」。這不是你經常在提交信息中看到的東西。這是承諾c0ad77(..)(不是我們有問題的),但正如你可以看到它的頭文件,這是提交ccdfa76(我們有問題的)和b1ba9e4(迄今未知)的合併。

現在看看提交樹,讓我們來看看這些提交ID。

* 04dc4d0 play: wip sports
* c0ad775 Merge branch 'sports-module' of gitlab.paper.com:chain/catch-sports into sports-module
|\
| * b1ba9e4 play: sports
| * a2464b1 adding sports files
| * 1a3cc30 play: wip sports
* ccdfa76 (origin/master) Add readme.md

嘿,他們都碰巧處於歷史的起點(底部)。大。這將簡化看他們。

b1ba9e4位於a2464b1之上,而位於1a3cc30之上 - 這就是您在rebase命令中寫入的rebase根。

c0ad775確實是一個包含rebase-root的部分和ccdfa76(有問題的部分)之間的合併,其餘部分是「一邊」。

現在,讓我們來看看衍合命令開始:

git rebase -i 1a3cc30 
pick ccdfa76 Add readme.md 
squash a2464b1 adding sports files 
squash b1ba9e4 play: sports 
squash 04dc4d0 play: wip sports 
squash f255d38 play: sports 

命令詳解現在並不重要。最重要的是的提交您請求的有效序列:

0: 1a3cc30  \ (rebase root) 
1: ccdfa76 ---:----- (problematic one) 
2: a2464b1  | 
3: b1ba9e4 /
-:(c0ad775)  (merge, not mentioned in rebase plan, so not requested) 
4: 04dc4d0 ... 
5: f255d38 ... 

在提交樹看,你嘗試注入ccdfa76(樹的左側)到樹的右邊的中間。請記住,c0ad775 merge將這兩個樹部分粘在一起,它在'自述'文件處有一個衝突。請記住,ccdfa76消息顯示爲adding readme file

所以,現在,很顯然,底墊已經嘗試應用ccdfa761a3cc30相同衝突在「自述」文件時停止。

顯然,ccdfa76試圖添加readme文件,但1a3cc30已經有一個自述文件。因此衝突。

這是我的猜測。現在讓我們來看看控制檯。

現在重新開始,清理一切。
使用與之前相同的計劃(pick/s/s/s/s/s .../s)來執行您的rebase命令。
等到cannot apply ccdfa(..)出現。
記住rebase沒有錯誤 - 它已暫停,因此您可以修復它並繼續。
現在運行git status,看看它說什麼。

應該這樣說:

git status 
# On branch FOOBAR 
# You have unmerged paths. 
# (fix conflicts and run "git commit") 
# 
# Unmerged paths: 
# (use "git add ..." to mark resolution) 
# 
# both added:  readme.md 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

好了,所以沒什麼在這個自述文件衝突。現在你可以修復它。打開該文件,找到像

bum 
<<<<< 
bleh 
===== 
blah 
>>>>> 
whooo 

這是合併衝突標記。我不會解釋他們是如何工作的。在線閱讀它,或者使用各種合併工具(比如KDiff3或WinMerge或其他)。

最重要的一點是:編輯文件,並確保它看起來像你想看看。當你結束編輯時,裏面應該沒有標記。

當您結束在解決衝突,運行此告訴git的,在這個文件中的衝突都是固定的:

git add readme.md 

是。這只是普通的舊add。在此之後,使用已在「錯誤消息」建議的命令:

git rebase --continue 

和底墊將您固定的文件,並..continue。最有可能的是,它會運行到最後。

或者會在同一個或另一個文件中遇到另一個衝突,您需要用類似的方法修復,然後繼續,等等。

要小心 - 每當rebase暫停時,可能會有許多文件發生衝突。 Git Status會將它們全部顯示出來。此外,修復衝突時,請記住單個文件中可能存在許多衝突(文件各個部分中有許多標記)。

綜上,命令行活動是這樣的:

> git rebase -i 1a3cc30 
(...) 
error: cannot apply (..) 

> git status 
(....) 
#aha! I see a conflict at "readme.md" 
(...) 

> vim readme.md   #edit, fix, save 
> git add readme.md  # tell Git that file is OK now 
> git rebase --continue # tell git to get back to work 

# now either it's ok, or another conflict - rinse and repeat until finished 
+0

你好,我現在跟着你的步驟,當我做git狀態它顯示** $ git狀態 在分支游泳踢 你的分支和'起源/游泳踢'已分歧, 並有1和32不同的提交每個,分別。 (使用「混帳拉」合併遠程分支到你的) 沒有提交,工作目錄乾淨** –

+0

然後混帳記錄它顯示了兩個提交** $ git的日誌 提交3bcde19ce171705c3590e2bdcdf3e3f8d5e7496a 作者:哈里 日期:星期二5月2日9時26分41秒2017年-0500 發揮:體育 提交1a3cc30564690fbf72f80056bd6d7cfa166497e3 作者:約翰·史密斯<[email protected]> 日期:三月星期二2 09:04 :11 2017 -0500 play:wip sports ** –

+0

我做了git rebase之後應該這樣只有一個提交權?如果它應該一個提交,我會執行此評論** git push origin [swim-kick] -f **現在應該如何繼續? –

相關問題