git track,ignore,delete,untrack

时间:2012-03-20 11:21:40

标签: git

我似乎通过跟踪文件来摧毁我的git repo,后来忽略它然后删除它。问题是,我希望文件存在于远程存储库(实时站点)中,但只是不想跟踪。

现在我的主分支正在尝试从存储库中删除所有文件,我知道当我推送更改时,我会在远程分支上删除它们...我只想解开它们,但不能这样做,因为它们是已经删除了master和git rm -r --cached说'与任何文件都不匹配'。

如何在不将这些文件从远程存储库中删除的情况下解锁这些已删除的文件?

3 个答案:

答案 0 :(得分:30)

您只是不想跟踪文件,但是您希望将文件保留在远程存储库中(非裸)。

使用此git命令。执行此操作后,git停止检查文件是否可能进行修改。

git update-index --assume-unchanged  <filename>

您可以随时通过设置 - no-assume-unchaged 标志再次追踪

git update-index --no-assume-unchanged  <filename>

这些命令不会影响远程存储库。

有关详细信息:http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html

答案 1 :(得分:4)

git rm用于从存储库中删除文件。

要停止跟踪它们,您可以在删除后将它们添加到存储库根目录中的.gitignore文件中。

答案 2 :(得分:0)

即使您没有使用git rm解压缩文件,您仍然可以检出该文件的先前版本,例如

在您当地的回购中: git rm foo git commit -m'删除了foo' git push origin master

在远程存储库中:

git pull origin master // foo will be removed
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged)
git reset HEAD // unstage foo
git status

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       foo

然后添加到.gitignore以取消跟踪