假設我有很久以前的修訂版A,並做了一個理想的改變。有了Git,是否有可能重新應用祖先修訂?
然後,後來,我有這讓很多的變化,以大量的文件,其中包括消滅變化A.
現在B版本,很久以後,我要重新申請修訂A.是否有一個好辦法做到這一點?合併和櫻桃挑選命令似乎跳過作爲祖先的修訂,並且我沒有看到任何標誌忽略祖先。
總有差異/適用,但那些真的是最好的方式?看起來這可能是「有損」(通過中間補丁格式),可能不允許git正常使用所有工具......但這是我不知情的預感。
假設我有很久以前的修訂版A,並做了一個理想的改變。有了Git,是否有可能重新應用祖先修訂?
然後,後來,我有這讓很多的變化,以大量的文件,其中包括消滅變化A.
現在B版本,很久以後,我要重新申請修訂A.是否有一個好辦法做到這一點?合併和櫻桃挑選命令似乎跳過作爲祖先的修訂,並且我沒有看到任何標誌忽略祖先。
總有差異/適用,但那些真的是最好的方式?看起來這可能是「有損」(通過中間補丁格式),可能不允許git正常使用所有工具......但這是我不知情的預感。
您可以使用git checkout $ REVISION切換回您的修訂(提交)。那麼你應該從那裏創建一個新的分支。
git.cmd branch YOURCOMMIT
您可以使用鎬來獲取您的新分支所需的提交。
git cherry-pick A
會做你想要的。它沒有看祖先 - 它只是看看已經應用了哪些變化。
下面是一個例子:
git cherry-pick A
git cherry-pick A
git cherry-pick A
只會造成一個新的提交(最多)。第二個和第三個命令是空操作,因爲已經應用了A
的更改。但是,
git cherry-pick A
git cherry-pick B
git cherry-pick A
git cherry-pick B
將創建四個新的提交。第一和第三的提交都將做同樣的事情,而第二個和第四個將恢復第一和第三(即使提交B
做出其他改變比恢復A
)。換句話說,這是一樣的
git cherry-pick A
git revert --no-edit HEAD
git revert --no-edit HEAD
git revert --no-edit HEAD
希望這有助於。
'git | git | 名詞英國人,非正式的 不愉快或可鄙的人。「# 這意味着:一切都可能與混帳。 – 2010-07-20 23:14:47