合并并删除git中的远程分支
我使用合并并删除git中的远程分支,git,Git,我使用gitsvn将主干和分支从svn导入git。我把它们都放在git里了,但是树枝是独立的,没有指向树干。以下是它的图形外观: a<--b<--c<--d \ \ \ (master)(remotes/trunk) \ (remotes/feature1) a<--b<--c<--d<--e \
gitsvn
将主干和分支从svn导入git。我把它们都放在git里了,但是树枝是独立的,没有指向树干。以下是它的图形外观:
a<--b<--c<--d
\ \
\ (master)(remotes/trunk)
\
(remotes/feature1)
a<--b<--c<--d<--e
\
(remotes/branches/feature1)
a注意,在第二张图中,您将以e'而不是e结束。任何时候你改变亲子关系,你会得到一个新的sha,即使介绍的内容是相同的
我猜你只是在本地回购协议中胡编乱造,不需要在上游进行更改?如果是这种情况,那么您可以选择cherry-pick来移动sha,然后对分支指针执行一些强制更新
git checkout -b new_feature1
git cherry-pick e
git update-ref remotes/feature1 HEAD
git update-ref -d remotes/branches/feature1
如果你真的需要在遥控器上进行更改,那么你肯定不想做update-ref。你必须做git push-f new\u feature1:feature1
和git push--delete
。我不知道git svn是如何工作的。您是否有两个存储库,其中“master”表示本地分支,“remotes/feature1”表示来自远程分支的引用?或者它们都是本地分支?在git svn进行导入之后,它们位于同一个本地存储库中。带有remotes前缀的分支被列为远程分支,可以使用git branch-r
列出。好的-当您说“删除远程/分支/功能1”时,您指的是此存储库中的引用,并注意实际远程上的引用?我想是的,没错。我用樱桃采摘。
git checkout -b new_feature1
git cherry-pick e
git update-ref remotes/feature1 HEAD
git update-ref -d remotes/branches/feature1