git 合并命令后的信息消息不明确
Ambiguous info message after git merge command
Mac 这里。 git 的新手。上周我从 development
(主线)中删除了一个功能分支(名为 feature/my-feature-1
,并让我的所有更改在本地工作。
我现在想在本地合并已提交给 development
的任何更改(自从我上周削减了我的功能分支)(包括解决任何合并冲突)然后将我的可合并功能分支推送到远程 git 服务器 (GitHub),这样我就可以创建一个没有合并冲突的 PR。
所以我提交所有最后的更改:
git add .
git commit -m "Final changes"
那我换成development
拉一下:
git checkout development
git pull
然后我切换回我的功能分支并尝试合并:
git checkout feature/my-feature-1
git merge development
似乎 vi
或 vim
在我的终端中打开,我看到以下消息:
Merge branch 'development' into feature/my-feature-1
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
这对我来说毫无意义!我不知道发生了什么:
- 它是否自动合并
development
到我的功能分支中并且没有发现冲突?
- 它会自动合并它可以自动合并的内容,但发现了冲突,现在由我手动 merge/resolve 它们了吗? (如果是,我如何查询 git 以查看这些冲突是什么?)
- 难道它根本就没有尝试进行任何合并吗? (如果是,为什么不呢?!)
所以这里有一些你需要知道的事情
合并
创建合并提交,带有自动消息
Merge branch 'XXX' into YYY
并且您可以根据需要更改消息。提交历史如下所示
变基
由于您从 master 分支中删除了 feature
分支,假设您提交了 F1
、F2
到功能分支和 D1
、D2
提交是在开发分支上完成的。现在如果你不想合并提交,那么你需要重新设置你的分支,这样它看起来就像是从 D2
中删除的而不是以前的开发负责人提交,做重新设置会将你的提交更改为 F3
, F4
并且由于您现在将基础提交设为 D2
,您可以进行快进合并。
如果您使用 github 并创建拉取请求,那么您的选择很少
第一个选项 Create a merge commit
是您通过命令行执行的操作。基本上它创建了一个新的合并提交
其他选项Squash and merge
,这会将您的所有提交合并为一个提交,然后将其添加到您要合并的分支中。这将通过 1 commit
转发基本分支
而 Rebase and merge
会做我在 rebase
中已经解释过的事情。这将根据您在功能分支中的提交次数转发基本分支。
希望这能解释您的疑问,如果没有,请随时发表评论,我会更新答案
这是合并分支的正常信息。您看到的 window 只是关于合并两个分支的注释。
要完成合并,只需执行以下操作(分号不是可选的):
[esc]
:wq
您可以将编辑器更改为不使用 vi/vim 并选择 nano 或其他编辑器。您可以随时使用软件进行合并,具体取决于您使用的 IDE 或 OS。
最好使用变基而不是合并来处理开发分支上的更改(然后合并更改以从功能开发)。
- 它是否自动将开发合并到我的功能分支中并且没有发现冲突?
是的,它成功地进行了合并并解决了所有可合并的冲突(如果有的话)。 vi 在 'git merge' 命令之后打开的事实就是它确实如此的证明。
- 它会自动合并它可以自动合并的内容,但发现了冲突,现在由我手动 merge/resolve 它们了吗? (如果是这样,我如何查询 git 以查看这些冲突是什么?)
没有发现任何冲突。如果它这样做了并且如果它不能自己合并它们,它就不会打开 vi,而是给出类似 "Conflicts found. Please resolve all conflicts and commit" 的消息。届时您将不得不担心解决冲突和提交问题。检查此 link 以了解如何解决冲突。
- 难道它根本就没有尝试进行任何合并吗? (如果是,为什么不呢?!)
它确实合并了,合并过程只是在等待您保存并退出才能完成。作为此特定 vi 屏幕上的提示,如果您想中止合并,或者不确定是否要继续进行任何更改,请删除所有行 (:1,$d),保存并退出。
Mac 这里。 git 的新手。上周我从 development
(主线)中删除了一个功能分支(名为 feature/my-feature-1
,并让我的所有更改在本地工作。
我现在想在本地合并已提交给 development
的任何更改(自从我上周削减了我的功能分支)(包括解决任何合并冲突)然后将我的可合并功能分支推送到远程 git 服务器 (GitHub),这样我就可以创建一个没有合并冲突的 PR。
所以我提交所有最后的更改:
git add .
git commit -m "Final changes"
那我换成development
拉一下:
git checkout development
git pull
然后我切换回我的功能分支并尝试合并:
git checkout feature/my-feature-1
git merge development
似乎 vi
或 vim
在我的终端中打开,我看到以下消息:
Merge branch 'development' into feature/my-feature-1
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
这对我来说毫无意义!我不知道发生了什么:
- 它是否自动合并
development
到我的功能分支中并且没有发现冲突? - 它会自动合并它可以自动合并的内容,但发现了冲突,现在由我手动 merge/resolve 它们了吗? (如果是,我如何查询 git 以查看这些冲突是什么?)
- 难道它根本就没有尝试进行任何合并吗? (如果是,为什么不呢?!)
所以这里有一些你需要知道的事情
合并
创建合并提交,带有自动消息
Merge branch 'XXX' into YYY
并且您可以根据需要更改消息。提交历史如下所示
变基
由于您从 master 分支中删除了 feature
分支,假设您提交了 F1
、F2
到功能分支和 D1
、D2
提交是在开发分支上完成的。现在如果你不想合并提交,那么你需要重新设置你的分支,这样它看起来就像是从 D2
中删除的而不是以前的开发负责人提交,做重新设置会将你的提交更改为 F3
, F4
并且由于您现在将基础提交设为 D2
,您可以进行快进合并。
如果您使用 github 并创建拉取请求,那么您的选择很少
第一个选项 Create a merge commit
是您通过命令行执行的操作。基本上它创建了一个新的合并提交
其他选项Squash and merge
,这会将您的所有提交合并为一个提交,然后将其添加到您要合并的分支中。这将通过 1 commit
而 Rebase and merge
会做我在 rebase
中已经解释过的事情。这将根据您在功能分支中的提交次数转发基本分支。
希望这能解释您的疑问,如果没有,请随时发表评论,我会更新答案
这是合并分支的正常信息。您看到的 window 只是关于合并两个分支的注释。
要完成合并,只需执行以下操作(分号不是可选的):
[esc]
:wq
您可以将编辑器更改为不使用 vi/vim 并选择 nano 或其他编辑器。您可以随时使用软件进行合并,具体取决于您使用的 IDE 或 OS。
最好使用变基而不是合并来处理开发分支上的更改(然后合并更改以从功能开发)。
- 它是否自动将开发合并到我的功能分支中并且没有发现冲突?
是的,它成功地进行了合并并解决了所有可合并的冲突(如果有的话)。 vi 在 'git merge' 命令之后打开的事实就是它确实如此的证明。
- 它会自动合并它可以自动合并的内容,但发现了冲突,现在由我手动 merge/resolve 它们了吗? (如果是这样,我如何查询 git 以查看这些冲突是什么?)
没有发现任何冲突。如果它这样做了并且如果它不能自己合并它们,它就不会打开 vi,而是给出类似 "Conflicts found. Please resolve all conflicts and commit" 的消息。届时您将不得不担心解决冲突和提交问题。检查此 link 以了解如何解决冲突。
- 难道它根本就没有尝试进行任何合并吗? (如果是,为什么不呢?!)
它确实合并了,合并过程只是在等待您保存并退出才能完成。作为此特定 vi 屏幕上的提示,如果您想中止合并,或者不确定是否要继续进行任何更改,请删除所有行 (:1,$d),保存并退出。