我第一次在 git 上工作。我已经在 github 上推送了我的分支,它把所有的库和文档都推送到了 github。现在我能做什么以及如何使用 gitignore 命令来避免再次出现同样的错误。
7 回答
因此,根据您所说,这些文件是您不想删除但也不想推送到github
. 假设您将项目放在文件夹your_project
和 doc 目录中:your_project/doc
.
- 从项目目录中删除它(不实际删除它):
git rm --cached doc/*
- 如果您还没有
.gitignore
,您可以在项目文件夹中创建一个:project/.gitignore
. - 放入
doc/*
.gitignore - 暂存文件以提交:
git add project/.gitignore
- 提交:
git commit -m "message"
。 - 将您的更改推送到
github
.
如果您没有 .gitignore 文件,请先使用:
touch .gitignore
然后这个命令在你的 gitignore 文件中添加行:
echo 'application/cache' >> .gitignore
小心新线路
git ignore 是 git 中的约定。以 的名称设置文件.gitignore
将忽略该目录中的文件以及与文件包含的模式匹配的更深目录。最常见的用途是在顶层拥有一个这样的文件。但是您可以在目录结构中添加其他更深的模式以忽略更多模式或停止忽略该目录以及随后更深的模式。
同样,您可以通过指定以!
. 例如:
*.log !important.log
将忽略所有日志文件,但会跟踪名为 important.log 的文件
如果您正在跟踪您打算忽略的文件,请删除它们,将模式添加到您的 .gitignore 文件并添加所有更改
# delete files that should be ignored, or untrack them with
# git rm --cached <file list or pattern>
# stage all the changes git commit
git add -A
从现在开始,您的存储库将不再跟踪它们。
如果你想清理你的历史,你可以
# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10
e
然后用or标记每个提交edit
。保存计划。现在 git 将重放您的历史记录,并在您标记为 e 的每个提交处停止。在这里你删除你不想要的文件,git add -A
然后git rebase --continue
直到你完成。你的历史将是干净的。确保您告诉您的同事,因为您将不得不强制推送,他们将不得不重新调整他们尚未推送的内容。
在你的 git 根目录中有一个名为.gitignore
. 它是一个文件,而不是一个命令。您只需插入要忽略的文件的名称,它们将自动被忽略。例如,如果您想忽略所有以 . 结尾的 emacs 自动保存文件,~
则可以添加以下行:
*~
如果您想从您的分支中删除不需要的文件,您可以使用git add -A
“删除不再在工作树中的文件”。
注意:我所说的“git根目录”只是你git init
第一次使用的目录。它也是您可以找到.git
目录的地方。
如果您没有 .gitignore 文件。您可以通过以下方式创建一个新的
touch .gitignore
您可以通过在 .gitignore 文件中输入以下命令来排除文件夹
/folderName
将此文件推送到您的 git 存储库中,这样当一个新人克隆您的项目时,他不必再次添加相同的
gitignore 有几种使用方式
- 通过特定的文件名指定。例如,要忽略
名为 readme.txt 的文件,只需将 readme.txt 写入 .gitignore 文件即可。 - 您还可以写文件扩展名的名称。例如,要
忽略所有 .txt 文件,请写入 *.txt。 - 您也可以忽略整个文件夹。例如,您想忽略
名为 test 的文件夹。然后只需在文件中写入 test/ 。
只需创建一个 .gitignore 文件并写入任何您想忽略的示例 gitignore 文件:
# NPM packages folder.
node_modules
# Build files
dist/
# lock files
yarn.lock
package-lock.json
# Logs
logs
*.log
npm-debug.log*
# node-waf configuration
.lock-wscript
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Jest Coverage
coverage
.history/
在我的 Mac 上,我发现了这个文件.gitignore_global
..它隐藏在我的主目录中,所以请ls -altr
查看它。
我添加了我希望 git 忽略的 eclipse 文件。内容如下所示:
*~
.DS_Store
.project
.settings
.classpath
.metadata