這經常發生在我身上:我編寫了一些代碼,去檢查我的更改,然後意識到我沒有在適當的分支中檢查這些更改。但是,如果不更改我的更改,我無法切換到另一個分支。有沒有辦法將更改移動到另一個分支以在那裏檢查?將更改的文件移動到另一個分支以進行登記
回答
git stash
是你的朋友。
如果您還沒有提交,請運行git stash
。這將節省您的所有更改。
切換到您想要更改的分支並運行git stash pop
。
git存儲有很多用途。這當然是更有用的原因之一。
一個例子:
# work on some code
git stash
git checkout correct-branch
git stash pop
如果您還沒有提交改變,只需使用git checkout
移動到新的分支,然後提交它們通常 - 對文件的修改,直到您提交它們不依賴於特定的分支。
如果有已經提交改變:
git log
類型,並記住要移動的提交SHA。- 檢出你想要提交的分支。
- 類型
git cherry-pick SHA
代替上面的SHA。 - 切換回您的原始分支。
- 使用
git reset HEAD~1
在錯誤分支提交之前重置。
cherry-pick
需要一個給定的提交,並將其應用到當前簽出的頭部,從而允許您將提交複製到一個新的分支。
如果要移動的變化到一個新的分支,這可以只用兩個命令來完成:
git stash
git stash branch new-branch
branch
<branchname> [<stash>]
Creates and checks out a new branch named
<branchname>
starting from the commit at which the<stash>
was originally created, applies the changes recorded in to the new working tree and index.
很遺憾,這發生在m Ë相當有規律,以及和我使用git stash
如果我意識到我的錯誤git commit
前和使用git cherry-pick
否則,這兩個命令都在其他的答案
我想添加一個澄清的git checkout targetBranch
解釋得很好:此命令將只保留您的工作目錄,並上演快照如果targetBranch有相同的歷史就是當前分支
If you haven't already committed your changes, just use git checkout to move to the new branch and then commit them normally
@琥珀的說法是不假,當你移動到newBranch,git checkout -b newBranch
,新指針i被創建並且它指向與當前分支完全相同的提交。
事實上,如果你碰巧有一個共享的歷史與當前分支的另一個分支(都指向同一提交),您可以通過git checkout targetBranch
「移動更改」不過,通常不同的分支意味着不同的歷史, Git不允許你在這些分支之間切換髒的工作目錄或臨時區域。在這種情況下,你可以做git checkout -f targetBranch
(清潔和一次性改變)或git stage
+ git checkout targetBranch
(清潔保存變化),只需運行git checkout targetBranch
會給出錯誤:
error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches. Aborting
- 1. 如何將更改從一個分支移動到另一個分支git?
- 2. 將提交從一個分支移動到另一個分支
- 3. Git - 將舊分支移動到另一個分支是什麼?
- 4. 將分支移動到另一個分支
- 5. Android Studio Git將提交的更改移動到另一個分支
- 6. 從一個git分支移動到另一個只應用我的更改
- 7. 將文件的某些部分「移動」到另一個文件
- 8. SVN:我如何將一個分支移動到另一個分支的頂部?
- 9. 如何將一些修訂從一個分支移動到另一個分支?
- 10. 將多個提交從一個分支移動到另一個分支?
- 11. 分支模型:如何將分支完成的更改移至另一分支
- 12. 使用git,如何將一些未提交的更改從一個分支移動到另一個分支中的另一個分支?
- 13. 將行從一個文本文件移動到另一個
- 14. 如何將所有提交從一個分支移動到另一個分支?
- 15. 將分支的一個子分支的更改複製到Git中的另一個分支的子分支
- 16. 如何將一個分支複製到另一個分支而不管更改?
- 17. 如何將更改從一個分支推送到另一個分支?
- 18. SVN:移動掛起的更改到一個新的分支
- 19. 將一個文件的內容移動到另一個文件
- 20. 將行從一個.txt文件移動到另一個
- 21. 在錯誤分支中進行了更改 - 如何將這些更改提交到另一個分支以進行提交
- 22. 移動XAML文件的一部分到另一個XAML文件
- 23. 移動未提交更改到一個新的分支
- 24. 如何將分支(或指定的提交)移動到另一個分支?
- 25. git將本地(?)分支的更改合併到另一個本地分支
- 26. 將一個文件夾移動到另一個文件夾 - applescript
- 27. 將文件從一個文件夾移動到另一個C#
- 28. Git:將特定提交移動到另一個分支
- 29. Git:將提交從主控移動到另一個分支
- 30. 如何將提交移動到另一個分支?
無需隱藏未提交更改,他們會在您簽出分支時與您一起。隱藏更多的是爲了長期存儲臨時性的東西(你想完成並稍後提交的東西,但你現在需要做其他事情)。 – Tekkub
我明白了。所以我必須存儲,切換分支,然後彈出 'C:\ kf [develop +0〜4 -0]> git checkout feature/customers
錯誤:您對本地更改以下文件將被checkout覆蓋:
AspWebApp.vNext/global.asa
RestApi/Web.config
請在您切換分支之前提交您的更改或存儲它們。
Aborting' – IsmailS
@Tekkub「長期存放臨時性事物」這種說法覺得很尷尬,另一點是使用存儲器將它推入一個堆棧,所以如果你不想讓它繼續並在其他東西上工作,以這種方式很有用。是的,你不必但只是感覺更乾淨,更能控制。 – Atherion