簡體   English   中英

在 Github 中將特定文件從一個分支移動到另一個分支

[英]Move Specific Files from One Branch to Another Branch in Github

我對分支feature/branch-30上的一些文件進行了更改,然后意識到其中一些更改應該在feature/branch-31 上 我知道我們可以使用 stash 和 pop 命令將所有文件從一個分支移動到另一個分支,但我的要求是我只需要將特定文件從 feature/branch-30 移動到 feature/branch-31。 我怎么做? 我真的很感激任何幫助。 謝謝!

git stash僅適用於暫存區以構建提交。 一旦提交了更改,它就沒有位置了。 如果要將已提交的更改移動到某些文件,則需要僅使用這些更改進行新的提交。

從現在開始,我將分支 30 稱為“源”,分支 31 稱為“目標”。

我假設通過“移動”您想要從源中刪除更改並將它們添加到目標。 有很多方法可以做到這一點。 需要考慮的重要一點是因為 dest 可能也更改了文件,如果我們試圖將 source 中的更改移動到 dest,則可能會發生沖突。 Git 有一個工具來處理這個,合並!

首先,我們將通過偽造合並來獲取從 source 到 dest 的更改。 git merge -n將執行合並而不提交它們。

git checkout dest
git merge -n source

現在您擁有了所有內容的未提交合並。 使用git restore刪除您不想要的任何更改,並正常修復任何沖突。 然后隱藏更改,因為我們實際上並不想合並,所以中止合並: git merge --abort

現在申請並將您的藏匿處提交到 dest。

git stash pop
git commit

這是將更改添加到 dest 排序,現在我們需要從源中刪除它們。 這是一種類似的方法,但不是合並以獲取更改,而是使用git restore將所有文件恢復到其原始主版本,但不提交它們。

git checkout source
git restore --source master .

再一次,您有一個充滿變化的臨時區域。 再次刪除您不想要的所有更改。 然后提交它們。

你已經完成了。

git rm --cached path/to/file刪除文件但將其保留在工作目錄中。 簽出另一個分支並添加現在未跟蹤的文件。

暫無
暫無

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

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