gpt4 book ai didi

git - 如果我忘记在 merge 前执行 git svn rebase 怎么办?

转载 作者:太空狗 更新时间:2023-10-29 14:15:10 28 4
gpt4 key购买 nike

我正在使用 git-svn 并且一直在为一系列提交在本地主题分支上工作,并且在将我的更改 merge 回 master 时遇到了一些麻烦。

这些是让我到达现在位置的步骤:

git commit  (on topic branch)
git checkout master
git svn fetch (numerous files pulled down from origin)
git merge <topic branch>

此时我有一个 merge 冲突,我修复了它然后执行了 git add <file>添加我的固定文件。

现在我的git status报告所有文件(包括从服务器获取的所有文件)都是要提交的更改。我忘了做 git svn rebase我认为这是我的问题。

总的来说,我是一个相当新的 git,所以我什至不确定我所看到的是否是预期的行为,但它看起来很可疑。我忘记了吗git svn reabse惹我麻烦?我该怎么做才能摆脱这种潜在的困惑局面?

最佳答案

假设你正在使用 trunk,丢弃你的 merge 提交

git reset --hard remotes/trunk

跟上 Subversion 的任何变化

git svn fetch
git svn rebase

现在您有两个选择。您可以将主题分支上的工作 rebase 并 merge 它:

git checkout <topic branch>
git rebase remotes/trunk
git checkout master
git reset --hard remotes/trunk
git merge <topic branch>
git svn dcommit

您可能更喜欢 squash-merge,这意味着将一个分支上的所有更改 merge 到一个提交中。如上所述丢弃、获取和 rebase ,然后

git merge --squash <topic branch>

干净的 merge 将转到您可以查看的索引

git diff --cached

任何冲突都将留在工作树中,您可以通过

查看它们
git diff

解决任何冲突,使用 git add 暂存它们,然后 git commit 来结束你的新提交。

关于git - 如果我忘记在 merge 前执行 git svn rebase 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14311594/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com