Vimdiffを使用して変更をマージする方法は知っていますが、ファイル全体を保持するか破棄するのが良いことを知っていると仮定して、どうすればよいですか?
それぞれについてvimdiffを開きたくありません。「ローカルに保つ」または「リモートに保つ」というコマンドを変更します。
E.G:誰かがウィンドウの下でそれを開き、EOLを変更してからコミットしたため、変更済みとしてマークされたファイルとのマージを取得しました。マージするとき、私は自分のバージョンを保持し、彼を破棄したいだけです。
私も反対に興味があります:私は大きな時間を台無しにして、リモートファイルを受け入れ、変更を破棄したいです。
あなたもできる:
git checkout --theirs /path/to/file
リモートファイルを保持します。
git checkout --ours /path/to/file
ローカルファイルを保持します。
その後、git add
それらとすべてが完了します。
このアプローチはより簡単で、各ファイルを個別に選択する必要がありません。
# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours
または
# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours
直接コピー: プル中の変更を優先してGitマージの競合を解決
git checkout {branch-name} -- {file-name}
これにより、選択したブランチのファイルが使用されます。
posh-git
オートコンプリートがこれでうまく機能するため、これが気に入っています。また、どのブランチがリモートで、どれがローカルであるかについてのあいまいさもなくなります。とにかく--theirs
は機能しませんでした。
行末のことについては、man git-merge
を参照してください:
--ignore-space-change
--ignore-all-space
--ignore-space-at-eol
必ずautocrlf = false
やsafecrlf = false
をWindowsクローン(.git/config)に追加してください
このようにmergetoolを構成する場合:
git config mergetool.cp.cmd '/bin/cp -v "$REMOTE" "$MERGED"'
git config mergetool.cp.trustExitCode true
その後、単純な
git mergetool --tool=cp
git mergetool --tool=cp -- paths/to/files.txt
git mergetool --tool=cp -y -- paths/to/files.txt # without prompting
仕事をする
その他の場合、私は仮定します
git checkout HEAD -- path/to/myfile.txt
トリックを行う必要があります
編集を逆に実行する(間違えたため):
git checkout remote/branch_to_merge -- path/to/myfile.txt