是否可以将更改从一个分支提交到另一个分支。
假设我在 BRANCH1 中提交了更改,并希望将其推送到 BRANCH2 。
从 BRANCH1 ,是否有效:
git push origin **BRANCH2**
然后重置BRANCH1?
答案 0 :(得分:551)
这几乎可以奏效。
当推送到非默认分支时,您需要指定源ref和目标ref:
git push origin branch1:branch2
或者
git push <remote> <branch with new changes>:<branch you are pushing to>
答案 1 :(得分:58)
当然,虽然只有当它是BRANCH2的快速前进或强迫它时它才会起作用。执行此类操作的正确语法是
git push <remote> <source branch>:<dest branch>
有关其工作原理的详细信息,请参阅git push man page上“refspec”的说明。另请注意,强制推送和重置都是“重写历史记录”的操作,除非您完全确定知道自己在处理任何远程存储库和其他存储库方面做了什么,否则不应该被胆小的人尝试。有同一项目的分叉/克隆的人。
答案 2 :(得分:5)
这很简单。假设您已对位于本地和远程位置的分支机构 A 进行了更改,但您想将这些更改推送到任何地方都不存在的分支机构 B 。 / p>
步骤01:创建并切换到新分支 B
git checkout -b B
步骤02:在新的本地分支中添加更改
git add。 //或特定文件
步骤03:提交更改
git commit -m“ commit_message”
步骤04::将更改推送到新分支 B 。以下命令将远程创建一个新分支 B
git push origin B
现在,您可以从bitbucket验证分支 B 的提交将比分支 A 多。当您结帐 A 分支时,这些更改将不存在,因为这些更改已被推入分支 B 。
注意:如果您已将更改提交到分支 A 中,然后将这些更改转移到新的分支 B 中,那么您将必须首先重置这些更改。 #HappyLearning
答案 3 :(得分:2)
在我的情况下,我有一个本地提交,但没有推送到origin\master
,而是提交到我的本地master
分支。现在应该将此本地提交推送到另一个分支。
使用 Git Extensions ,您可以执行以下操作:
您也可以在 GIT命令行上执行此操作。从David Christensen复制的示例:
我认为你会发现
git cherry-pick
+git reset
很多 更快的工作流程:使用相同的场景,将“feature”作为分支 最顶层的提交不正确,这样做会容易得多:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
保存了相当多的工作,并且是
git cherry-pick
的方案 旨在处理。我还要注意,如果它不是最顶层的话,这也会有效 承诺;你只需要承诺挑选樱桃, 通过:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
答案 4 :(得分:2)
当您将代码推送到另一个分支时,只需遵循以下git命令。记住 demo 是我的其他分支名称,您可以用您的分支名称替换。
git push origin master:demo
答案 5 :(得分:1)
我用git push origin branch1:branch2
命令得到了不好的结果:
就我而言,branch2
已删除,branch1
已进行了新更改。
因此,如果您只希望将更改从branch2
推到branch1
,请尝试以下步骤:
branch1
上:git add .
branch1
上:git commit -m 'comments'
在branch1
上:git push origin branch1
在branch2
上:git pull origin branch1
在branch1
上:恢复为上一次提交。
答案 6 :(得分:0)
您已承诺使用BRANCH1,并希望在不丢失更改的情况下摆脱此承诺? 您需要 git reset 。 做:
git branch BRANCH2
如果您希望BRANCH2成为新分支。如果需要,还可以在最后将其与另一个分支合并。如果BRANCH2已经存在,则不执行此步骤。
然后做:
git reset --hard HEAD~3
如果要在已提交的分支上重置提交。这将对最后三个提交进行更改。
然后执行以下操作以将重置的提交提交给BRANCH2
git checkout BRANCH2
此来源很有帮助: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
答案 7 :(得分:0)
您可以轻松做到这一点
git status
git add .
git commit -m "any commit"
git pull origin (branch name, master in my case)
git push origin current branch(master):branch 2(development)(in which you want to push changes)
答案 8 :(得分:-1)
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