我有权直接推送到掌握,但在我的团队中我们遵循更礼貌的机制:
git pull
git checkout -b myBranch
git merge master
git push origin myBranch --force
但是我想知道是否有更直接的方式来说"我不再需要myBranch的本地副本,只是表现得像是一个新的分支,也是用于远程"
我已经阅读了Can I destroy and recreate a Git remote branch in one command?,我可以通过远程删除来解决这个问题,但是这一点让我感到不安。
编辑:此外,如果目前的工作方式导致同步错误,我想知道
答案 0 :(得分:4)
我不再需要
myBranch
的本地副本了,就好像它是一个新的分支,也是远程的
如果您只想从当前主人那里获得一个全新的分支myBranch
(失去myBranch
的所有历史记录):
git fetch
git checkout -B mybranch origin/master
该命令将重置您的分支:来自git checkout
:
如果给出
-B
,则创建<new_branch>
(如果它不存在);否则,重置 这是交易相当于:
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
然后:
# work
# Before pushing, make sure you are up-to-date
git fetch
git rebase origin/master
git push --force -u origin myBranch
远程分支将重置为新的myBranch
历史记录。
答案 1 :(得分:2)
根据您所包含的初始步骤以及您的评论,以下是我将从新功能或错误修复开始时采取的步骤:
git checkout master
git pull
git checkout -b myBranch
... do work ... add/commit/etc
... periodically when you want to get the latest from master...
git fetch
git rebase origin/master
git push --force origin myBranch
在rebase步骤中,当然您可能会遇到代码冲突,就像合并一样。解决这些冲突的过程将非常相似。 Git提供了有关如何继续执行这些步骤的说明。
因此,这些步骤与您最初发布的步骤非常相似,但是rebase将使您的历史更清晰(与合并相反),因为它可以防止无意义的合并提交。
答案 2 :(得分:0)