我最近从svn
切换到git
。
在与谷歌及其craweler彻底讨论失败后,请查看我的情况如下:
方案
我在.gitignore
中添加了文件,使git status
无声了解未跟踪的文件。
问题
问题是每次我rebase
我的分支时,这个文件也会被覆盖,我在控制台上看到所有未跟踪的文件。
要求
有没有办法git ignore <.gitignore_file>
这样可以排除这个文件在任何操作中被重新定位/覆盖?
答案 0 :(得分:3)
您可以定义仅适用于.gitignore的自定义合并驱动程序,并始终保留本地版本 有关具体示例,请参阅“Git: How to rebase many branches (with the same base commit) at once?”。
合并驱动程序“import pandas as pd
import numpy as np
df['label'] = pd.Categorical(np.zeros(len(df.index)), categories=[ 'F', 'T'])
df['label'][df.v1 > np.mean(df.v1)] = 'T'
”可以与keepMine
关联,并在每个分支中的.gitignore
文件中声明。
请参阅“How do I tell git to always select my local version for conflicted merges on a specific file?”。
.gitattributes
将echo .gitignore merge=keepMine > .gitattributes
git config merge.keepMine.name "always keep mine during merge"
git config merge.keepMine.driver "keepMine.sh %O %A %B"
放在keepMine.sh
中,而不是存储库中
$PATH
(对于# I want to keep MY version when there is a conflict
# Nothing to do: %A (the second parameter) already contains my version
# Just indicate the merge has been successfully "resolved" with the exit status
exit 0
,请参阅“How to stop a merge (yet again…)”)
答案 1 :(得分:3)
如果您提交.gitignore
文件,我不明白为什么您应该遇到此问题。但是,没有什么能阻止您将.gitignore
本身添加到.gitignore
至于排除文件的替代方法,您可以创建一个文件.git/info/exclude
,它充当工作目录之外的本地.gitignore
。