簡體   English   中英

Git 結帳 - 如何不丟失工作目錄中的更改?

[英]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完全相同的提交狀態。 masternew-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM