4

Github に git リポジトリがあり、Web サーバーに git リポジトリがあります。git pull origin masterGithub で行われた更新を取得するたびに、Your branch is ahead of 'origin/master' by 6 commits.面白いことに、Github から新しい変更を取得するたびに、数が 2 ずつ増えます! また、毎回「マージ」する必要があります。

これは、Web サーバーの .gitignore を更新し、無視した 2 つのファイルを削除した後に始まりました。.gitignore を更新し、Github リポジトリの 2 つのファイルも削除しました。

Git マスターの皆さん、なぜこのようなことが起こっているのでしょうか? どうすれば修正できますか?

4

1 に答える 1

10

これは、リモートに存在しないローカル マージ コミットを作成し続けるために発生しています。のデフォルトの動作はgit pull、新しい変更をマージすることであり、それを続けていますが、マージをプッシュしたことはありません。あなたの履歴はおそらく次のようになります。

                    o - [master]
                   /|
[origin/master] - o o
                  |/|
                  o o
                  |/|
                  o o
                  |/|
                  o o
                  |/|
                  o o
                  |/
                  o
                  |
                  o

それらすべてのマージ コミットを確認しますか? 実行するたびにgit pull、新しいものを作成しました。

ここでの解決策は、ローカル コミットをどのように処理するかを理解することです。サーバーと github リポジトリを更新したと言うとき、それらを個別に更新しましたか? その場合、同じ変更を表す 2 つの異なるコミットを作成しました。この場合git reset origin/master、ローカル マージを取り除くことができます。

一方、ローカル コミットが実際には github リポジトリにあるものを表していない場合は、それを保持するか削除するかを決定する必要があります。それを取り除きたい場合は、同じを使用してgit reset origin/masterください。保持したい場合git rebase origin/masterは、履歴の先頭にプルしてからサーバーにプッシュすることをお勧めします。

于 2013-03-04T23:53:20.957 に答える