Push提交到另一个分支

是否有可能将变更从一个分支提交到另一个分支。

假设我在BRANCH1中提交了更改,并希望将它们推到BRANCH2中。

BRANCH1开始,执行以下操作是否有效:

git push origin **BRANCH2**

然后重置BRANCH1?

621100 次浏览

当然,尽管它只在BRANCH2的快进或强制时才会工作。这样做的正确语法是

git push <remote> <source branch>:<dest branch>

有关它如何工作的更多细节,请参阅Git推送手册页上“refspec”的描述。还要注意,强制推送和重置都是“重写历史”的操作,心脏不好的人不应该尝试,除非你绝对确定你对任何远程存储库和其他拥有同一项目的分叉/克隆的人知道你在做什么。

差不多可以了。

当推入一个非默认的分支时,你需要指定源ref和目标ref:

git push origin branch1:branch2

git push <remote> <branch with new changes>:<branch you are pushing to>

在我的例子中,我有一个本地提交,它没有推送到origin\master,而是提交到我的本地master分支。这个本地提交现在应该推到另一个分支。

使用Git扩展,你可以这样做:

  • (如果不存在,则创建)签出新的分支,在那里您想推动您的提交。
  • 从历史记录中选择应该被提交的commit &推到这个分支。
  • 右键单击并选择樱桃式承诺
  • 然后按做出最佳选择按钮。
  • 所选的提交get应用于您的签出分支。现在承诺并推动它。
  • 检查带有错误提交的旧分支。
  • 硬重置这个分支到第二次最后一次提交,一切正常(注意你在这里做什么!)你可以通过右键单击第二个最后提交,并选择重置当前分支到这里来做到这一点。确认操作,如果你知道你在做什么。

你也可以在GIT命令行上这样做。从< em >大卫·克里斯坦森< / em >复制的例子:

我想你会发现git cherry-pick + git reset是一个很多 更快的工作流:< / p >

使用相同的场景,“feature”是带有 如果Top-most提交不正确,那么这样做会容易得多:

< p > # EYZ0 < br > # EYZ0 < br > # EYZ0 < br > # EYZ0 < / p >

节省了相当多的工作,是git cherry-pick . #的场景

我还要注意,如果它不是最上面的,这也可以工作 提交;你只需要一个执法者来挑选论点, 通过:< / p > < p > # EYZ0 < br > # EYZ0 < br > # EYZ0 < br > # EYZ0 < / p >

我用git push origin branch1:branch2命令得到了一个糟糕的结果:

在我的例子中,branch2被删除了,branch1已经更新了一些新的更改。

因此,如果你只想要从branch1推到branch2上的更改,试试下面的步骤:

  • branch1: git add .
  • branch1: git commit -m 'comments'
  • branch1: git push origin branch1

  • branch2: git pull origin branch1

  • branch1上:恢复到上一次提交。

你已经提交到BRANCH1,想要在不丢失更改的情况下摆脱这个提交? git重置是你需要的。 做的事:< / p >

git branch BRANCH2

如果你想让BRANCH2成为一个新的分支。如果你愿意,你也可以在最后将它与另一个分支合并。如果BRANCH2已经存在,则省略此步骤。

然后做:

git reset --hard HEAD~3

如果你想重置你已经提交的分支上的提交。这将使用最后三次提交的更改。

然后执行以下操作,将重置后的提交提交到BRANCH2

git checkout BRANCH2
这个来源是有帮助的: # EYZ0 < / p >

这很简单。假设你已经对分支一个做了更改,它位于本地和远程,但是你想把这些更改推到分支B,它不存在于任何地方。

Step-01:创建并切换到新的分支B

git checkout -b

在新的本地分支中添加更改

Git添加。//或指定文件

提交更改

Git commit -m commit_message

将更改推到新分支B。下面的命令还将远程创建一个新分支B

git push origin B

现在,你可以从bitbucket中验证分支B将比分支一个多提交一次。当您签出分支一个时,这些更改将不存在,因为这些更改已被推入分支B

如果你已经将你的更改提交到分支一个中,之后你想要将这些更改转移到新的分支B中,那么你必须首先重置这些更改。# HappyLearning

这很容易做到

git status
git add .
git commit -m "any commit"
git pull origin master
git push origin master:development # assuming 'development' is the target branch name.

git init
#git remote remove origin
git remote add origin  <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete  branch1
#git branch --unset-upstream  

当您将代码推到另一个分支时,只需遵循下面的git命令。请记住演示是我的另一个分支名称,您可以将其替换为您的分支名称。

git push origin master:demo
  1. 在BRANCH1上提交更改。
  2. 打开终端,输入命令->git push <remote_name>& lt; branch1_name>: & lt; branch2_name>“

完成了。

对于这个问题: 命令为

# EYZ0

现在我意识到,GitHub桌面有很好的UI,可以将你的更改从一个分支带到另一个分支。当然,这不是一个比用手敲击终端命令更好的选择。

支持@SLaks的答案,这对我来说基本适用。但是在分支有不同头的情况下。一个方便的方法是使用樱桃。

  1. git log -在Branch1上进行更改
  2. 复制提交SHA您的更改
  3. git checkout branch2 -应用更改的位置
  4. # EYZ0