[英]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.