是否有可能将变更从一个分支提交到另一个分支。
假设我在BRANCH1中提交了更改,并希望将它们推到BRANCH2中。
从BRANCH1开始,执行以下操作是否有效:
git push origin **BRANCH2**
然后重置BRANCH1?
当然,尽管它只在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分支。这个本地提交现在应该推到另一个分支。
origin\master
master
使用Git扩展,你可以这样做:
你也可以在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 cherry-pick
git reset
使用相同的场景,“feature”是带有 如果Top-most提交不正确,那么这样做会容易得多:
节省了相当多的工作,是git cherry-pick . #的场景
我用git push origin branch1:branch2命令得到了一个糟糕的结果:
在我的例子中,branch2被删除了,branch1已经更新了一些新的更改。
branch2
branch1
因此,如果你只想要从branch1推到branch2上的更改,试试下面的步骤:
git add .
git commit -m 'comments'
branch1: git push origin branch1
git push origin branch1
branch2: git pull origin branch1
git pull origin branch1
在branch1上:恢复到上一次提交。
你已经提交到BRANCH1,想要在不丢失更改的情况下摆脱这个提交? git重置是你需要的。 做的事:< / p >
git branch BRANCH2
如果你想让BRANCH2成为一个新的分支。如果你愿意,你也可以在最后将它与另一个分支合并。如果BRANCH2已经存在,则省略此步骤。
然后做:
git reset --hard HEAD~3
如果你想重置你已经提交的分支上的提交。这将使用最后三次提交的更改。
然后执行以下操作,将重置后的提交提交到BRANCH2
git checkout BRANCH2
这很简单。假设你已经对分支一个做了更改,它位于本地和远程,但是你想把这些更改推到分支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
完成了。
对于这个问题: 命令为
# EYZ0
现在我意识到,GitHub桌面有很好的UI,可以将你的更改从一个分支带到另一个分支。当然,这不是一个比用手敲击终端命令更好的选择。
支持@SLaks的答案,这对我来说基本适用。但是在分支有不同头的情况下。一个方便的方法是使用樱桃。
git log
git checkout branch2