git revert總結


git revert

git revert 是一種創建一次的commit 來回退某次或某幾次commit的一種方式

命令

// 創建一個新的commit,這個commit會刪除(下面)commit-id的內容,但會在log中保留這個commit-id
git revert commit-id

// 批量回退 這個是前開后閉, 只revert了...和commit-id-end, commit-id-start沒有撤銷
git revert commit-id-start...commit-id-end

// 加上^ 就是前閉后閉,都撤銷了
git revert commit-id-start^...commit-id-end

ps: 沒有git revert 文件的操作,IDEA的撤銷文件修改的操作(revert)用的不是git revert

例子:

原始log

31f6a64 (HEAD -> master) 提交 3
98d937c 提交 2
af02354 提交 1

目錄下的內容為:

➜  revert_test git:(master) ls
 1.txt
 2.txt
 3.txt

現在想刪除 98d937c 的提交

執行

git revert 98d937c

再看目錄下的內容為:

➜  revert_test git:(master) ls
 1.txt
 3.txt

說明確實去掉了98d937c 的提交內容(即2.txt 不在了

再看日志:

d1ea1e9 (HEAD -> master) Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

發現,其實是通過一次新的提交來刪除98d937c 的提交內容的(這里可以看出之前的commit-id依然在)

再看批量回退

日志記錄

a74b9bb (HEAD -> master) 提交 6
e3bbc59 提交 5
223171c 提交 4
d1ea1e9 Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

現在回退 提交4 和提交5

執行

git revert 223171c^...e3bbc59

看日志

af51f68 (HEAD -> master) Revert "提交 4"
1a5d0c0 Revert "提交 5"
a74b9bb 提交 6
e3bbc59 提交 5
223171c 提交 4
d1ea1e9 Revert "提交 2"
31f6a64 提交 3
98d937c 提交 2
af02354 提交 1

產生了兩次revert提交commit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM