亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git嫁接和替換有何不同?(現在不贊成使用嫁接嗎?)

git嫁接和替換有何不同?(現在不贊成使用嫁接嗎?)

Git
皈依舞 2019-09-24 16:11:55
關于git graftsvs的問答很少replace。搜索[git] + grafts + replace僅找到兩個與5.關聯的東西。git- info-grafts-for和git-what-is-a-graftcommit或a-graft-id。git.wiki.kernel.org上還有一條注釋:GraftPoint現在,嫁接物是否已被replace和完全取代filter-branch,或者某些特殊情況(和向后兼容性)是否仍需要它們?通常,它們之間有何不同(例如,在回購協議之間傳輸的是哪些),并且它們在總體上如何相同?我已經看到,Linus在關于提交代數的討論中似乎似乎并不關心嫁接,(最大父母返回任何根品種)“嫁接已經不可靠了”。編輯:找到更多信息。搜索www.kernel.org/pub/software/scm/git/docs graft僅找到3個結果:GIT-濾波器分支(1),v1.5.4.7 / GIT-濾波器分支(1),v1.5.0.7 / GIT-svn的(1)。更廣泛的搜索發現RelNotes / 1.6.5.txt包含:refs / replace / hierarchy被設計為可替代“ grafts”機制,并具有可以跨存儲庫傳輸的附加優點。不幸的是,gitrepository-layout(5)尚未更新到refs / replace / repository布局信息(和注釋),也沒有任何有關信息/移植的棄用注釋。這更接近于支持我的想法,但是我歡迎您進行任何確認或澄清。
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

如果您需要使用重寫父提交git replace,這就是方法。


正如菲利普·奧克利(Philip Oakley)所述,git replace只是將一個提交替換為另一個提交。要將父級嫁接到現有提交上,您需要先使用正確的父級創建一個偽提交。


假設您有兩個要移植的git分支:


(a)-(b)-(c) (d)-(e)-(f)

現在我們希望(d)是(c)的父代。因此,我們用正確的父項(讓我們將其稱為c1)創建替換(c),然后git replace用(c1)替換(c)。在這些步驟中,每個字母均表示代表該提交的SHA1哈希。


要創建新的提交:


git checkout d

git rm -rf * # remove all files from working direcotry

git checkout c -- . # commit everything from c over top of it

GIT_AUTHOR_DATE="..." GIT_COMMITTER_DATE="..." git commit -m "..." # create replacement commit with date author

現在,您有了具有正確的父項(d)的提交(c1)。因此,我們要做的就是用(c1)替換現有的(c):


git replace c c1

現在您的歷史記錄如下:


(a)-(b)-(c1)-(d)-(e)-(f)

答對了!


查看完整回答
反對 回復 2019-09-24
  • 3 回答
  • 0 關注
  • 774 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號