01 引言
上一期借助Idea
,完成了Git
倉庫的建立、配置、代碼提交等操作,初步入門了Git
的使用。然而日常開發中經常面臨各種各樣的問題,入門級的命令遠遠不夠使用。
這一期,我們將展開介紹Git
的日常處理命令,解決日常問題,熟悉Git
操作。
02 Git分支管理
一個新的項目開始,我們需要從主干分支上拉取開發分支。我們還是以上一期的project-test
倉庫為例。
2.1 創建新的分支
按照下圖所示操作:
創建dev-20250520
分支:
Git
命令:
# 創建新分支
git checkout -b dev-20250520 origin/main# 切換分支
git checkout dev-20250520
查看所有本地和遠程分支:
對應的命令:
# 查看所有本地和遠程分支
git branch -a# 查看遠程分支
git branch -r# 查看本地所有分支
git branch
2.2 提交代碼
編寫實例代碼,直接提交到本地倉庫。
其實也可以直接從控制臺看看Git
執行了哪些命令:
2.3 推送到遠程倉庫
首次推送到遠程倉庫會自動創建分支名的遠程倉庫分支。正常開發中我們的代碼應該是直接從分支項目檢出的,不需要創建遠程倉庫的分支。
遠程倉庫查看:
03 處理沖突
為了制造沖突,直接在GitHub
上修改GitTest.java
文件。
3.1 制造沖突
本地修改同一個文件(GitTest.java
),提交本地倉庫沒有沖突,但是推送遠程倉庫時,就會出現沖突。
3.2 解決沖突
沖突的解決保留歷史分支記錄,我們一般會選擇Merge
處理。
選擇Merge
之后,Git
會自動從遠程倉庫拉取最新的代碼,并在工作區標記處沖突的位置(如上圖)。我們通過Idea
繼續Merge
處理沖突。
左右兩側分別表示本地倉庫和遠程倉庫,中間是處理的最終結果。黃色代表相對去中間工作區的改動的地方。點擊箭頭即可完成代碼移動。
假設我們兩邊的代碼都需要,我們只要一次點擊箭頭即可完成代碼的合并(沖突的解決),再次提交到本地倉庫。
代碼提交到本地倉庫之后,就可查看該分支的所有變更記錄:
也可以通過命令查看:
# 查看歷史提交記錄
git log
命令結果:
最后推送到遠程倉庫即可。
04 代碼回滾
代碼回滾是一個優秀的設計。網上不是有這樣的梗,產品做了第一版方案后給老板看,老板覺得不滿意,然后來來回回的改,最后老板覺得還是第一版比較好。產品的心中一萬只羊駝奔騰而過。
程序員同樣面臨的這樣的場景,但是代碼回滾完美的解決了這樣的問題。
我們模擬三版提交方案。在GitTest.java
增加提交的版本信息:
/*** 第一版提交方案*/
private void firstCase() {System.out.println("第一版Case");
}/*** 第二版提交方案*/
private void secondCase() {System.out.println("第二版Case");
}/*** 第三版提交方案*/
private void thirdCase() {System.out.println("第三版Case");
}
假設我們要回到第一版的方案:
選中第一版記錄,然后右鍵復制版本號
4.1 未推送遠程的回滾
命令:
# --hard 底回退到指定提交,丟棄所有未提交的更改
# –mixed(默認):移動 HEAD 并重置暫存區,但保留工作區修改
# –soft:僅移動 HEAD,保留工作區和暫存區
git reset --hard 回退的版本號
結果迅速到達第一版:
4.2 已推送至遠程的回滾
命令:
# 回退到指定的版本號
git revert 版本號
如果是相同的位置的代碼修改可能會出現沖突,正常解決即可
解決之后,需要重洗提交代碼。
05 合并分支
代碼合并階段一般是出現在開發分支過久,迭代多次需要合并新分支,另外一個就是發布代碼之后,必須將代碼合并到主干上。
案例中我們一直在dev-20250520
開發,我們將開發分支合并到主干(main
)分支上。首先我們需要需要切換分支到主干分支上。
切換分支的命令:
# 切換到主干分支上
git checkout main
Idea的操作:
切到主干分支發現并沒有GitTest.java
的文件:
分支合并:
合并之后代碼會之間保存到暫存區,直接推送到遠程即可:
06 小結
今天就一個簡單的模擬實戰項目,練習了Git
日常處理問題的命令。如果有什么更加有趣的命令,評論區留言討論!