关于git:在不初始化.gitignore的情况下将现有项目添加到Github

Add existing project to Github without initializing .gitignore

我通常使用以下文档将现有项目添加到Github。https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/

文件还说……为了避免错误,不要用自述文件、许可证或gitignore文件初始化新的存储库。您可以在项目被推送到GitHub之后添加这些文件。

所以现在,当我第一次推送更改时,所有不必要的JAR文件/target directory/ide文件都会被推送。然后我手动排除这些文件,添加.gitignore,如下..

1
2
3
4
5
$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push
  • 我可以防止第一次添加所有这些不需要的文件吗?
  • 删除不需要的文件(target、jar、ide文件)并将它们添加到.gitignore之后,我已经验证了它们不再存在于github中,但是当我克隆URL时,它仍然是100MB,实际下载大小却小于1MB?有人能解释一下吗?

  • 首先不添加.gitignore文件的一个原因是确保跟踪所有文件。这样你就不会不小心漏掉一个重要的目录。如果您知道自己在做什么,请在提交之前添加相应的.gitignore模板。

  • .idea目录仍然存在于git历史中。关于从GitHub上的存储库中删除敏感数据,有大量文档。


  • 在本地进行初始提交时,不要将不需要的文件包含在存储库中。即。:

  • cd project_directory
  • git init
  • git add 。如果不想使用.gitignore,您可以移动/删除不应该在存储库中的文件。
  • 承诺并推动。
  • 如果要彻底清除存储库中的文件,请参阅此答案。


    To avoid errors, do not initialize the new repository with README, license, or gitignore files. You can add these files after your project has been pushed to GitHub.

    这有些误导。即使是第一次,在本地存储库中保存这些文件并在推送时将其包含在内也没有任何问题。

    下面是一个更清晰的建议:

    When creating your repository on GitHub, do not use the"Initialize this repository with a README" option, shown below:

    GitHub's

    This option is meant for brand new repositories, but will give you a headache if you use it when you're planning to push an existing repository. Here's why:

  • When you use this option you create a commit directly in GitHub. This commit does not exist anywhere in your local project.
  • When you push your existing project Git will not be able to resolve its history with the lone commit you created when initializing. The two repositories share no commits, and therefore cannot be automatically resolved against each other.
  • However, if you wish to include a README, .gitignore, or license file in your local repository and include these files when you push please feel free to do so.