47

マージ時にフォルダーを無視するようにgitドライバーをセットアップする方法への答えと同じくらい面白くて便利でしたが、それはまだ私を困惑させている元の質問に答えませんでした。

上記にリンクされている質問とは異なり、同じディレクトリセットを持つ2つのブランチがあり、一方を他方にマージするには、1つのディレクトリを完全に無視するためにgitが必要です。

特定のファイルで競合するマージに対して常にローカルバージョンを選択するようにgitに指示するにはどうすればよいですか?で説明されているように、独自のマージドライバーで試してみました。ただし、このアプローチの問題は、これら2つのブランチに実際に競合するファイルがある場合にのみ、このドライバーが呼び出されることです。ファイルの変更が1つのブランチのみにある場合は常に、gitはマージドライバーを呼び出さずにそれらをマージします。

これは、私が望まないディレクトリ内のファイルの変更につながります。gitに、そのディレクトリ内のすべてのファイルを常に無視させる方法はありますか?

4

2 に答える 2

79

私は実際にはGitを使用していませんが、これはあなたのケースではうまくいくと思います。

ここで指定されているようなものを使用してください:https ://gist.github.com/564416

git checkout master    
git merge --no-commit --no-ff development
git reset -- /path/to/folder # revert updates from path
git commit

繰り返しになりますが、私はgitを使用していません。私は、TryGitでの経験に基づいて、物事がどのように機能すると思うかを延期しています。

  1. チェックアウトマスター
  2. マージしますが、コミットしないでください。早送りはしません。
  3. マージがステージングされるようになったので、ディレクトリツリー全体をリセットします
  4. 専念
于 2013-01-16T23:29:24.943 に答える
0

ブランチステージングを行っていて、devをマージし、/buildフォルダーの変更を無視したいとします。

git checkout staging
# go to staging branch

git checkout dev .
# this checkout dev file changes into staging

git reset HEAD build
# this remove added file in build folder

git clean -f
# this drops untracked files we just reseted

git checkout -- .
# this drops changed files we just rested

git status
# check is everything ok

git commit -am 'merge dev into branch'
# create a commit

git merge -s ours dev
# this create a fake merge to trick Git into thinking that a branch is already merged when doing a merge later on.

このソリューションは、すべてのコミットを1つにマージするため、完全ではありません。つまり、一部のコミットは適切でない可能性があります。

ただし、クリーンアップが必要な名前変更/新規/削除によって引き起こされるビルドフォルダーでの多くのコミットを回避できます。

于 2020-12-02T08:22:30.803 に答える