2016-11-15 17 views
0

最初のコミット(およびプッシュ)後にいくつかの行が変更された場合の競合が発生することがよくあります。誰も、なぜ、どのようにこれを避けるために教えてもらえますか?単一の行を修正するときのGitの競合

は、私がコミットし、新しい機能

git commit -am 'my new feature' 
git push origin development 

を押して、私は小さなバグ(単線)

git commit -am 'Bugfix' 

に気づくしかし、gitのは、私がプッシュする前に引っ張るものと述べています。

git pull origin development 

結果:最初のコミット後に変更された行に競合が発生しました。これは本当に頻繁に起こります。そして、それは古い変更の前に私の新しい変更が優先されるべきであるので、矛盾なく動作するはずです。

いいえ他の誰かが同じファイルをコミットしているわけではありません。フィーチャーブランチは私によって維持されます。私たちはgithubを使用します。

もう1つは、競合を解決した後、NetBeansは空のコミットを強制しました。ファイルが変更されていないことがわかりましたが、私は完了する必要があると言いました。

ラインの最初のバージョン:

$duedate = $dateObject->format('%d.%m.%Y'); 

と固定バージョン

$duedate = $dateObject->format('d.m.Y'); 

多分それが正常に終了しなかったリベースとは何かを持っていますか?

編集:2つのプッシュの間に短い時間(最大1分)がある場合、この現象が観察されました。たぶん非同期クロックやgithubキャッシュのプッシュによるものでしょうか?

+2

間違っている必要があります。他の人がそれを変更しました。リモートブランチとローカルブランチが同じ場合は、競合することはできません。 'git log -1 dev'と' git fetch && git log -1 origin/dev'を実行してください。 sha-1は同じですか?そうでなければ、他の人が支店を変更しました。 – Alderath

+1

あなたはどのような正確な争いをしていますか?行末と関係がありますか? – Jubobs

+0

彼らは同じです!上記の紛争に関する情報を追加しました。 – Corni

答えて

0

コマンドを教えて。これは、すでにリポジトリにプッシュされている別のコミットにコミットを修正するときに発生します。コミットがあなたのローカルリポジトリにのみある場合にのみ、修正を使用するべきです。私はなぜgitのクライアントがここで警告するのかわかりませんが、ほとんどすべてのケースで問題を引き起こします。

0

これは、他の誰かがあなたがそれを押した後に同じブランチをプッシュしたことを意味します。 GITはコラボレーションツールなので、このようなユースケースは非常に頻繁に必要になるはずです。

+0

私は同僚に尋ねました。彼は約束しなかった。この機能ブランチは私によってのみ管理されています。 – Corni

+1

git logを実行するか、サーバーのUI(どのサーバーを使用していますか?)のブランチヒストリを確認すると、何が起こったのかを簡単に確認できます。 – yorammi

0

git push && git pullは誰もが何かをプッシュしていなければ、等価です。

このため、git push && git -am 'my commit && git pullはマージ競合になることはありません。リモートサーバーと同じオブジェクトをすべて持っているので、git pullは新しいものを導入すべきではありません。

したがって、誰かが新しいコミットを追加したり、コミットを変更したりしています。

あなたの同僚がその支店を押していないと主張していますか?だから私はある種の自動化を疑う。 サーバーサイドフックを使用していますか?

、より多くの情報を得る行うには:

git commit -am "whatever" 
git log -1 
git push origin development 
<change something? 
git commit -am "more whatever" 
git pull 
git log -3 

との両方のログの出力は、我々は答えを見つけた

+0

githubではなく、サーバー上でフックを使用します。サーバはプッシュ・ツー・デプロイとして設定され、別のリポジトリ( 'origin'ではなく)として追加されます – Corni

+0

他のコミットがあるのでログを表示するのは難しいです。クロックの同期不良が原因かもしれないのでしょうか?または、githubキャッシュは(負荷のために)プッシュしますか? – Corni

+0

この問題は繰り返し可能ですか?それとも一度起こったのだろうか?私はそれが定期的に起こるというOPからの感情を得た。したがって、上記のテクニックを使用してそれを繰り返すことができれば、ログにはあなたの「テスト」コミットだけが表示されるはずです。 (あなたの同僚がすべてコミットを左右に叩いていない限り、10分押すのをやめてください): – Pod

関連する問題