2012-04-11 38 views
0

我對git非常陌生,所以如果明顯(或不可能),請原諒我!將變更合併爲git repo,就好像它們發生在過去一樣

我正在將它用於CMS網站。我經常遇到這種情況,即對已更新的第三方組件進行了修改。

如何添加更新組件中的更改,就好像它們在更改之前發生了一樣?或者這是「重寫歷史」?

是否從引入組件的舊提交創建分支,添加更新的代碼,然後合併到主?子模塊?還是我吠叫了錯誤的樹,這種情況更好地以另一種方式處理?

回答

4

(原來這個回答假設的第三方組件從公共的git回購來了,@雅各布 - 多爾曼已澄清說,他從一個大項目的快照複製組件的代碼獲得更新)

您需要保持與分支庫:

  • master:每次你得到的組件的新快照時間,提交到這個分支
  • tweaks:一個分支基於關閉master分支,它包含了構成您的自定義調整

每次更新與組件的新快照「主」分支的提交,重訂在master頂部的tweaks分支分支:

$ git rebase master tweaks 

這將使您的調整作爲有效是所發生的最後一件事。

所以,從一開始起,這是它會是什麼樣子在命令行上...

抓住它的第一個快照&店的「主」分支

mkdir my-fork-of-shinything 
cd my-fork-of-shinything 
git init 
cp -R /tmp/shinything-snapshot-1 . # copy the snapshot of code into your repo 
git add -A // stages ALL directory contents for commit 
git commit -m "V1 snapshot of the shinything component" 

這就建立了你的'主'分支。

添加您的調整上一個新的「微調」分支

git checkout -b tweaks // creates your new branch 
... make your tweaks, commit them 

後來,當一些有趣的更新已經到原始組件製造...

搶新組件的快照,更新「主人」 &「微調」分支

git checkout master 
rm -Rf * // delete the contents of the old snapshot 
cp -R /tmp/shinything-snapshot-2 . // get the brand new snapshot in place 
git add -A 
git commit -m "V2 snapshot of shinything, brings fix for #234" 

你的主分支現在有分量的更新史,提交每個快照更新。最後底墊到主分支「微調」分支 - 每個你的「微調」分支的提交將被重播,一前一後,在主分支的新尖的頂部:

git rebase master tweaks // re-bases the commits from your tweaks branch 

更多的調整?

如果你需要添加更多的調整,只是檢查分支出來,並將它們添加:

git checkout tweaks 
... make your tweaks, commit them 
+0

將這項工作如果我已經對主人做了些調整 即。回到光源被添加到存儲庫並創建分支來保存更新的時候? – 2012-04-24 10:30:24

+0

我仍然不清楚如何做到相反。 shinything是一個在版本控制下不可用的組件。它是一個更大的項目的一部分,我會定期下載一個新版本,並且在我調整之前需要添加新版本的更改。 – 2012-05-13 13:23:13

0

一個簡單的命令你,git pull --rebase

BR, 添

+0

你能解釋一下嗎? – 2012-05-13 13:24:43

相關問題