如何将工作和更改从 master分支移动到新创建的分支,并在移动后保持主分支完整?
master
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 branch branchname
git checkout -b branchname
如果成功复制了分支,可以使用 git reset --hard commit将 master重置为其原始点,其中 commit是主服务器上最后一个提交的散列。
git reset --hard commit
commit
例如,你有这样一个情况:
---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6 ^ ^ original master master commit
因此,您已经在提交 6时签出了 master,并且希望在将 master重置为 3时创建一个指向该 6的新分支 ticket:
6
3
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
git checkout work_branch
如果您想了解如何使用像 HEAD~2这样的引用来遍历提交树的语法,请参阅 git rev-parse --help
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 ;
master_infected
步骤2: 现在 hard reset感染的 master分支用于清除被污染的 commits
hard reset
commits
git reset --hard HEAD~2
(回到 HEAD之前的两个 commits,因为在我的情况下,我有两个受污染的 commits。所以对于你的情况可能会有所不同)
HEAD
现在我的 master_infected分支包含了我想保留的代码,(As I said my polluted code)和 master分支现在处于保存模式。