最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Git分支創(chuàng)建、切換、合并和刪除操作完整教程

 更新時間:2026年07月27日 09:41:39   作者:lazy?H  
本文詳細講解了Git分支的用法,涵蓋創(chuàng)建、切換、合并和刪除分支的全過程,并深入介紹如何解決合并沖突、管理遠程分支,以及推薦的分支命名和團隊協(xié)作流程,適合Git初學(xué)者快速掌握分支管理與團隊協(xié)作的核心技能

Git 分支是日常開發(fā)中非常重要的功能。它可以讓我們在不影響主分支穩(wěn)定代碼的情況下,獨立開發(fā)新功能、修復(fù)問題或進行實驗。功能完成后,再把分支合并回主分支即可。

本文將從分支的基本概念開始,依次講解查看、創(chuàng)建、切換、合并、解決沖突、刪除以及管理遠程分支的方法。所有命令都以可直接復(fù)制的文本代碼塊展示,適合剛接觸 Git 的開發(fā)者。

提示:示例默認(rèn)主分支名稱為 main。部分舊項目可能仍然使用 master,使用時把命令中的 main 替換成實際主分支名稱即可。

一、Git 分支到底是什么?

可以把 Git 分支理解成一條獨立的開發(fā)路線。主分支 main 通常保存可以正常運行的穩(wěn)定代碼,而新功能可以在 feature 分支中開發(fā)。這樣即使新功能還沒有完成,也不會影響 main 分支。

從 Git 的實現(xiàn)來看,分支本質(zhì)上并不是一份完整的項目副本,而是一個指向某次提交的可移動指針。因此,創(chuàng)建和切換分支通常都很快。

  • main:主分支,一般保存穩(wěn)定版本。
  • feature/login:功能分支,例如開發(fā)登錄功能。
  • bugfix/order:修復(fù)分支,例如修復(fù)訂單問題。
  • release/v1.0:發(fā)布分支,用于準(zhǔn)備某個正式版本。

圖1 典型的功能分支開發(fā)流程

二、查看當(dāng)前有哪些分支

1. 查看本地分支

命令:

git branch

執(zhí)行后會列出本地所有分支,當(dāng)前所在分支前面會顯示一個星號。

示例輸出:

* main
  feature/login
  test

2. 查看遠程分支

命令:

git branch -r

3. 同時查看本地和遠程分支

命令:

git branch -a

4. 查看分支的跟蹤關(guān)系

命令:

git branch -vv

這個命令除了顯示分支名稱,還會顯示每個本地分支正在跟蹤哪個遠程分支,以及是否領(lǐng)先或落后遠程分支。

三、創(chuàng)建 Git 分支

1. 只創(chuàng)建分支,不立即切換

命令:

git branch feature/login

執(zhí)行后會創(chuàng)建 feature/login 分支,但你仍然停留在當(dāng)前分支??梢栽俅螆?zhí)行 git branch 檢查結(jié)果。

2. 創(chuàng)建分支并立即切換

命令:

git switch -c feature/login

這是現(xiàn)在更清晰的寫法。-c 表示 create,也就是先創(chuàng)建分支,再切換到該分支。

3. 舊版常見寫法

命令:

git checkout -b feature/login

checkout 也可以創(chuàng)建并切換分支。它在舊教程和舊項目中十分常見,但 checkout 同時還承擔(dān)恢復(fù)文件等功能,新手更容易混淆,因此本文優(yōu)先使用 switch。

4. 從指定提交或指定分支創(chuàng)建

命令:

git switch -c hotfix/login main

上面的命令表示以 main 當(dāng)前指向的提交為起點,創(chuàng)建 hotfix/login 分支。也可以把 main 換成某個 Commit ID。

四、切換 Git 分支

1. 切換到已有分支

命令:

git switch feature/login

切換后,工作區(qū)中的文件會變成 feature/login 分支對應(yīng)的版本,之后的新提交也會記錄在該分支上。

2. 切回主分支

命令:

git switch main

3. 快速切換回上一個分支

命令:

git switch -

這個寫法類似終端中的“返回上一個位置”,適合在 main 和功能分支之間來回切換。

4. 為什么有時不能切換分支?

如果當(dāng)前存在尚未提交的修改,并且這些修改在目標(biāo)分支中可能被覆蓋,Git 會拒絕切換。此時可以選擇提交、暫存或放棄修改。

命令:

git status

確認(rèn)修改內(nèi)容后,可以先提交:

命令:

git add .
git commit -m "保存當(dāng)前修改"

暫時不想提交時,可以使用 stash:

命令:

git stash
git switch main
# 需要恢復(fù)時執(zhí)行
git stash pop

提示:切換分支前先執(zhí)行 git status,是一個非常實用的習(xí)慣。

五、在功能分支中完成一次開發(fā)

下面用一個完整流程演示如何開發(fā)登錄功能。假設(shè)當(dāng)前已經(jīng)位于 main 分支。

步驟 1:同步主分支代碼

命令:

git switch main
git pull

步驟 2:創(chuàng)建功能分支

命令:

git switch -c feature/login
git add .
git commit -m "feat: 完成登錄功能"

步驟 3:修改代碼并查看狀態(tài)

命令:

git status

步驟 4:添加并提交修改

命令:

git add .
git commit -m "feat: 完成登錄功能"

步驟 5:切回主分支

命令:

git switch main

步驟 6:合并功能分支

命令:

git merge feature/login

步驟 7:刪除已經(jīng)完成的分支

命令:

git branch -d feature/login

提示:不要在功能分支還未提交修改時就直接刪除分支。刪除前最好先確認(rèn)功能已經(jīng)合并,并使用 git log 或 git branch --merged 檢查。

六、合并分支:git merge 怎么用?

合并分支時,一個最容易弄反的問題是:到底要在哪個分支執(zhí)行 merge?記住下面這句話即可:先切換到“接收代碼”的分支,再 merge “提供代碼”的分支。

例如,要把 feature/login 合并進 main:

命令:

git switch main
git merge feature/login

圖2 快進合并與三方合并示意圖

1. Fast-forward 快進合并

如果創(chuàng)建功能分支后,main 沒有產(chǎn)生新的提交,那么 Git 只需要把 main 指針直接移動到功能分支最新提交的位置。這種情況通常不會生成額外的合并提交。

2. Three-way 三方合并

如果 main 和功能分支都產(chǎn)生了新提交,Git 會根據(jù)兩個分支的共同祖先進行三方合并,并通常生成一個新的 merge commit。

3. 強制保留合并提交

命令:

git merge --no-ff feature/login

--no-ff 會在可以快進的情況下仍然生成一次合并提交。這樣能夠在歷史記錄中更清楚地看到某個功能分支何時被合并,但是否使用它應(yīng)遵守團隊規(guī)范。

4. 查看圖形化提交歷史

命令:

git log --oneline --graph --decorate --all

七、合并沖突怎么解決?

Git 能自動合并大多數(shù)修改,但如果兩個分支修改了同一個文件的同一位置,Git 無法判斷應(yīng)該保留哪份代碼,就會產(chǎn)生合并沖突。

圖3 兩個分支修改同一位置時可能產(chǎn)生沖突

1. 查看發(fā)生沖突的文件

命令:

git status

沖突文件中通常會出現(xiàn)下面的標(biāo)記:

沖突內(nèi)容:

<<<<<<< HEAD
String title = "User Login";
=======
String title = "Account Login";
>>>>>>> feature/login
  • <<<<<<< HEAD 到 =======:當(dāng)前分支中的內(nèi)容。
  • ======= 到 >>>>>>> feature/login:待合并分支中的內(nèi)容。
  • 需要手動決定保留哪部分,或者把兩部分重新組合。

2. 修改后標(biāo)記為已解決

命令:

git add 沖突文件名

3. 完成合并提交

命令:

git commit

也可以直接寫提交說明:

命令:

git commit -m "merge: 解決登錄模塊合并沖突"

4. 放棄本次合并

命令:

git merge --abort

執(zhí)行后會盡量恢復(fù)到合并開始前的狀態(tài)。適合沖突過多、暫時不想繼續(xù)處理時使用。

八、刪除本地分支

1. 安全刪除已合并分支

命令:

git branch -d feature/login

-d 是安全刪除。如果該分支中的提交還沒有合并,Git 會拒絕刪除,從而降低誤刪代碼的風(fēng)險。

2. 強制刪除分支

命令:

git branch -D feature/login

-D 會忽略是否已經(jīng)合并,直接刪除分支。除非確定該分支內(nèi)容不再需要,否則不要隨意使用。

3. 為什么不能刪除當(dāng)前分支?

Git 不允許刪除當(dāng)前正在使用的分支。應(yīng)先切換到其他分支,再執(zhí)行刪除。

命令:

git switch main
git branch -d feature/login

4. 查看哪些分支已經(jīng)合并

命令:

git branch --merged

5. 查看哪些分支尚未合并

命令:

git branch --no-merged

九、遠程分支怎么管理?

1. 第一次推送本地新分支

命令:

git push -u origin feature/login

-u 會建立本地分支和遠程分支之間的上游跟蹤關(guān)系。之后在該分支中通常只需執(zhí)行 git push 或 git pull。

2. 查看遠程分支

命令:

git branch -r

3. 獲取遠程最新分支信息

命令:

git fetch

4. 根據(jù)遠程分支創(chuàng)建本地分支

命令:

git switch -c feature/login --track origin/feature/login

如果本地不存在該分支,而遠程存在同名分支,在部分情況下直接執(zhí)行下面的命令也能自動創(chuàng)建跟蹤分支:

命令:

git switch feature/login

5. 刪除遠程分支

命令:

git push origin --delete feature/login

這個命令刪除的是遠程倉庫中的分支,不會自動刪除本地分支。需要時再執(zhí)行 git branch -d 刪除本地分支。

6. 清理已經(jīng)失效的遠程跟蹤分支

命令:

git fetch --prune

當(dāng)遠程分支已經(jīng)被刪除,但本地仍顯示 origin/xxx 時,可以使用 --prune 清理這些失效引用。

十、重命名分支

1. 重命名當(dāng)前分支

命令:

git branch -m 新分支名

2. 重命名指定分支

命令:

git branch -m 舊分支名 新分支名

3. 已經(jīng)推送到遠程時怎么辦?

本地改名后,需要推送新名稱,并刪除遠程舊分支:

命令:

git push -u origin 新分支名
git push origin --delete 舊分支名

十一、比較兩個分支的差異

1. 查看文件內(nèi)容差異

命令:

git diff main..feature/login

2. 查看功能分支比 main 多了哪些提交

命令:

git log main..feature/login --oneline

3. 查看兩個分支各自獨有的提交

命令:

git log --left-right --oneline main...feature/login

4. 查看分支關(guān)系圖

命令:

git log --graph --oneline --decorate --all

十二、常見報錯與解決方法

1. fatal: a branch named xxx already exists

原因:準(zhǔn)備創(chuàng)建的分支名稱已經(jīng)存在。

命令:

git branch
git switch xxx

如果舊分支已經(jīng)不需要,可以先刪除后重新創(chuàng)建,但刪除前必須確認(rèn)其中沒有需要保留的提交。

2. Your local changes would be overwritten by checkout

原因:當(dāng)前未提交修改可能會被切換分支覆蓋。可以先提交,或使用 stash 臨時保存。

命令:

git stash
git switch main
git stash pop

3. error: The branch xxx is not fully merged

原因:使用 -d 刪除分支時,Git 檢測到分支內(nèi)容尚未完全合并。先檢查提交并完成合并;確認(rèn)不要這些內(nèi)容時,才使用 -D。

命令:

git log main..xxx --oneline

4. fatal: The current branch has no upstream branch

原因:本地新分支尚未關(guān)聯(lián)遠程分支。第一次推送時添加 -u。

命令:

git push -u origin 當(dāng)前分支名

5. merge conflict

原因:兩個分支修改了同一位置。按照“查看沖突—修改文件—git add—git commit”的流程處理,或者用 git merge --abort 放棄合并。

十三、推薦的分支命名方式

分支名沒有絕對統(tǒng)一的標(biāo)準(zhǔn),但建議簡短、明確,并能看出用途。多人協(xié)作時最好由團隊統(tǒng)一命名規(guī)則。

分支類型命名示例用途
主分支main保存穩(wěn)定、可發(fā)布的代碼
功能分支feature/login開發(fā)一個新功能
修復(fù)分支bugfix/order-null修復(fù)普通問題
緊急修復(fù)hotfix/payment修復(fù)線上緊急問題
發(fā)布分支release/v1.2.0準(zhǔn)備某個版本發(fā)布
實驗分支experiment/cache嘗試不確定的方案

提示:分支名盡量使用小寫字母、數(shù)字、短橫線和斜杠,避免空格、中文和含義不清的名稱,例如 test1、new、aaa。

十四、適合新手的團隊協(xié)作流程

  1. 切換到 main,并執(zhí)行 git pull 獲取最新代碼。
  2. 從最新 main 創(chuàng)建功能分支。
  3. 在功能分支中開發(fā),并進行小步提交。
  4. 推送功能分支到遠程倉庫。
  5. 通過 Pull Request 或 Merge Request 發(fā)起代碼審查。
  6. 審查通過后合并到 main。
  7. 刪除已經(jīng)完成的本地和遠程功能分支。

命令:

git switch main
git pull
git switch -c feature/login
# 開發(fā)代碼
git add .
git commit -m "feat: 完成登錄功能"
git push -u origin feature/login

在真實團隊項目中,不建議每個人直接向 main 推送代碼。通過功能分支和代碼審查,可以減少誤操作,并讓修改記錄更加清晰。

十五、Git 分支常用命令速查表

功能命令說明
查看本地分支git branch星號表示當(dāng)前分支
查看全部分支git branch -a包含本地與遠程分支
創(chuàng)建分支git branch dev只創(chuàng)建,不切換
創(chuàng)建并切換git switch -c dev推薦的新寫法
切換分支git switch dev切換到已有分支
切回上一分支git switch -在兩個分支間快速切換
合并分支git merge dev先切到接收代碼的分支
終止合并git merge --abort放棄當(dāng)前合并
安全刪除git branch -d dev僅刪除已合并分支
強制刪除git branch -D dev可能丟失未合并提交
推送新分支git push -u origin dev建立上游跟蹤關(guān)系
刪除遠程分支git push origin --delete dev刪除遠程倉庫中的分支
重命名分支git branch -m new-name重命名當(dāng)前分支
查看分支圖git log --graph --oneline --all查看提交與分支關(guān)系

總結(jié)

Git 分支的核心思路并不復(fù)雜:從穩(wěn)定分支創(chuàng)建一條獨立開發(fā)路線,在新分支中完成并提交修改,然后切回目標(biāo)分支進行合并,最后刪除已經(jīng)完成的臨時分支。

對于新手來說,最應(yīng)該先熟練掌握的命令是 git branch、git switch、git merge、git branch -d 和 git push -u。掌握這些命令后,就已經(jīng)可以完成大多數(shù)個人項目和團隊項目中的基礎(chǔ)分支操作。

注意:實際操作中,刪除分支和強制操作前要先檢查提交記錄。功能代碼尚未合并時,優(yōu)先保留分支,不要急于使用 -D。

以上就是Git分支創(chuàng)建、切換、合并和刪除操作完整教程的詳細內(nèi)容,更多關(guān)于Git分支管理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • VSCode程序猿彩虹屁插件rainbow fart體驗篇

    VSCode程序猿彩虹屁插件rainbow fart體驗篇

    這篇文章主要介紹了VSCode程序猿彩虹屁插件rainbow fart體驗,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 使用git?config?--global設(shè)置用戶名和郵件問題

    使用git?config?--global設(shè)置用戶名和郵件問題

    這篇文章主要介紹了使用git?config?--global設(shè)置用戶名和郵件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • GIt的基本操作詳解

    GIt的基本操作詳解

    本文主要介紹了GIt的基本操作。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Windows下Git Bash終端高效配置指南

    Windows下Git Bash終端高效配置指南

    作為習(xí)慣 Linux 命令行的開發(fā)者,Windows 自帶的 Powershell 或 CMD 常常讓人感到操作割裂,不僅命令語法差異大,缺乏常用工具鏈,更讓人頭疼的是路徑適配問題,本文將詳細介紹 Git Bash 的安裝、終端配置、問題解決及實用技巧,需要的朋友可以參考下
    2026-03-03
  • 網(wǎng)站被等惡意鏡像的解決、反制措施詳細教程

    網(wǎng)站被等惡意鏡像的解決、反制措施詳細教程

    這篇文章主要介紹了網(wǎng)站被等惡意鏡像的解決、反制措施詳細教程,需要的朋友可以參考下
    2016-10-10
  • 編程人員閱讀代碼的一些小技巧分享

    編程人員閱讀代碼的一些小技巧分享

    閱讀別人的代碼作為研發(fā)人員是一件經(jīng)常要做的事情。一個是學(xué)習(xí)新的編程語言的時候通過閱讀別人的代碼是個最佳的學(xué)習(xí)方法,另外是積累編程經(jīng)驗。
    2011-01-01
  • 關(guān)于IDEA git 只有Commit沒有Push的問題

    關(guān)于IDEA git 只有Commit沒有Push的問題

    這篇文章主要介紹了關(guān)于IDEA git 只有Commit沒有Push的問題,本文給大家介紹的非常想詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 關(guān)于使用mvn deploy命令將本地jar包上傳到maven私服的問題(收藏)

    關(guān)于使用mvn deploy命令將本地jar包上傳到maven私服的問題(收藏)

    這篇文章主要介紹了使用mvn deploy命令將本地jar包上傳到maven私服,分享本篇教程可以幫助多數(shù)朋友少走彎路,本文具有很好的收藏價值,需要的朋友可以參考下
    2022-03-03
  • Git如何忽略已加入的文件

    Git如何忽略已加入的文件

    了解Git中 .gitignore不生效的原因及解決方法,掌握正確處理已提交文件的技巧,學(xué)習(xí)如何忽略整個目錄及清理誤提交文件
    2026-06-06
  • UTF8編碼開發(fā)中頁面空白問題的解決方法

    UTF8編碼開發(fā)中頁面空白問題的解決方法

    開發(fā)中一直沒辦法解決的一個問題頁面采用UTF8編碼,頭部和尾部用了模板包含文件的方法,結(jié)果頭部和尾部無端端各多出一個約10px的空行,什么也沒有。
    2008-10-10

最新評論

涿鹿县| 广汉市| 奉化市| 辉县市| 修武县| 炉霍县| 铅山县| 剑河县| 揭西县| 城固县| 阿坝| 辽中县| 都安| 额尔古纳市| 鹿邑县| 万州区| 集贤县| 吉林省| 琼结县| 仪征市| 阿鲁科尔沁旗| 三门县| 体育| 尉犁县| 博爱县| 久治县| 南丹县| 武冈市| 桃园市| 金溪县| 永和县| 金乡县| 塔河县| 西盟| 寿宁县| 尼玛县| 高邑县| 丰城市| 上思县| 安吉县| 新乡市|