在日常coding的過程中免不了分支之間的合并,回滾、提交、打tag等操作,如果你現在還不知道怎麼使用Git工具回滾代碼,或者總是擔心出錯沒有把握怕把代碼搞丢,這很危險畢竟代碼搞丢是很大的事情小則扣績效重則多扣點,但是 dont worry,你很幸運能看到這篇文章,當你看完以後就不會在有代碼丢失的情況,因為我會帶你手把手建分支模拟回滾的常見情況
介紹Git(讀音為/gɪt/)是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
前言在日常的代碼回滾中常用的有兩種方式git revert和git reset來進行回滾,這兩種分别對應的不同的情況我盡量簡單明了的介紹這兩個命令都能做些什麼,接下來我會從個人倉庫新拉個分支從0開始,建兩個分支,分别是主分支master和開發分支develop來進行模拟
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随便寫點東西,之後提交到倉庫
3.我們在終端使用git log查看commit可以看到目前隻有一個剛才提交的commit
4.我們從master分支遷出一個develop分支git branch develop,并且切換到該分支 git checkout develop
5.在develop分支新增一段代碼,這個時候develop的commit記錄就新增了一條B的記錄
6.在develop分支接着新增一段代碼
7.看下develop分支和master分支最新的commit記錄對比,可以看到dev分支領先master分支兩個commit
注意這裡有個問題當你進行分支合并的時候,有時候會發現雖然代碼不一樣但是在進行分支合并的時候就提示代碼沒有更新,就是因為當前的開發分支的commit記錄是落後于要合并的目标分支的,造成這種情況的原因就是reset濫用造成的,所以reset一定要慎用
操作一下reset來感受一下
1.我們将develop分支的代碼合并到master,切換到master分支 執行git merge develop
2.我們在master分支使用git log查看commit記錄找到B記錄,準備回滾這一條,回滾的時候不需要輸入全部的commid一般是前7位就夠用
3.重點來了我們使用git reset 69fde2c進行回滾,這個時候查看log記錄發現最後一條新增c記錄沒有了,這裡還有個問題如果直接使用git push推送會有以下提示。
這是因為本地的記錄因為我們的回滾已經落後于倉庫的代碼了,這個使用需要使用git push \-f進行強制提交
4.這個時候master分支就剩下A和B的commit記錄了,到這裡就是一次完整的reset回滾記錄,之後我們還是可以繼續正常把develop分支合并到master的
1、revert的原理是,在當前提交後面,新增一次提交,抵消掉上一次提交導緻的所有變化。它不會改變過去的曆史,所以是首選方式,沒有任何丢失代碼的風險
2、revert可以抵消上一個提交,那麼如果想要抵消多個需要執行 git revert 倒數第一個commit id 倒數第二個commit
3、這個就常用于當你提交了一次commit之後發現提交的可能有問題就可以用到revert
4、還有一種情景是已經有很多人提交過代碼,但是想改之前的某一次commit記錄又不想影響後面的也可以使用revert,他會把你後面提交的記錄都放到工作區隻是合并的時候需要注意一點
我們來模拟一下環境
1.切到develop分支現在該分支有三個commit記錄
2.我們使用rever進行回滾試一下git revert 16083ce,如果你也用的是vs code可以看到工作區的變化,并且在控制台可以提交默認的commit
3.看一下log記錄,可以看到新增了一個記錄Revert 新增C,并且原來的新增C還是在的
1、在上線之前我們需要對當前的commit記錄打一個tag方便上線的代碼有問題可以及時回滾
我們來介紹一下常用的幾個命令
1.git tag列出所有的tag列表
2.創建一個tag,使用git tag [name],我們新增一個 git tag 測試4,在使用git tag 查看一下
3.查看tag對應的commit信息,git show [tag名字],舉個例子git show 測試1,上線之後如果有問題我們就可以根據 下圖的commit id進行代碼回滾
git管理工具在我們日常中可以說是天天都在用,所以對于常見的問題場景對應的方法一定要牢牢地掌握免得遇到的時候顯得捉襟見肘
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!