搜尋

首頁  >  問答  >  主體

git 切換分支的時候 是否需要提交目前已經修改過的

官方文檔有句話“切換分支的時候最好保持一個清潔的工作區域。”,不知道我的理解是不是正確的。如果你當前分支有修改,但是還沒有commit,如果你要切換分支的話,最好就是把內容都commit了?還是隻用add到暫存區,下次回來可以繼續。

阿神阿神2801 天前798

全部回覆(5)我來回復

  • 大家讲道理

    大家讲道理2017-04-21 11:18:00

    我推薦你用git stash 暫存起來,切換回來的時候用git stash apply重新取得剛才的變更。切換的時候給你一個乾淨的工作目錄:)

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 11:18:00

    有以下幾種處理方式:
    1. add並且commit,再checkout,提交到當前分支
    2. add但不commit,可以stash,然後checkout回來之後stash apply,在commit,提交到當前分支
    3. add但不commit,也不stash,直接checkout,然後再commit的話,記錄就在切換分支下面。

    其背後的原因:一個本地的git repo只有一個工作區和暫存區,但是有多個分支的提交區,而我們的checkout只是將HEAD指針從一個分支切換到另一個分支。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-21 11:18:00

    如果你目前分支有修改,但還沒有commit,如果你要切換分支的話,最好就是把內容都commit了?

    不是,因為你的change還不一定ready for commit,根據你的實際情況,你可以git stash暫存,你可以commit產生一個新的提交,你也可以git checkout -f強制切換分支

    回覆
    0
  • 怪我咯

    怪我咯2017-04-21 11:18:00

    沒有進行commit並切換分支,目前檔案還在緩衝區。
    不是對目前Git版本,進行提交。
    在任意分支下方還可reset修改或commit.

    測驗

    git config --global alias.co checkout
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status
    
    git br a
    git br 
    git br b
    
    git co a
    touch a.py
    git add .
    
    git co b
    git st
    git add .
    git commit -m 'add a.py file'
    git st
    
    当前文件就回出现b分支下
    如果这样,退回上次commit
    git reset --hard

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-21 11:18:00

    如果沒有同名的,那麼無論是在暫存區還是未追蹤的,都可以切換。切換之後,一切照舊。
    但是如果有同名的, git會提醒你容易被覆蓋,不會允許你操作的。

    回覆
    0
  • 取消回覆