簡體   English   中英

使用git,有沒有辦法重新應用更改但不提交更改?

[英]Using git, is there a way to reapply the changes but not commit the changes?

如果我切換到一個新分支並提交文件(並作為備份推送到GitHub),我發現一旦切換回舊分支,所有文件都將變為未修改狀態,就好像它們自上一個版本以來從未被修改過一樣承諾。

在這種情況下,可以像以前一樣修改文件嗎?

我可以

git rebase tmp-branch

並獲得這些更改,但是此操作還將提交應用於我的當前分支。 有沒有一種方法可以使提交不發生,而只是讓文件被修改並保持未提交狀態?

編輯:顯然,Git的人們已經想到了這一點。
您可以將-n標志傳遞給cherry-pick以應用另一提交的更改,並在創建新提交之前停止。

git checkout old-branch       # Go back to the old branch, files are unmodified

git cherry-pick -n tmp-branch # Apply the changes from tmp-branch's tip

我認為您正在尋找git命令的stash系列

https://git-scm.com/docs/git-stash

它允許您存儲更改而不提交它們,切換到其他分支,並在返回時“彈出”存儲。

這是它使用的一些基本示例

http://gitready.com/beginner/2009/01/10/stashing-your-changes.html

從該頁面

使用將更改添加到索引

git add .

或將單個文件添加到索引中(由您選擇)。 通過以下方式隱藏您的更改:

git stash

和繁榮! 您又回到了原來的工作狀態。 修復了該錯誤? 帶回您的工作:

git stash apply

您還可以進行多層存儲,因此請確保使用

git stash list

查看所有當前的。 如果您需要從堆棧的更深處應用隱藏,這也很容易。 這是應用第二個存儲的方法:

git stash apply stash@{1}

您還可以通過使用以下命令輕松地在堆棧上應用頂層存儲:

git stash pop

該命令的注釋,它將永久刪除該存儲,而apply則不會刪除。 您可以使用以下方式手動刪除存儲:

git stash drop <id>

或使用以下命令刪除所有存儲的存儲區:

git stash clear

Git:隱藏未分級的更改

這將存儲您沒有git添加的所有修改:

git stash -k

請注意,除非同時使用-u開關,否則新創建(和未添加)的文件將保留在您的工作目錄中。

git stash -k -u

另外,當您稍后使用git stash pop時,您的工作目錄必須是干凈的(即,需要添加所有更改)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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