22

タイトルに全てが…

この質問を読みました: Viewing Unpushed Git Commits

git statusしかし、プッシュされていないすべてのコミットが master ブランチに表示されるのに、他のブランチには何も表示されない理由がわかりません。

誰かがそれを説明できますか?

編集

これが私がした/得たコマンドと出力です:

aurelien@server:/home/repo/$ git branch
  new_feature
* master

aurelien@server:/home/repo/$ git checkout new_feature
Switched to branch 'new_feature'

aurelien@server:/home/repo/$ echo test > newfile.txt
aurelien@server:/home/repo/$ git add newfile.txt
aurelien@server:/home/repo/$ git commit -m "Test commit"
[new_feature 51c6a64] Test commit
1 file added
aurelien@server:/home/repo/$ git status
# On branch new_feature
nothing added to commit

を使用しているときにコミットが表示されないのはなぜgit statusですか?

4

1 に答える 1

24

その理由は、ブランチが追跡するように設定されている origin/master 上に、マスター ブランチが実際にはリモート ブランチを持っているためです。

これが意味することは、master にコミットしてからgit statusgit を実行するたびに、ローカル ブランチとリモート ブランチの間でどのコミットが異なるかがわかります。

新しいブランチを作成するとき、デフォルトでは対応するリモート ブランチはありません。を実行すると、これを確認できますgit branch -a。設定されているすべてのリモート ブランチが表示されます。

そのため、次の 2 つのことが行われます。

1) ローカル ブランチ用のリモート ブランチがない 2) リモート ブランチからの変更を追跡するようにブランチが設定されていない

リモート ブランチを作成し、ローカル ブランチの追跡を設定する簡単な方法の 1 つは、ローカル ブランチをリモート ブランチにプッシュすることです。

git checkout new_feature
git push -u origin new_feature

通常、-uスイッチなしで単にプッシュすると、追跡は設定されませんが、ブランチは引き続きプッシュされます。しかし、-uスイッチを渡すと、リモート ブランチからの変更を追跡するようにブランチを設定することも git に伝えます。

これを行ってから変更を加えてコミットした後、git status「あなたのブランチは 1 コミットで origin/new_feature の先頭です」という期待される結果が得られます。

于 2013-06-06T08:44:02.023 に答える