gpt4 book ai didi

git - 为什么 git 不知道我 merge 了?有没有办法告诉它?

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

我正在使用 git-svn;我通常会创建一个主题分支,对其进行提交,然后是 checkout master、git svn rebase、git merge --squash topic_branch、git commit -m "summary comment",然后是 git svn dcommit。

工作正常,但 git 似乎不知道我将分支更改 merge 到 master 中。我在没有涉及 svn 的情况下尝试了这个:

# Make a repository, add a couple files
$ mkdir gittest
$ cd gittest
$ git init
$ touch foo bar
$ git add .
$ git commit -m "initial version"

# Make a branch, change a file, commit.
$ git checkout -b a_branch
$ vi foo # make a change
$ git commit -am "a change"

# Merge changes into master
$ git checkout master
$ git merge --squash a_branch
$ git commit -m "merged a_branch"

和 gitk --all 显示了这个,这表明它不是 git-svn 问题:

gitk picture showing apparently unmerged branch
(来源:selfamusementpark.com)

在我的主要 (git-svn) 项目中,我看到一些早期的更改似乎已经 merge ,但我不知道我现在所做的与当时没有做的有什么不同。 (如果重要的话,这是 Ubuntu Jaunty 上的 git 1.6.0.4。)

最佳答案

我认为这是因为您使用了--squash。我不确定你为什么这样做,但你不需要这样做。来自 git merge 的 --squash 文档:

Produce the working tree and index state as if a real merge happened, but do not actually make a commit or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit command to create a merge commit. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus).

基本上,您需要进行“适当的” merge 。 Squashing 似乎有一个相当具体的使用场景(我从未有过,所以我不能真正评论它的为什么有用)。我猜想如果你不想让分支树看起来很乱,如果你在一个分支中做了一些工作,然后决定将它 merge 到一个你正在做更多总体工作的不同分支中.

关于git - 为什么 git 不知道我 merge 了?有没有办法告诉它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901980/

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