[解決済み】上流に変更があるのに、git status がブランチを最新と表示するのはなぜですか?
質問
上流のtrackedブランチに変更があるにもかかわらず
git status
は、私のローカルブランチが最新であることを示します。 これは新しい動作なのでしょうか、それとも私が設定を変更したのでしょうか、それとも何か問題があるのでしょうか?
ありがとうございました。
ubuntu@host:/my/repo# git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
ubuntu@host:/my/repo# git pull
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (11/11), done.
From bitbucket.org:my/repo
1234567..abcdefg master -> origin/master
Updating 1234567..abcdefg
Fast-forward
file1 | 1 -
file2 | 43 +++++++++++++++++++++++++++++++++++++++++++
file3 | 21 ++++++++++++---------
file4 | 21 ++++++++++++---------
4 files changed, 67 insertions(+), 19 deletions(-)
create mode 100644 file5
解決方法は?
ステータスが教えてくれるのは、あなたが「ref」という名前の後ろにいることです。
origin/master
これは、あなたのローカルリポジトリのローカルリファレンスである
. この場合、この参照は、あるリモートのブランチを追跡することになります。
origin
しかし、このステータスはリモートのブランチについて何も教えてくれません。しかし、ステータスはリモートのブランチについて何も教えてくれません。これは、ローカルのファイルシステムに保存されているコミット ID を教えてくれるものです (この場合、通常は
.git/refs/remotes/origin/master
を使用します)。
git pull
は2つの操作を行います。
git fetch
を更新し、リモートリポジトリのコミットを最新にします)。
origin/master
を実行した後、ローカルレポの
git merge
を実行して、それらのコミットを現在のブランチにマージします。
を実行するまでは
fetch
ステップ(単体または
git pull
) 上流に追加コミットがあることをローカルリポジトリが知る術はありません。
git status
はローカルの
origin/master
を参照してください。
いつ
git status
というのは、現在のブランチが追跡しているブランチが最新であることを意味します。
origin/master
となります。これは、前回
fetch
これは、「上流の最新のライブステータスを反映させる」こととは異なります。
なぜこのような仕組みになっているのでしょうか?それは
fetch
のステップは、潜在的に遅くて高価なネットワーク操作です。Gitの設計は(そして他の
分散型
バージョン管理システム
しかし、以下のコメントで指摘されているように、ここで混乱を引き起こしているGitのquot;リモート追跡ブランチ"のコンセプトは、すべてのDVCSで共有されているわけではありません)。中央サーバーに接続しないオフラインでGitを使うことは完全に可能であり、その場合の出力は
git status
が反映されます。
Gitにおけるブランチの作成と切り替え(およびその状態の確認)は軽量であるべきであり、中央集権的なシステムに対して遅いネットワーク操作を実行するようなものではありません。Gitを設計するときの前提、そして
git status
の出力は、ユーザーがこのことを理解していることを前提としていました(Gitの機能の多くは、すでにGitの仕組みを知っている場合にのみ意味をなすのです)。DVCSに馴染みのない多くのユーザーがGitを採用することで、この仮定は必ずしも有効ではありません。
関連
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] Git で、別のブランチの変更を選択的にマージしたり選択したりするにはどうすればよいですか?
-
[解決済み] Git master の未段階/未コミットの変更からブランチを作成する
-
[解決済み] 現在の変更点を含むGitブランチの作成
-
[解決済み] どの Git ブランチがどのリモート/アップストリームブランチを追跡しているかを確認するにはどうすればよいですか?
-
[解決済み] Gitサブモジュールを追加する際に、ブランチ/タグを指定するにはどうすればよいですか?
-
[解決済み] Git で master の変更をブランチに取り込む
-
[解決済み] ローカルの未コミットの変更を別のGitブランチにマージするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能
-
[解決済み] ローカルブランチ、ローカルトラッキングブランチ、リモートブランチ、リモートトラッキングブランチの違いは何ですか?