我對git非常陌生,所以如果明顯(或不可能),請原諒我!將變更合併爲git repo,就好像它們發生在過去一樣
我正在將它用於CMS網站。我經常遇到這種情況,即對已更新的第三方組件進行了修改。
如何添加更新組件中的更改,就好像它們在更改之前發生了一樣?或者這是「重寫歷史」?
是否從引入組件的舊提交創建分支,添加更新的代碼,然後合併到主?子模塊?還是我吠叫了錯誤的樹,這種情況更好地以另一種方式處理?
我對git非常陌生,所以如果明顯(或不可能),請原諒我!將變更合併爲git repo,就好像它們發生在過去一樣
我正在將它用於CMS網站。我經常遇到這種情況,即對已更新的第三方組件進行了修改。
如何添加更新組件中的更改,就好像它們在更改之前發生了一樣?或者這是「重寫歷史」?
是否從引入組件的舊提交創建分支,添加更新的代碼,然後合併到主?子模塊?還是我吠叫了錯誤的樹,這種情況更好地以另一種方式處理?
(原來這個回答假設的第三方組件從公共的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
一個簡單的命令你,git pull --rebase
BR, 添
你能解釋一下嗎? – 2012-05-13 13:24:43
將這項工作如果我已經對主人做了些調整 即。回到光源被添加到存儲庫並創建分支來保存更新的時候? – 2012-04-24 10:30:24
我仍然不清楚如何做到相反。 shinything是一個在版本控制下不可用的組件。它是一個更大的項目的一部分,我會定期下載一個新版本,並且在我調整之前需要添加新版本的更改。 – 2012-05-13 13:23:13