如何将更改从一个分支移动到另一个分支 git?

如何将工作和更改从 master分支移动到新创建的分支,并在移动后保持主分支完整?

120690 次浏览

You can create a new branch pointing to the 目前 commit using git branch branchname (or git checkout -b branchname if you want to check it out directly). This will basically duplicate your master branch, so you can continue working on there.

如果成功复制了分支,可以使用 git reset --hard commitmaster重置为其原始点,其中 commit是主服务器上最后一个提交的散列。

例如,你有这样一个情况:

---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6
^                    ^
original                master
master commit

因此,您已经在提交 6时签出了 master,并且希望在将 master重置为 3时创建一个指向该 6的新分支 ticket:

git branch ticket
git reset --hard 3
git checkout ticket

然后你在 ticket上指向提交 6,而 master指向 3

如果你在意识到你应该在一个分支中之后提交(比如说)了2次,那么就简单地做吧

git branch work_branch
git reset --hard HEAD~2

用你想要返回的提交次数来替换2。在这一点上你仍然是主人,如果你想移动到分支继续工作,只需 git checkout work_branch

如果您想了解如何使用像 HEAD~2这样的引用来遍历提交树的语法,请参阅 git rev-parse --help

从应该创建的位置创建一个 新的分支,然后在不正确的分支上挑选更改,放入新的分支。

然后,您可以删除 很糟糕分支,假设您没有将它推到其他地方,并且已经对它进行了其他更改。

如果未提交更改,则为。

您可以将更改隐藏在主分支中。

git stash

然后检查一下树枝

git checkout -b newbranchname

然后在这里弹出更改

git stash pop

如果提交了更改:

然后创建一个分支:

git checkout -b newbranch

结帐返回主分行:

git checkout master

reset to previous commit :

git reset --hard head^1

我通过以下方法解决了这个问题

Step 1: Create a new branch from the infected master branch and named it something like that master_infected ;

步骤2: 现在 hard reset感染的 master分支用于清除被污染的 commits

 git reset --hard HEAD~2
    

(回到 HEAD之前的两个 commits,因为在我的情况下,我有两个受污染的 commits。所以对于你的情况可能会有所不同)

现在我的 master_infected分支包含了我想保留的代码,(As I said my polluted code)master分支现在处于保存模式。