4

コミットがマージされたと git が言う問題がありますが、コミットからの変更が作業ツリーにありません。さらに奇妙な git log --name-status 362dde7ことに、コミットがファイルを変更したことを教えてくれますが、コミット git log -- path/to/modified/file.javaは表示されません。例えば:

問題のコミットが dev ブランチと機能ブランチの両方に存在することを確認してください。

$ git branch --contains 362dde74f142831c99820b999558a2e8f49f66e8
* dev
  feature

コミットによって変更されたファイルを一覧表示します。

$ git show --name-status 362dde74f142831c99820b999558a2e8f49f66e8
# commit summary... #
M       path/to/modified/file.java

逆の手順を実行すると (ファイルを変更したコミットを一覧表示する)、コミットは一覧表示されません。

$ git log path/to/modified/file.java
# Commit 362dde7 isn't listed here

機能ブランチに切り替えて同じ手順に従うと、すべてが期待どおりに機能します。

$ git checkout feature
$ git show --name-status 362dde74f142831c99820b999558a2e8f49f66e8
# commit summary... #
M       path/to/modified/file.java
$ git log path/to/modified/file.java
362dde7 Commit summary

基本的に、同じコミットが と の両方devに存在しますが、作業ツリーの変更はチェックアウトしfeatureたときにのみ表示されます。featureなぜこれが起こっているのか、誰かが考えを持っていますか?

4

2 に答える 2

3
$ git init so19234836
Initialized empty Git repository in /tmp/g/so19234836/.git/
$ cd so19234836/
$ echo "content created" > file
$ git add file
$ git commit -m c1
[master (root-commit) a965818] c1
 1 file changed, 1 insertion(+)
 create mode 100644 file
$ git checkout -b feature
Switched to a new branch 'feature'
$ echo "feature change"> file
$ git commit -am f1
[feature eaf4121] f1
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git checkout master 
Switched to branch 'master'
$ git merge -s ours feature
Merge made by the 'ours' strategy.

今、私はレポの同様の状態を持っています:

$ git log file
commit a965818706c47d065b81a994aeb5fc24cd77d001
Author: Anatoly Kupriyanov <kan.izh@gmail.com>
Date:   Mon Oct 7 22:44:52 2013 +0100

    c1
$ git checkout feature 
Switched to branch 'feature'
$ git log file
commit eaf41212872d784d4e4e50e62167072d35b6167f
Author: Anatoly Kupriyanov <kan.izh@gmail.com>
Date:   Mon Oct 7 22:49:02 2013 +0100

    f1

commit a965818706c47d065b81a994aeb5fc24cd77d001
Author: Anatoly Kupriyanov <kan.izh@gmail.com>
Date:   Mon Oct 7 22:44:52 2013 +0100

    c1

$ git branch --contains eaf41212872d784d4e4e50e62167072d35b6167f
* feature
  master

したがって、基本的に、別のブランチからマージを行い、ファイルのマージ コミットの変更を元に戻すと、コンテンツは変更されませんが、マージされたコミットが履歴に表示されます。

于 2013-10-07T21:53:41.027 に答える