我有一个名为 git 存储库myscripts/
。其中myscripts/
有子目录perl/
、python/
和ruby/
。出于某种原因,当我在其中一个子目录中编辑代码时,Git 会忘记该子目录是存储库的一部分。
$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git commit -a
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ./
$ git add .
$ git commit -a
我必须一遍又一遍地这样做,但我不知道为什么。
答案1
git commit
当你运行指数。索引包含当前 HEAD,以及您使用git add
或所做的任何更改git rm
。
但是,git commit
确实接受了-a
切换。手册页关于这个开关:
告诉命令自动暂存已被修改和删除的文件,但你尚未告诉 git 的新文件不会受到影响。
这意味着当你运行 时git commit -a
,Git 将仅提交对当前 HEAD 中存在的文件的更改。
因此,您必须git add
对要跟踪的每个文件或目录至少运行一次:
$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git add . # Add each file in this directory to the index
$ git commit # Commit this version of hello.pl
$ vi hello.pl # Edit hello.pl some more
... edit some more ...
$ git commit -a # Commits the changes to hello.pl