簡體   English   中英

Git中的二進制文件

[英]Binaries in Git

我從朋友處下載了一個.zip文件形式的項目。 我將其導入Eclipse,一切正常,構建過程順利進行。

現在,我要將其放入遠程GIT存儲庫中。

但是,有很多庫文件,IDE生成的文件和其他雜項。 我的工作區中的二進制文件。

我該怎么做? 我不想將工作空間中的所有內容都放入GIT(為了節省空間)。 我什至怎么知道應該受源代碼/修訂版控制的內容(即使某些可編輯文件也永遠不會更改)?

我的最終目標是讓其他人從GIT中檢出項目,將其導入到他們的IDE中,然后開始進行開發。 如果我不將二進制文件放入GIT,則它們的構建將明顯失敗。

如果您尚未意識到,則可能需要充分利用.gitignore功能(請參閱此處 )。 您將要列出該文件中不應檢入或共享的所有內容,最有可能使用通配符表示永遠不會檢入的特定文件夾或文件類型。

至於確定要忽略的內容,這可能會有些棘手,但這是一個開始。 如果您可以執行某種make clean命令make clean的命令,則可以清除所有不必要的/生成的/已編譯的文件,這將使您對最小的文件集有所了解。

但是,您將要忽略的特定文件取決於您使用的是哪種語言,哪種編譯器,可能是哪種IDE(如果適用),以及是否添加了用於測試目的的所有文檔或數據文件,這些文件或數據文件都不打算共享。 。

通常,如果您的代碼打算與各種編譯器一起使用,則您可能希望忽略特定編譯器生成/編譯的任何內容。 使用多個IDE也是如此。 通常,您將希望忽略所有二進制文件,但是如果要具有一組“規范”構建或庫依賴項,則可以將其檢入。但是,您可能希望將它們放在特殊目錄中,因此您仍然可以根據需要忽略中間版本。

關於將二進制文件檢入git repos的一些討論(以及為什么通常認為二進制文件不好): 使用githttp://robinwinslow.co.uk/2013/06/11/dont-ever-commit- 管理大型二進制文件 二進制文件到git的/

.gitignore文件放在存儲庫的根目錄中。 在此文件中,您將指示不需檢入的文件模式。(例如,生成輸出或用戶特定的文件。)

例如,在Visual Studio項目中,構建操作將創建binobj文件夾,因此此文件可能僅包含以下文本:

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甚至包含示例庫 如您所見,您可以針對許多特定的事物並根據您的存儲庫/項目定制.gitignore規則。 沒錯,您需要包含依賴庫,而不必包含構建輸出。 只要它們是可分別識別的,您就可以使用。

例如,可以將依賴庫放在名為lib的文件夾中,然后將其顯式添加到git存儲庫中。 確實,一旦添加了文件,即使它在.gitignore模式規則中也不會被忽略。 這些規則告訴git哪些文件不添加,但已經添加的文件繼續跟蹤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM