2011-07-31 3 views
5

私はgitの新しいユーザーです。これを回避する方法を理解できません。私はSVNでいくつかの経験があり、SVNの動作に慣れています。なぜ私はいつもgit pullで手動でマージする必要がありますか?

私はリモートリポジトリからファイルをプルし、変更したファイルもリモートで変更されるため、マージが必要です。複雑な変更のマージの競合を理解できますが、非常に小さい(たとえば、異なる機能の1つのラインの変更)変更のマージ競合が見られています。私が覚えている限り、SVNは自動的にそのほとんどをマージすることができ、自動マージが失敗した場合にのみファイルを競合状態にします。

gitの場合、git mergeツールを開くたびに強制的に実行されているようです。ファイルを自動的にマージする方法はありますか?私はいくつかの設定が欠けていますが、デフォルトではリポジトリを競合するセットに置いていますか?マニュアルから

+0

まだありますか?あなたは答えがあるかどうかを答え、含まれている質問に答えることができます。 (そして、答えがあなたの問題を解決するなら、チェックマークのアイコンをクリックしてそれを受け入れます) –

答えて

8

一般的な原因は異なる行末です。あなたは別のOSを使って他の誰かとレポを共有していますか? SVNは、行末のいくつかのmungingを行います。一方、Gitはデフォルトでファイルを正確に1バイトずつ格納します。つまり、Windowsユーザーが\ r \ n改行を含むファイルを保存し、Linuxユーザーが改行を使ってファイルを保存すると、すべての行が変更されたように見え、他の変更があればどこでも競合が発生します。行末の処理方法を変更するには、構成設定 "core.autocrlf"を使用します。

git config [--global] core.autocrlf input 

または実際

git config [--global] core.autocrlf true 

、私が言うと思います:別のOSのは、劇中であるレポでは、私はWindowsユーザーのためのLinuxユーザのための「入力」と「真」に設定するお勧めしますこれらの設定を常にグローバルに使用してください。彼らはあなたにいくつかの心を救うでしょう。 git-config man pageのcore.autocrlfについて詳しくは、この問題に悩まされていて、既存のリポジトリを使ってautocrlfを有効にすると、驚くべき動作が見られるかもしれませんが、説明できることに注意してください。

+0

+1、心の読書のために、明らかに;-) – Peter

3

https://book.git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

gitが-a

をコミットこの時点で、二つの枝は異なる変化 それぞれに作られて、発散しました。変更が競合しない場合は 実行、マスターに

実験

Gitのマージを実験的に行った変更をマージするには、あなたは完了です。競合がある場合は、競合を示す問題のあるファイルに のマーカーが残されます。

git diff

これを表示します。あなたは競合を解決するために、ファイルを編集したら、

gitが-a

は、マージの結果をコミットしますコミット。最後に、

gitk

は、得られた歴史の素敵なグラフィック表現を表示します。

Q:どのGitクライアントを使用していますか? Gitのコマンドラインツールですか?または、他の何か?

質問:問題のファイルは、LinuxでもWindowsでもどちらでもかまいませんか?あるいは、彼らは異なる環境から来ていますか?

+0

よく選択されたリンクのための+1、そして簡潔な+関連する抜粋 – Peter

関連する問題