1

git:あなたのブランチはXコミットで先行しています

Gitブランチはオリジン/マスターよりも進んでいます

上記の両方の質問を読みましたが、それでも私の質問に答えられません。基本的に私がしたことは

  1. GitHubに新しいリポジトリを作成します。
  2. クローンを作成して、ローカルのLinuxボックスにデータを取得します
  3. 変更を加えて「gitadd」を実行してから「gitcommit-m」メッセージを実行します
  4. 最後に「gitpushhttps ://github.com/username/sandbox.git」を実行します。これは正常に機能し、SSHプロトコルの代わりに推奨されるhttpsプロトコルを使用します(「gitpush」だけを実行すると、まだ構成していないSSHプロトコルが使用され、失敗することに注意してください)
  5. 「gitpullhttps ://github.com/username/sandbox.git 」と「git fetch https://github.com/username/sandbox.git 」を実行すると、すべて「Alreadyup- todate」と正常に実行されました。 。
  6. githubのWebサイトにアクセスすると、変更を確認できます。
  7. 「gitstatus」を実行すると、次のように表示されます

    ブランチマスター
    の場合ブランチは「origin/master」より9コミット進んでいます。

これは私が期待したものではありませんでした。gitが私がオリジン/マスターより9コミット進んでいると考える理由を誰かに教えてもらえますか?データをプッシュおよびプルしたので、ローカルリポジトリがリモートマスター/オリジンリポジトリと完全に同期していると期待します。

コマンド「gitbranch-av」は次のように表示されます

 * master                a99daf0 [ahead 9] submit
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master 81c7ec1 remove out files
4

2 に答える 2

2

現在のブランチに独自のパッチをコミットしているため、origin/masterよりも進んでいます。

これは次のように表示できます。

$ git branch -av
master         0123abcd [ahead 9] Current commit comment

この理由は、ローカルブランチが独自のプライベートコピーであり、実際にはオリジン/マスターと同じではないためです。ローカルブランチmasterはを追跡するように設定されていますがorigin/master。したがって、gitは2つのブランチの違いを通知します。

上記のコマンドは、のポイントを示し、のmaster別のエントリが表示されorigin/masterます。

ここで、次にpushaを実行した場合、現在のcommit-id(に表示)は同じである必要があります。そうでない場合は、なぜそうしないのかを理解する必要があります。多分:fetchpullgit branch -av

$ git log origin/master..master   # this can help explain ?  OR...
$ git diff origin/master..master  # this can help explain

githubのHTTP/ブラウザを介して表示されるcommit-idが、からのブランチで報告されたものと同じcommit-idであることを確認してくださいgit branch -av

違いがないことが判明した場合は、いつでもcheckout新しいブランチに切り替えてから、git branch -d masterデフォルトで古いマスターブランチを削除しようとすると、失われるパッチがある場合は許可されません(パッチが失われていないため)マージされ、アップストリームマスターにプッシュされます)。

ブランチを削除できない場合。gitに、2つのブランチが同じヘリテージを共有するcommit-idを教えてもらうことができます(「どちらも同じバージョンとして開始されましたが、いつですか?」)。

$ git merge-base origin/master master

これにより、2つのブランチが共有する最後のコミットが表示されます。その時点から、各ブランチは独自の方法で分岐しました。そのcommit-idを取得して、ログ出力を比較できます。

$ git log <commit-id>..<branch_name> --oneline
$ git log <commit-id>..<other_branch_name> --oneline

これで、それらがどのように異なるかを確認できます。

于 2012-09-22T23:40:08.450 に答える
0

初心者として私が実際に必要としていたのは、「Mims H Wright」で説明されている答えでした。gitで元の場所/マスターの場所を見つけるにはどうすればよいですか。また、それを変更するにはどうすればよいですか。これは最終的にリンクhttp://fvue.nl/wiki/Git%3a_Your_branch_is_ahead_of_the_tracked_remote_branchを指します。

基本的に私はしなければなりませんでした

git push origin master:master
于 2012-09-28T08:27:56.607 に答える