我的工作目录是:
~/Desktop/git_que on brA
$ ls
book.json README.md SUMMARY.md
现在我将添加" README.md" to" .gitignore":
~/Desktop/git_que on brA!
$ cat .gitignore
README.md
然后让我们删除文件:
~/Desktop/git_que on brA!
$ git rm --cached README.md
rm 'README.md'
并且'添加'临时区域:
~/Desktop/git_que on brA!
$ git add .
~/Desktop/git_que on brA!
$ git status
On branch brA
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitignore
deleted: README.md
很好,让我们提交&#39;:
~/Desktop/git_que on brA!
$ git commit -m "ignore README.md"
[brA 5e80102] ignore README.md
2 files changed, 1 insertion(+), 29 deletions(-)
create mode 100644 .gitignore
delete mode 100644 README.md
~/Desktop/git_que on brA
$ git status
On branch brA
nothing to commit, working directory clean
让我们在目录中列出文件:
~/Desktop/git_que on brA
$ ls
book.json README.md SUMMARY.md
如预期的那样好。现在,让我们将分支切换到&#39; brB&#39;然后回到&#39; brA&#39;再次:
~/Desktop/git_que on brA
$ git checkout brB
Switched to branch 'brB'
~/Desktop/git_que on brB
$ git checkout brA
Switched to branch 'brA'
再次让目录中的列表文件:
~/Desktop/git_que on brA
$ ls
book.json SUMMARY.md
所以,我无法看到我的README.md文件。
问题1:我的档案在哪里,为什么我再也看不到了?
问题2:我想忽略此文件,但我想继续使用它。我的意思是, GIT 不跟踪它,不在任何地方共享;但该文件仍保留在我的本地工作目录中。我怎么能这样做?
答案 0 :(得分:0)
git rm --cached
未删除该文件。
git checkout
删除了该文件。
原因很简单:新提交的文件未被跟踪(并且不存在)。当您签出旧提交时, 文件被跟踪(因为 存在于提交中)。因此,当您检查旧提交时,将跟踪该文件,然后当您从旧提交切换到新提交时,Git会看到跟踪文件已从新提交中消失,并将其删除。
问题的根源是是路径P跟踪?是索引的属性,git checkout
填充索引来自提交。所以&#34;被追踪&#34;属性更改 - 至少可能 - 每次更改为&#34;哪次提交是签出提交&#34;。
从跟踪文件的提交转移到没有该文件的提交,从工作树中删除该文件(并从索引中删除 - 事实上,将其删除从索引为什么 Git将其从工作树中删除)。从没有该文件的提交转移到将添加文件到工作树(以及实际上将其添加到索引)索引是为什么 Git将ti添加到工作树中。)
这就是在某些提交中有文件的原因,而在其他提交中没有,当你希望在 no 提交中提供它但在任何时候都保留在工作树中,这么大问题。没有完美的解决方案。您可以为文件使用不同的名称,这种情况在没有提交的情况下发生;或者你可以小心地避免检查 拥有该文件的任何提交,这会导致文件进入索引并因此被跟踪。