重新定位分支机构

Retargeting a branch

提问人:anyaolson 提问时间:11/6/2023 更新时间:11/7/2023 访问量:91

问:

我是git的新手。我有一个主分支,它有几个分支,例如 branch1、branch2、branch3 等。我从 branch1 中签出了一个功能分支,并进行了一些更改。我还没有提交或推送我的更改,但由于我开始票证已经有一段时间了,我现在应该改为针对 branch3。我该怎么做?我只需要将 PR 重新定位到 bitbucket 上的 branch3,还是必须在 git 中做一些事情?

我对这是否需要在 git 中进行任何更改,或者我是否只需要在 bitbucket 中重新定位感到困惑。

git 位桶

评论

1赞 Sergio Tulentsev 11/6/2023
“我还没有提交我的更改”——在这些情况下,我会通过藏匿处。git stash; git checkout branch3; git stash pop
0赞 Sergio Tulentsev 11/6/2023
但是,硬重置@RomainValeri会丢失未提交的更改吗?
0赞 Romain Valeri 11/6/2023
@SergioTulentsev 你是对的,我没有注意到 OP 没有提到待处理的更改。此外,藏匿在这里毫无用处。只需结帐即可。如果由于分支之间的文件更改而无法实现,git 会建议存储,但默认情况下没有必要。
1赞 knittl 11/7/2023
“我还没有做出任何承诺”和“我应该重新定位公关”不能放在一起。要么你在 PR 中提交了任何内容,要么你没有提交任何内容。你不能同时拥有两者。
1赞 knittl 11/7/2023
这是否回答了您的问题:stackoverflow.com/questions/1394797/...

答:

0赞 Tim Biegeleisen 11/7/2023 #1

您可以简单地从正确的基本分支创建并检出所需的功能分支:

# from branch1
git checkout -b your_feature branch3
# work work work

当您创建预期的功能分支时,您的未提交工作将愉快地坐在那里。请注意 的 2 参数形式,其中第一个分支是要创建的分支,第二个分支是源分支(不是当前分支)。git checkoutbranch1

评论

1赞 matt 11/7/2023
我建议我们不要告诉初学者使用 .它被更乖巧的人所取代.所以这里的命令是 ,我相信(我认为小写会失败,因为分支已经存在)。git checkoutgit switchgit switch -C your_feature branch3git switch -cc
0赞 anyaolson 11/9/2023
所以我会在分支 1 之外执行此操作,对吗?为什么?如果我在功能分支之外执行此操作会发生什么?只是想了解它是如何工作的。
0赞 Tim Biegeleisen 11/9/2023
我的答案创建了一个新分支作为起点,它也会切换到该新分支。它应该在任何起始分支中正常工作。your_featurebranch3
0赞 anyaolson 11/9/2023
好吧,有道理。我这样做了,但它说“featureBranch 领先 featureBranch 100 次提交”。这是因为 branch3 有 branch1 没有的更改吗?
0赞 Arthur Khazbs 11/7/2023 #2

由于您尚未提交更改,因此只需使用 git-switch 将当前分支切换到现有目标分支,如下所示:

git switch branch3

然后,您可以提交更改并将分支推送到 BitBucket。

如果您已经有一个空的 PR 来合并 branch1,您应该关闭它并打开一个新的 PR 来合并 branch3