[解決済み】git を使ってファイル全体を「accept theirs」「accept mine」する簡単なツール
質問
ビジュアル マージ ツールは必要ありません。また、競合するファイルを vi して、HEAD(私のもの)とインポートした変更(彼らのもの)の間を手動で選択する必要もありません。 たいていの場合、相手の変更をすべて取り込むか、私の変更をすべて取り込むかのどちらかです。 よくあるのは、私の変更がアップストリームで行われ、プルを通して私のところに戻ってくるのですが、いろいろなところで少し変更されている可能性があるためです。
コンフリクトマーカーを取り除き、私の選択に基づいてすべてを一方的に選択するコマンドラインツールはありますか? あるいは、私がそれぞれを行うために自分でエイリアスを作成できる一連のgitコマンドです。
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
これをやると、かなりめんどくさい。 accept mine」については、私が試したことがあります。
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
このチェンジマーカーを消すにはどうしたらいいのでしょうか?
できるんです。
git reset HEAD Makefile; rm Makefile; git checkout Makefile
しかし、これでは回りくどい。もっといい方法があるはずだ。 それに、この時点ではgitがマージをしたと思っているかどうかもわからないので、これが必ずしもうまくいくとは思えません。
他の方法として、'accept theirs' を行うのも同様に面倒です。 私が理解できる唯一の方法は、そうすることです。
git show test-branch:Makefile > Makefile; git add Makefile;
これによって、コミットメッセージもめちゃくちゃになり、Conflicts: Makefile が 2 回含まれています。
どなたか、上記2つのアクションをよりシンプルに行う方法をご指摘いただけないでしょうか? ありがとうございます。
どのように解決するのですか?
解決方法はとても簡単です。
git checkout <filename>
からファイルをチェックアウトしようとします。
インデックス
そのため、マージに失敗します。
必要なのは、(つまり、チェックアウトして コミット ):
自分のバージョンをチェックアウトするには を使用することができます。 一つ のうち
git checkout HEAD -- <filename>
または
git checkout --ours -- <filename>
(警告! リベースする場合
--ours
と
--theirs
が入れ替わります)。
または
git show :2:<filename> > <filename> # (stage 2 is ours)
別バージョンをチェックアウトするには を使用することができます。 1 のうち
git checkout test-branch -- <filename>
または
git checkout --theirs -- <filename>
または
git show :3:<filename> > <filename> # (stage 3 is theirs)
また、解決済みとしてマークするために「add」を実行する必要があります。
git add <filename>
関連
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Gitを使って最後のXコミットをまとめる
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] ローカルファイルシステムからファイルを削除せずに、Git リポジトリからファイルを削除する
-
[解決済み] Git でファイルの一部分のみをコミットする
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Githubの認証に失敗した - ... GitHubはシェルアクセスを提供しない
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能
-
[解決済み】特定のファイル(「私たちの」、「私の」、「彼らの」)に対する Git マージ戦略を選択する)