回覆列表
  • 1 # 使用者3766602158487

    切換分支的時候,目錄裡的檔案會被替換掉。假如直接替換了,那沒track的修改就丟失了。還有其它情況,譬如當前分支的修改使用者其實是不需要的,那自動stash再pop或者apply也顯得多此一舉。所以git在不丟失資料的情況下讓使用者自己選擇,接下來要做什麼。如果需要保留修改但不用commit,那就用git stash;如果不需要保留修改,那可以用git checkout -f b2強制切換,也可以用git checkout <filepath>或者git reset <filepath>把修改回退掉以後再切分支;如果需要做成提交,那就git add + git commit;沒有衝突的情況下,修改是可以保留到切分支之後的。

    你覺得不合理是因為剛好你的需求是“需要保留修改且不要commit”,但實際上你也可能遇到其它情況。git把選擇權交給使用者來應對不同的場景,是比較靈活務實的做法。而且如果真要做成你想的那樣,git也提供了alias機制可以實現,專為自己定製。如果嫌棄alias不能用checkout這個關鍵字,還可以自定義一個bash函式封裝重寫git命令,使得git checkout <branch>這種格式的命令按照你想的那樣執行,而其它命令和其它格式的checkout扔按原來的樣子執行。豈不是很自由,很靈活!

  • 中秋節和大豐收的關聯?
  • 個人自身意識是怎樣的一個存在?