[英]Git checkout - how do I not lose changes in working directory?
我創建了一個新分支並進行了結帳。 但當時我的工作目錄不干凈(工作目錄的更改尚未提交)所以我得到了 output:
D src/abstracts/media/tea-background.png
M src/actions/actionTypes.js
M src/actions/customerActions.js
M src/actions/deliveryActions.js
我不知道如何從這里 go ......我不想放棄我對這些文件所做的更改。 我有點害怕運行git commit
或再次檢出 master。
我如何返回到 master 並提交這些更改?
假設您在master
分支上並且您有那些(未提交的)更改,然后您運行
git branch new-branch # create branch
git checkout new-branch
在這種情況下,您仍然處於與master
完全相同的提交狀態。 master
和new-branch
都指向同一個提交。 你可以安全地運行
git checkout master
提交您的更改。
大多數git
命令確保您不會丟失文件/更改,除非您使用--hard
、 --force
或類似選項。
如果您想查看您在 git 歷史記錄中的位置,我建議您使用以下命令:
git log --all --graph --oneline --decorate
上面git status
的 output 是 git 使當前工作目錄 Z9ED39E2EA931586B736AEF95 的工作目錄HEAD
之間的比較結果。
由於您使用git checkout
更改了HEAD
指向的位置,因此列表可能確實有所不同。 但是您的更改仍然存在,並且 git 是為了盡可能避免數據丟失。 如果結帳會導致擦除工作目錄中的某些更改,它會抱怨一條消息並且不會繼續,讓您手動處理這種情況。
您可以再次git checkout master
,您會發現自己處於初始狀態,並且保留了您的更改。
在我的例子中,當創建一個存在本地更改的新分支時,我將使用git stash save 'some message'
,然后使用git branch new-branch # create branch
,最后但並非最不重要的是,使用git stash apply 'some message'
或git pop
以應用您的本地更改,然后使用 noraml 過程git commit -m 'XXX'
提交更改的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.