2015-07-09 65 views
1

我想要apply a patch including its commit message,我該如何捆綁一個提交併應用它?Git包單提交?

給出的例子歷史:

0a8b835 intel_pmc_ipc: Add Intel Apollo Lake PMC IPC driver 
0d44b41 tc1100-wmi: Delete an unnecessary check before the function call "kfree" 
b8830a4 dell-laptop: Fix allocating & freeing SMI buffer page 
2ec1e9e target: Bump core version to v5.0 
  • 說我想捆綁0d44b41001.bundle,並應用它?
  • 假設我想將b8830a4通過0d44b41作爲002.bundle,並將其應用?

注意:我已經可以使用補丁文件做到這一點,但我也想自動包含提交mes。

我試圖按照git-scm doc on bundle使用此命令,作爲失敗:

$ git bundle create 001.bundle 0d44b41^ 0d44b41 
fatal: Refusing to create empty bundle. 
+0

'git format-patch' – jthill

+0

...和'git am'應用補丁。 – larsks

回答

4

我不知道你爲什麼要專門限制自己git bundle,但假設你希望出現這種情況,要注意這個措詞在the documentation

git-rev-list-args

的參數列表,接受git rev-parsegit rev-list(和包含命名ref時,看到指定參考下文),指定的特定對象和引用運輸。 ...

指定參考文獻

git bundle會由git show-ref只顯示包的引用: 這包括頭,標籤和遠程頭。

現在考慮您的命令:

$ git bundle create 001.bundle 0d44b41^ 0d44b41 

create 001.bundle指定要創建的文件。您的命令行的其餘部分0d44b41^ 0d44b41git-rev-list-args。你在這裏使用了什麼參考(分支或標籤名稱)?


注意git format-patch包括提交信息(和作者),並使用git am將應用提交包括原始消息(和作者,儘管你是提交者,除非你做一些額外的設置工作) 。


反問,當然:你沒有使用任何。我不確定爲什麼git bundle對一個非常堅持,因爲您可以輕鬆地將引用附加到原始SHA-1,創建該捆綁包,然後再次刪除引用而不會干擾剛剛創建的捆綁包。這將允許你做你正在嘗試的東西。或者,當然,如果有一個名稱(例如分支或標籤)指向要捆綁的單個提交,則可以直接使用該現有名稱。

+0

非常感謝,我沒有意識到'git am'做了我想要的,因爲[我從'git bundle'中找到](http://stackoverflow.com/q/30503140/1695680)聲稱它是_the_way打包提交。 – ThorSummoner

+0

這是git,至少有十幾種方法可以做所有事情,其中​​六個錯誤,三個更加痛苦。 :-) – torek