我从朋友那里以.zip文件的形式下载了一个项目。 我将它导入Eclipse并且它很好,构建顺利。
现在我想把它放到远程GIT存储库中。
但是,有很多库文件,IDE生成的文件和misc。我的工作区中的二进制文件。
我该怎么做?我不想把我工作区的所有内容都放到GIT中(为了节省空间)。我怎么知道什么应该受源/版本控制(甚至一些可编辑的文件永远不会改变)?
我的最终目标是让其他人从GIT签出项目,将其导入到他们的IDE中,然后开始研究它。如果我不把二进制文件放到GIT中,它们的构建就会明显失败。
答案 0 :(得分:0)
如果您还没有意识到,您可能希望充分利用.gitignore
功能(请参阅here)。您需要列出不应该在该文件中签入或共享的所有内容,最有可能使用通配符来查找永远不会签入的特定文件夹或文件类型。
至于确定要忽略什么,这可能有点棘手,但这是一个开始。如果您可以执行某种make clean
类型的命令,那么可以清除任何不必要/生成/编译的文件,这样可以让您清楚地知道最小文件集可能是什么。
但是,您要忽略的特定文件取决于您使用的语言,哪个编译器,可能是哪个IDE(如果适用),以及您是否添加了任何文档或数据文件以用于测试目的而不是分享。
通常,如果您的代码要与各种编译器一起使用,您可能希望忽略由特定编译器生成/编译的任何内容。使用多个IDE也是如此。通常,您会想要忽略所有二进制文件,但是如果您想要一组“规范”文件,那么构建或库依赖项,您可以检查它们。但是,您可能希望将它们放在特殊目录中,因此如果需要,您仍然可以忽略中间构建。
关于将二进制文件检入git repos的几个讨论(以及为什么它通常被认为不太好): Managing large binary files with git和http://robinwinslow.co.uk/2013/06/11/dont-ever-commit-binary-files-to-git/
答案 1 :(得分:0)
将.gitignore
文件放在存储库的根目录中。在此文件中,您将指示不要签入的文件模式。(例如,构建输出或用户特定的文件。)
例如,在Visual Studio项目中,构建行为会创建bin
和obj
个文件夹,因此该文件可能只包含文本:
bin
obj
通配符也有效,因此要忽略.user
文件,我可能还会包含:
bin
obj
*.user
可能存在更多通用.gitignore
文件的例子,这些文件覆盖了99%的案例。例如,我工作的.NET开源项目有:
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/
# mstest test results
TestResults
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.log
*.vspscc
*.vssscc
.builds
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Publish Web Output
*.Publish.xml
# NuGet Packages Directory
packages
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
[Bb]in
[Oo]bj
sql
TestResults
[Tt]est[Rr]esult*
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
我想,浏览一些流行的GitHub存储库会产生其他类似的例子。当然,GitHub甚至有a repository of examples。正如您所看到的,您可以定位很多特定的事物,并将.gitignore
规则定制到您的存储库/项目。您需要包含依赖库,而不需要包含构建输出。只要他们可以单独识别,你就可以去。
例如,可以将依赖库放在名为lib
的文件夹中,并将其显式添加到git存储库中。实际上,一旦添加了文件,即使它在.gitignore
模式规则中也不会被忽略。这些规则告诉git哪些文件不能添加,但是已经添加的文件继续被跟踪。