我从staging开始了一个新的分支。我提交了3-4次,意识到我需要从master分支出来,而不是staging。我怎样才能改变我原来的分支,但仍然保留我的工作/提交?
staging
master
bbuxkriu1#
git rebase --onto NEW_SOURCE_BRANCH FIRST_COMMIT_BEFORE_YOUR_WORKNEW_SOURCE_BRANCH是您应该从其分支的位置这将倒回你在FIRST_COMMIT_BEFORE_YOUR_WORK之后的提交,然后它将把它们重放到NEW_SOURCE_BRANCH上,然后把你放在那里,这时你可以创建这个工作的新分支,也可以硬重置你的旧分支。注意,我会说使用origin/master作为FIRST_COMMIT_BEFORE_YOUR_WORK,但很可能master不再“存在”;但无论如何都很难找到
git rebase --onto NEW_SOURCE_BRANCH FIRST_COMMIT_BEFORE_YOUR_WORK
NEW_SOURCE_BRANCH
FIRST_COMMIT_BEFORE_YOUR_WORK
origin/master
wh6knrhe2#
简易方法:
git log --oneline -4 #find all the commit hashes you want to get git checkout origin/master git checkout -b $newbranch git chery-pick $A $B $C $D
你的历史记录是ABCD,因为你的第一次提交是A,然后是B,依此类推。Cherry从你的staging分支中选择你需要的哈希值。你今天不会动态地发现你的更改,因为你只有3-4个提交,复制哈希,并将更改应用到你的新分支。
2条答案
按热度按时间bbuxkriu1#
git rebase --onto NEW_SOURCE_BRANCH FIRST_COMMIT_BEFORE_YOUR_WORK
NEW_SOURCE_BRANCH
是您应该从其分支的位置这将倒回你在
FIRST_COMMIT_BEFORE_YOUR_WORK
之后的提交,然后它将把它们重放到NEW_SOURCE_BRANCH
上,然后把你放在那里,这时你可以创建这个工作的新分支,也可以硬重置你的旧分支。注意,我会说使用
origin/master
作为FIRST_COMMIT_BEFORE_YOUR_WORK
,但很可能master
不再“存在”;但无论如何都很难找到wh6knrhe2#
简易方法:
你的历史记录是ABCD,因为你的第一次提交是A,然后是B,依此类推。
Cherry从你的staging分支中选择你需要的哈希值。你今天不会动态地发现你的更改,因为你只有3-4个提交,复制哈希,并将更改应用到你的新分支。