如何干凈地切換到一個分支(八)


一、如何保持一個干凈的分支

當執行命令 git  checkout develop 切換到develop分支時,如果之前的分支對文件有修改,也會將修改的文件信息帶到develop分支上來。怎么干凈地切換到develop分支?

方案一:git reset HEAD -- hard

方案二:git stash

方案三:git commit

場景描述

當前分支:alanchen。

在alanchen分支上修改了幾個文件,如,A、B、C。

切換到develop分支時,A、B、C這三個文件的修改也會帶過來。用 git status 查看,可以看到A、B、C這三個文件有修改。

1. 方案一適用場景

想切換到develop分支時是干凈的,如果這些修改不再需要,可以直接丟棄的話,采用這種方案。

//執行以下命令
git checkout develop

git reset HEAD --hard

//特別注意:alanchen分支上A、B、C的修改也沒有了

2. 方案二適用場景

如果這些修改還需要,只是想臨時切換到develop分支,那么采用第二種方案。

git stash

git checkout develop

3. 方案三適用場景

如果是同時開了兩份分支在開發,在當前分支上的修改都需要保留,希望切換到另外一個分支去開發,那么采用第三種方案。

#添加到git版本庫
git add .

#提交
git commit -m "message"

#切換分支
git checkout develop

注意:有時新建的一個項目因一些開發工具自帶的配置文件等導致切換分支失敗,報:Untracked Files Prevent Checkout

這時如果修改都不需要的話,可以使用git命令強制切換分支:

  • 進入工程所在目錄
  • 右鍵打開Git Bash Here
  • 執行git checkout -f develop-branch (develop-branch是我想切換的分支)

二、git stash詳解

當你在git分支中改代碼時,接到任務需要修復一個bug,你需要在當前分支外新建一個分支來處理bug,當然不能把你剛才寫的代碼帶到那個分支,因為你做的新功能還沒測,更不能提交。所以你需要git stash命令暫存修改(git stash幫助開發人員暫時擱置當前已做的改動,倒退到改動前的狀態):

#暫存
git stash save "備注"

#查看stash情況
git stash list

當你修完bug想要繼續寫你的新功能時,就需要git stash pop(前提是你的stash在棧頂,git stash會將你的修改壓入一個棧中,你如果git stash暫存了很多次,你需要指定pop版本,可以使用git stash apply stash@{1})。其中stash@{1}是啥?你可通過git stash list查看到stash@{1}是你stash內容的版本。

注意:並不是每次git stash都要先git add .的。當你的修改的都是原有文件,那是不需要在git stash之前進行git add 操作的,但是如果你所作的修改涉及到了本次才新建的文件,那么此時git stash之前是要做git add .的。因為新建的文件還沒有進入版本控制庫,需要add操作才能將新建的文件添加進庫。如果在你新建之后直接git stash,未作git add .操作。那么新建文件將仍然保留在工作區,進棧內容不包含新建的文件。

當需要拉取遠端文件,但又不想提交正在修改的文件時,可以使用git stash 命令將當前的工作區保存(藏匿)起來,等pull 完后再還原。

#暫存修改工作區
git stash  

#拉取遠端文件
git pull  

#將工作區還原
git stash pop stash@{0} 

如果還原工作區的文件與pull 下來的文件有沖突,要手動修改沖突

當然,我們可以刪除git stash的內容:

#注意這是清空你所有的內容
git stash clear

#這是刪除第一個隊列
git stash drop stash@{0}  

 


免責聲明!

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



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