簡體   English   中英

git am從分支到主

[英]git am from branch to master

我正在與我的git大學合作。 我在分支機構工作,而他在主管工作。 我已經完成了與他的分支上的文件有關的一些工作,因此決定將補丁文件發送給他。 我使用git format-patch創建了補丁,並將其發送給他。 當他嘗試使用git am應用補丁git am ,會收到以下消息: previous release directory

可能是因為補丁來自其他分支。

他有辦法在master分支上使用補丁嗎?

注意:我使用的是git am ,而不是git apply來保留為碼頭生成的commit-id。 我仍然希望提交者在我的本地存儲庫中成為我。

在處理無法正確應用的補丁時,請考慮使用以下兩種解決方案之一:
(來自bugdromer的文章):


處理它的最簡單方法是:

  • git am --abort
  • 通過patch -p1 < PATCH手動應用補丁
  • 手工解決沖突,
  • 最后使用git commit -a

但是在這種情況下,您將不得不重寫提交消息,這不是很好。 還有一種更聰明的方法。


您可以在.git/rebase-apply找到相應的修補程序文件,並將其命名為“ 0001 ”(存儲修補程序的目錄名稱最近已更改,已使用1.7.4.1進行了測試)。
這一點:

  • 您可以使用git apply來應用補丁,這與patch命令的git等價
  • 並以通常的方式修復沖突的文件(您檢查.rej文件,將它們與沖突的文件進行比較,最后將已修復的文件添加到索引中):

例:

$ git apply PATCH --reject
$ edit edit edit
$ git add FIXED_FILES
$ git am --resolved

完成了!
換句話說,由於git am並沒有更改索引,因此您需要

  • git apply --reject補丁(存儲在.git/rebase-apply ),
  • 手動解決沖突,
  • 添加更改的文件並
  • 最后告訴git您解決了麻煩。

在這種情況下的優點是:

  • 您不需要重新編輯提交消息,
  • 並且如果您要應用一組補丁程序(即您正在使用git am PATCHES ,其中PATCHES是郵箱),則不必git abort並再次run git am

嘗試git am--3way選項:

 -3, --3way When the patch does not apply cleanly, fall back on 3-way merge if the patch records the identity of blobs it is supposed to apply to and we have those blobs available locally. 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM