我有3個提交(我目前只在我的本地機器上使用GIT)。刪除本地提交?
如果我刪除提交2,是否會影響提交3中的任何更改,因爲提交3是從提交2開始的後續操作?
我打算用:
git reset --hard <commit 2 id here>
我有3個提交(我目前只在我的本地機器上使用GIT)。刪除本地提交?
如果我刪除提交2,是否會影響提交3中的任何更改,因爲提交3是從提交2開始的後續操作?
我打算用:
git reset --hard <commit 2 id here>
命令
git reset --hard <commit 2 id here>
不會刪除提交2.這將只是把你當前分支上提交2.如果沒有其他分支指向提交3你可能垃圾回收過程中失去它。
你需要的是互動變基:
git rebase -i HEAD~2
然後你會得到編輯開始犯2和3提交上市。使用提交2刪除該行,保存並退出編輯器。這將刪除提交2,並保留提交3。提交3的父代將是提交1.所有與提交2一起引入的更改將完成。
提及git rebase -i +1 – Tim
提交#3將與新的母公司更新提交你的情況提交#1,它會得到一個新的SHA1。如果您提交#2和#3的更改是獨立的,則不應有任何問題/衝突。
你的建議只會刪除你的第三次提交,並保留提交一和二。這是您可以使用git rebase
的其中一種情況。
的語法是這樣的:
git rebase --onto <branch name>~<first commit number to remove> \
<branch name>~<first commit to be kept> <branch name>
我建議你嘗試一下你的reop的副本第一。
取決於您如何「刪除」提交2.您計劃執行的命令是什麼? – Shahbaz
更新的問題與計劃命令。但是,如果存在這樣的命令,我寧願採用更安全的方式? – oshirowanen
如果你'git reset --hard',那麼你不會刪除一個提交,你只需要回到一個較舊的提交(基本上失去了所有的東西)。你可以嘗試'git revert'來取消一個提交,或者'git rebase',它將這個提交重新應用到前一個提交,從而有效地消除了之間的提交。我個人會選擇'git revert'。 – Shahbaz