簡體   English   中英

Git - 處理錯誤的分支 - 如何將更改復制到現有主題分支

[英]Git - working on wrong branch - how to copy changes to existing topic branch

我一直在做一個項目,但不幸的是,我忘記切換到我的分支,因此一直在做 master

如何將我在這里完成的工作(3 個文件)從 master 復制到我的分支(例如稱為branch123 )而不提交到 master?

聽起來你需要的是以下內容:

git stash
git checkout branch123
git stash apply

然后你應該回到你自己的分支而不接觸主分支。

這是一個古老的問題,但它是谷歌“在錯誤的分支上工作”的頂級問題。 我認為更好的答案是簡單地檢查您想要處理的分支機構。 不需要藏匿任何東西:

git checkout branch123

checkout的默認行為是不覆蓋工作目錄中的已修改文件,因此您不會丟失任何內容。 基於我在這里找到的東西

編輯:只有在工作目錄中修改的文件在masterbranch123都相同時,此方法才有效。 Jefromi在對已接受答案的評論中實際指出了這一點,但我第一次看到它時並不明白他在說什么。

git stash是你需要的。

可以在Git-Tools-Stashing中找到完整的解釋

由於可以創建一個新分支,但在簽出文件時無法檢出現有分支,我發現以下技巧使用臨時分支工作:

這種情況至少適用於VS 2015 Git插件,但很可能適用於任何git工具。

  1. 簽出並對master中的文件進行更改(ups!,錯誤分支)
  2. 從master創建一個新的分支“temp”(或您選擇的任何未使用的名稱)。 現在,簽出的文件將在temp中檢出,而不是在master中檢出。
  3. 檢查temp的更改(master未觸及)
  4. 現在一切都已簽入,可以查看現有分支。 查看想要的分支(我想要進行更改的分支)3.5 Git Rebase
  5. 將temp合並到有用的分支。 現在更改位於正確的分支中。
  6. 刪除臨時分支,因為不再需要它

編輯:我發現你必須在執行合並之前執行temp分支的rebase(git rebase --onto)。 否則,master中的更改將包含在合並中。 上面的額外步驟3.5。 有關rebase的更多信息,請訪問: https//git-scm.com/book/en/v2/Git-Branching-Rebasing

Github台式機

在 Github 桌面中,當創建新分支或移動到具有未提交更改的不同分支時,系統會詢問您是要保留更改還是它們移動到新分支:

在此處輸入圖像描述

暫無
暫無

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

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