47

与如何设置 git 驱动程序以在合并时忽略文件夹的答案一样有趣和有用,它没有回答仍然让我难过的原始问题。

与上面链接的问题不同,我有两个具有相同目录集的分支,为了将一个分支合并到另一个分支中,我需要 git 完全忽略一个目录。

我使用自己的合并驱动程序进行了尝试,如如何告诉 git 始终为特定文件的冲突合并选择我的本地版本?但这种方法的问题在于,只有在这两个分支中存在实际冲突文件时才会调用此驱动程序。每当文件的更改仅在一个分支上时,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.

这个解决方案并不完美,因为它将所有提交合并为一个。这意味着挑选一些提交可能不合适。

但它能够避免由于重命名/新建/删除导致需要清理的构建文件夹中的大量提交。

于 2020-12-02T08:22:30.803 回答