7

皆さん、

これは私には意味をなさないgitの何かです、これが何が起こるかです

  • 実行しgit statusます。ブランチマスターを使用していて、コミットするものがなく、作業ディレクトリがクリーンであることがわかります。
  • 次にgit pull origin master、大量のコードをプルしますが、問題はありません。
  • 今、私がgit status新しい行を見ると、あなたのブランチは1コミットだけorigin/masterより進んでいます

私のローカルリポジトリとリモートリポジトリは完全に同期しています。あなたのブランチは1コミットでオリジン/マスターよりも進んでいます。これは非常に混乱します。

4

4 に答える 4

9

私はあなたが見ているものを正確に経験しました。git-scm.comで適切な説明を見つけることができませんが、次のようなものだと思います。

  1. オリジンからリポジトリのクローンを作成します。オリジンにマスターがあり、ローカルリポジトリにマスターがあるとします。
  2. これで、originとリポジトリに最後のコミットへの参照があります。この参照はマスターブランチであり、参照はローカルリポジトリとオリジンで同じです
  3. 誰か(あなた以外)がオリジンマスターに新しいコミットをプッシュするとしましょう
  4. あなたがやるgit pull origin master
  5. これgit statusで、ローカルリポジトリに新しいコミットがなく、プッシュするものがない場合でも、ブランチがオリジン/マスターよりも進んでいることがわかります。(この例では、ステップ1(クローン作成)以降、ローカルで新しいものをコミットしていません)

git pull origin==>マスターにいるときにを実行してこれを修正します。

Agit pull origin masterは、すべての新しいコミットをオリジンのブランチからローカルブランチにプルします。

Agit pull originはまた、マスターへの参照を、マスターがオリジンで参照されているコミットと同じにリセットします!! (これが起こらなかった場合、git-bashはあなたが先にたくさんのコミットをしていると思います!コミットツリーには、マスター参照があるコミットの後にたくさんのコミットが行われるからです!)

これはあなたに何か意味がありますか?それは私になります:)

また、確かな証拠/文書で私の考えを少しサポートしてください:)

于 2013-03-22T14:40:15.510 に答える
4

まだリモートサーバーに送信されていないローカルマシンにコミットを追加しました。

変更をリモートリポジトリと共有する必要があると確信している場合、コミットをリモートに送信するには、次のgit pushコマンドを使用します。

git push orgin master:master
于 2013-03-22T13:26:53.503 に答える
1

あなたが考えているように、あなたはリモートリポジトリと100%同期していません。はい、リモートリポジトリからすべてを持っています。ただし、ローカルマスターは1回のコミットでオリジン/マスターよりも進んでいます。

これを実行して、結果を表示します。

git log --all --graph --pretty=format:'%h %d %s'

私は次のようなものを見ることを期待しています:

* (master) Commit D
* (origin/master) Commit C
* Commit B
* Commit A

私があなたの投稿を正しく読んでいる場合、リモートブランチがCにあるのに対し、Dがあるため、コミットは1つ先になりgit pushます。コミットDをリモートリポジトリにプッシュする必要があります。そうすれば、100%同期します。

于 2013-03-22T14:49:57.540 に答える
0

実際には、ローカルブランチとリモートブランチが同期していると想定しています。ローカルブランチがオリジン/マスターより1コミット進んでいると言っている場合は、確かにそうです。私たちは皆GITを信頼しています。

これを使用してテストします。

git checkout master // You move to master branch
cat .git/HEAD //shows the commit on which HEAD is pointing to

git checkout origin/master //you switch to origin master branch
cat .git/HEAD 

ローカルマスターとリモートマスターブランチのHEADが同じコミットを指している場合は、両方が同期しています。

ローカルブランチが1つのコミットよりも進んでいる場合は、(必要に応じて)リモートブランチに次のようにプッシュします。

git push origin master
于 2013-03-22T14:20:29.957 に答える