1173

完全にマージされた 2 つのブランチがあります。

ただし、マージが完了した後、1 つのファイルがマージによって台無しにされていることに気付き (他の誰かが自動フォーマットを実行しました)、他のブランチで新しいバージョンに変更する方が簡単です。次に、ブランチに持ち込んだ後、1​​行の変更を再挿入します。

では、Git でこれを行う最も簡単な方法は何でしょうか?

4

7 に答える 7

1979

ファイルを最終的に配置するブランチからこれを実行します。

git checkout otherbranch myfile.txt

一般式:

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

いくつかのメモ (コメントから):

  • コミット ハッシュを使用すると、任意のコミットからファイルをプルできます
  • これは、ファイルとディレクトリに対して機能します
  • myfile.txtファイルを上書きし、mydir
  • ワイルドカードは機能しませんが、相対パスは機能します
  • 複数のパスを指定可能

別の方法:

git show commit_id:path/to/file > path/to/file
于 2008-11-21T04:31:21.363 に答える
91

同様の検索でこの質問にたどり着きました。私の場合、別のブランチから、ファイルの元の場所とは異なる現在の作業ディレクトリにファイルを抽出しようとしていました。答え:

git show TREEISH:path/to/file > path/to/local/file
于 2011-08-17T20:38:03.420 に答える
52

チェックアウトコマンドを使用します。

  git diff --stat "$branch"
  git checkout --merge "$branch" "$file"
  git diff --stat "$branch"
于 2010-03-06T14:30:51.000 に答える
21

madlep's answerに従って、ディレクトリ blob を使用して別のブランチから 1 つのディレクトリをコピーすることもできます。

git checkout other-branch app/**

そこにあるファイルを1つだけ変更した場合のOPの質問に関しては、これでうまくいきます。

于 2015-06-06T21:29:37.257 に答える