假设我在`BRANCH1`中提交了更改,并希望将它们推送到`BRANCH2`。
从`BRANCH1`,可以这样做吗:
git push origin BRANCH2
然后重置
BRANCH1
吗?git push origin BRANCH2
BRANCH1
吗?那几乎可以工作。
当推送到非默认分支时,您需要指定源参考和目标参考:
git push origin branch1:branch2
或者
git push <remote> <branch with new changes>:<branch you are pushing to>
当然,只有在BRANCH2进行快速转发或者你强制执行时才能起作用。执行此操作的正确语法为
git push <remote> <source branch>:<dest branch>
请参考git push手册页中的“refspec”描述,了解其更详细的工作方式。同时请注意,强制推送和重置都是“重写历史记录”的操作,除非您非常确定您对任何远程存储库以及拥有相同项目分支/克隆的其他人所做的所有更改都完全了解,否则不建议脆弱胆怯的人尝试这两个操作。
git push --force remote local-branch:remote-branch
命令来强制推送。请注意保持意思不变,使语言易于理解,但请勿添加任何额外的解释或内容。 - Ferran Maylinch非常简单。假设您已经对所在的分支A进行了更改,该分支同时存在于本地和远程,但您希望将这些更改推送到不存在任何地方的分支B。
步骤1:创建并切换到新分支B
git checkout -b B
步骤2:将更改添加到新的本地分支
git add . //或特定文件
步骤3:提交更改
git commit -m "commit_message"
步骤4:将更改推送到新分支B。下面的命令还会在远程创建一个新的分支B
git push origin B
现在,您可以从Bitbucket验证,分支B将比分支A多一个提交。当您切换到分支A时,这些更改将不会存在,因为它们已被推送到B分支。
注意:如果您已将更改提交到分支A,并且之后您想将这些更改移动到新分支B,则必须首先重置这些更改。#快乐学习
完成。
对于这个问题:
该命令为
git push origin BRANCH1:BRANCH2
编辑:现在我意识到,GitHub Desktop具有很好的用户界面,可以将您的更改从一个分支带到另一个分支。 当然,与手动在终端中输入命令相比,这不是一个好选项。
我使用 git push origin branch1:branch2
命令时遇到了问题:
在我的情况下,branch2
被删除且 branch1
已经被更新了一些新的更改。
因此,如果你只想将 branch1
上对 branch2
的更改推送到远程 branch2
中,请尝试以下步骤:
branch1
上执行:git add .
branch1
上执行:git commit -m 'comments'
在 branch1
上执行:git push origin branch1
在 branch2
上执行:git pull origin branch1
在 branch1
上:回滚到以前的提交。
git checkout <先前的SHA代码>
即可。 - Benyamin Jafari感谢@SLaks的答案,对我来说基本适用。但在分支具有不同的头时,一个方便的方法是使用cherry-pick。
git log
- 查看你修改过的Branch1的提交记录git checkout branch2
- 切换到要应用更改的分支git cherry-pick SHA_OF_COMMIT_FROM_STEP_2
origin\master
,但是提交到了我的本地master
分支。现在应该将此本地提交推送到另一个分支。git cherry-pick
+git reset
能够更快地完成工作流程: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 ... #从历史记录中删除特定的提交
如果你想把代码推送到另一个分支,请按照下面的git命令操作。记住,demo是我创建的另一个分支名称,你可以替换为你自己的分支名称。
git push origin master:demo
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
branch1
和branch2
都放到远程吗?如果想要将本地的branch1
推送到远程的origin branch2
,该怎么办? - orad<remote>/<branch>
。 - SLaksgit push origin :branch2
的人认为这只是将当前本地分支推送到远程branch2
,实际上会删除远程的branch2
!正确的方法是git push origin HEAD:branch2
。 - Helder Pereira