我对基本的git概念感到有些困惑 :/
在我的git托管网站进行一些操作之前,我正在本地Windows机上进行测试。
我已经有了:
gittesting/repo1:
file.txt
ignoreme:
ignore.txt
而且
gittesting/repo2
file.txt
ignoreme:
ignore.txt
Repo2是repo1的一个副本,ignoreme已经被追踪。ignore.txt在repo2中发生了变化,但我想停止追踪它,让git完全忽略它。问题是如果我创建一个.gitignore文件并添加ignoreme,那就太晚了,因为它已经被追踪了,所以我必须用git rm --cached ignore来取消追踪,但这样会标记为已删除,如果我将提交拉到repo1中,该目录将被删除而不是保留。
总结一下:
- ignore.txt在两个仓库中具有不同的内容。
- 我希望ignore.txt的内容保持原样,并且被git完全忽略。
我在网上搜索过,向IRC提问过,也看过相关的问题,但找不到解决方法。我知道这个示例看起来很琐碎,但这正是我在网站上需要做的事情,其中目录是Forum/cache。
编辑:
这有点像hack,我更喜欢更好的答案,但我最终做了以下操作:
cd repo2
echo "ignoreme" > .gitignore
echo "ignoreme/*" > .gitignore
git rm --cache -r ignoreme
git commit -m "Should ignore now"
cd ../repo1
mv ignoreme ignoreme2
git pull ../repo2
mv ignoreme2 ignoreme
--assume-unchanged
是合法的。但如果你更改了它,你就是在欺骗 Git,这种行为往往不会有好结果。 - Seth Robertson