首頁 >開發工具 >Git >帶你去懂git回滾程式碼(實例詳解)

帶你去懂git回滾程式碼(實例詳解)

WBOY
WBOY轉載
2022-02-15 17:39:296811瀏覽

這篇文章為大家帶來了關於Git回滾程式碼的相關知識,Git是一個開源的分散式版本控制系統,可以有效、高速地處理從很小到非常大的專案版本管理,希望對大家有幫助。

帶你去懂git回滾程式碼(實例詳解)

在日常coding的過程中免不了分支之間的合併,回滾、提交、打tag等操作,如果你現在還不知道怎麼使用git工具回滾程式碼,或總是擔心出錯沒有把握怕把程式碼搞丟,這很危險畢竟程式碼搞丟是很大的事情小則扣績效重則多扣點,但是dont worry,你很幸運能看到這篇文章,當你看完以後就不會在有程式碼遺失的情況,因為我會帶你手把手建分支模擬回滾的常見情況

介紹

Git(讀音為/gɪt/ )是一個開源的分散式版本控制系統,可以有效、高速地處理從很小到非常大的專案版本管理。

前言

在日常的程式碼回滾中常用的有兩種方式git revertgit reset來回滾,這兩種分別對應的不同的情況我盡量簡單明了的介紹這兩個命令都能做些什麼,接下來我會從個人倉庫新拉個分支從0開始,建兩個分支,分別是主分支 master和開發分支develop來進行模擬

reset介紹

1、reset的作用是當你希望提交的commit從歷史記錄中完全消失就可以用

2、例如你在master分支提交了A-->B-->C提交了三個記錄,這個時候如果C記錄有問題你想回滾到B就可以用git reset進行

3、這個指令大概率的情況都是用在我們主分支的,因為我們上線的分支一般是master分支然後從develop進行功能開發

4、開發完成之後將分支合併到 master,如果在上線之前發現合併的分支用問題可以將develop合併過來的分支進行回滾

#5、說白了就是取消develop#的這次合併

6、但是有一種情況就是協作開發的時候大家都合併到master之後就不能用reset強行回滾commit 因為這樣會把其他人的提交記錄給沖掉,這時候就可以用revert來進行操作我們在下面說

製造一個分支模擬環境

1.從你自己的git倉庫創建一個新專案之後拉到本地

2.創建一個index.js隨便寫點東西,之後提交到倉庫

帶你去懂git回滾程式碼(實例詳解)

3.我們在終端機上使用git log查看commit可以看到目前只有一個剛才提交的commit

帶你去懂git回滾程式碼(實例詳解)

4.我們從master分支遷出一個develop分支git branch develop,並且切換到該分支 git checkout develop

5.在develop分支新增一段程式碼,這個時候develop的commit記錄就新增了一筆B的記錄

帶你去懂git回滾程式碼(實例詳解)

## 6.在develop分支接著新增一段程式碼

帶你去懂git回滾程式碼(實例詳解)

7.看下develop分支和master分支最新的commit記錄對比,可以看到dev分支領先master分支兩個commit

帶你去懂git回滾程式碼(實例詳解)帶你去懂git回滾程式碼(實例詳解)

注意這裡有個問題當你進行分支合併的時候,有時候會發現雖然程式碼不一樣但是在進行分支合併的時候就提示程式碼沒有更新,就是因為目前的開發分支的commit記錄是落後於要合併的目標分支的,造成這種情況的原因就是reset濫用造成的,所以reset一定要慎用

操作一下reset來感受一下

1.我們將develop分支的程式碼合併到master,切換到master分支執行git merge develop

#2.我們在master分支使用git log查看commit記錄找到B記錄,準備回滾這一條,回滾的時候不需要輸入全部的commid一般是前7位就夠用

帶你去懂git回滾程式碼(實例詳解)

3.重點來了我們使用git reset 69fde2c進行回滾,這個時候查看log記錄發現最後一條新增c記錄沒有了,這裡還有個問題如果直接使用git push推送會有以下提示。

帶你去懂git回滾程式碼(實例詳解)

這是因為本地的記錄因為我們的回滾已經落後於倉庫的程式碼了,這個使用需要使用git push \-f進行強制提交

4.這個時候master分支就剩下A和B的commit記錄了,到這裡就是一次完整的reset回滾記錄,之後我們還是可以繼續正常把develop分支合併到master的

帶你去懂git回滾程式碼(實例詳解)

revert介紹

1、revert的原理是,在目前提交後面,新增一次提交,抵銷掉上一次提交導致的所有變化。它不會改變過去的歷史,所以是首選方式,沒有任何遺失程式碼的風險

2、revert可以抵銷上一個提交,那麼如果想要抵銷多個需要執行 git revert 倒數第一個commit id 倒數第二個commit

3、這個就常用於當你提交了一次commit之後發現提交的可能有問題就可以用到revert

4、還有一種情景是已經有很多人提交過代碼,但是想改之前的某一次commit記錄又不想影響後面的也可以使用revert,他會把你後面提交的記錄都放到工作區只是合併的時候需要注意一點

我們來模擬環境

1.切到develop分支現在該分支有三個commit記錄帶你去懂git回滾程式碼(實例詳解)

2.我們使用rever進行回滾試試看git revert 16083ce,如果你也用的是vs code可以看到工作區的變化,並且在控制台可以提交預設的commit

帶你去懂git回滾程式碼(實例詳解)

#3.看一下log記錄,可以看到新增了一個記錄Revert 新增C,並且原來的新增C還是在的

帶你去懂git回滾程式碼(實例詳解)

commit記錄打tag

1、在上線之前我們需要對目前的commit記錄打一個tag方便上線的程式碼有問題可以及時回滾

我們來介紹常用的幾個指令

1.git tag列出所有的tag清單

帶你去懂git回滾程式碼(實例詳解)

#2.建立一個tag,使用git tag [name],我們新增一個 git tag 測試4,在使用git tag 查看一下

帶你去懂git回滾程式碼(實例詳解)

3.查看tag對應的commit訊息,git show [tag名字],舉例git show 測試1,上線之後如果有問題我們就可以根據下圖的commit id進行程式碼回溯

帶你去懂git回滾程式碼(實例詳解)

結束

git管理工具在我們日常中可以說是天天都在用,所以對於常見的問題場景對應的方法一定要牢牢地掌握免得遇到的時候顯得捉襟見肘

推薦學習:《Git教程

#

以上是帶你去懂git回滾程式碼(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除