我有一个存储在本地和 GitHub 上的存储库,
这个存储库用于存储我网站的内容,
在注册 CMS 并在 GitHub 目录中创建一个隐藏文件后,我改变了主意并想删除隐藏文件。
我表演过
git pull origin master
Run Code Online (Sandbox Code Playgroud)
为了将我的本地文件与 GitHub 上的文件同步,然后我在本地删除了隐藏文件并运行以下命令,希望它将最新文件与我的本地目录同步。
git add *
git commit -m "Removed CMS hidden files"
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
但是,这样做时,我得到以下信息
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
deleted: .forestry/front_matter/templates/catalogue-entry.yml
deleted: .forestry/settings.yml
Untracked files:
.DS_Store
no changes added to commit
Run Code Online (Sandbox Code Playgroud)
我想要的结果是我在本地与我的 GitHub 目录完全同步,删除了 CMS 添加的隐藏文件。
TL; 博士; 使用git add [--all|-A]orgit add [.|-A .]或git add -uor git add '*',而不是git add *。其中之一可能有效(用于git status验证哪些有效)。
git add --all或在整个工作树上git add -A进行所有更改git add -u阶段修改和删除,没有新文件- 在git 版本 1.x 中,在整个工作树上
git add .暂存新文件和修改,没有删除。- 从 git 2.0,
git add .(或git add -A .)不过是暂存新的/修改的/删除的文件(所有更改) - 但仅限于当前目录(./目录)- 要获得 的旧行为
git add .,我们必须使用--ignore-removal
关于git add *,来自另一个答案:
在Git中,
add *在*由shell来解释,并没有任何使用Git。如果您的 shell 是 Bash,则以.(Linux 上的隐藏文件)开头的文件和目录将不会与 匹配*,因此它们不会被传递到git add,也不会被添加到索引中。如果
git add *被在Windows非bash的解释器中运行时,*但将被逐字传递给git add。在这种情况下,名称以 开头的文件和目录.将被添加。
所以行为与 Windows 和 Linux 不同git add *,OP 可能使用了带有 bash shell系统的 Linux/ git,这就是他收到消息的原因:
Changes not staged for commit:
deleted: .forestry/front_matter/templates/catalogue-entry.yml
deleted: .forestry/settings.yml
Run Code Online (Sandbox Code Playgroud)
在 did 之后git add *,但因为(使用 bash shell) add *与以..
鼓励你们阅读此答案以获取有关git add *.
结论:取决于情况(您所在的目录,是要删除还是添加或修改等)我上面的建议之一可能会起作用,但git add [--all,-A]恰好是最安全的方法,可以将所有更改包括整个隐藏文件工作树 - 整个存储库。
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |