使用 git,我希望能够将某个文件夹保留为我的本地项目的一部分(在分支中使用它等),但我不希望这个目录被推送到公共 git 服务器。
有问题的文件夹有一些项目不需要的 CLI Java 东西,但我想与将要上线的分支工作保持同步。
这可能吗?
使用 git,我希望能够将某个文件夹保留为我的本地项目的一部分(在分支中使用它等),但我不希望这个目录被推送到公共 git 服务器。
有问题的文件夹有一些项目不需要的 CLI Java 东西,但我想与将要上线的分支工作保持同步。
这可能吗?
一个非常简短的答案是否定的。原因如下:当你的本地 git 分支被推送到服务器时,它会按原样推送,没有任何例外。由于提交包含文件,如果某些文件不会被推送,它会在内部弄乱 git。不支持这种选择性行为,我想它永远不会支持,因为大多数情况下,当您需要这些东西时,您会错误地使用 git。
但是,有很多方法:
我肯定会选择 1 因为当我需要项目的东西时,它属于 repo,即使它是 java cli。
...你可以让 git忽略它们。
...但在远程仓库中没有它们我只能给你一些我从未尝试过的东西的提示/想法,但你最终可能会拥有不同的存储库,事情可能会变得有点讨厌。
我会看看(从可能还可以到可能相当混乱和一个坏主意):
git-repo
git-subrepo
再说一遍:我没有使用它们中的任何一个,也不知道它们的缺点、陷阱等,但对我来说,子树似乎是迄今为止最好的解决方案。
其余的大部分在我看来确实很混乱,但归根结底,唯一重要的是什么对你有用。
...无论是芥末
晚会迟到了,但问题仍然很好。您正在尝试仅使用所需工具的一半来解决部署问题:为了实现您的目标,您必须在部署链中同时使用 git 和依赖项管理器。
使用 git,您可以对所有代码以及 CLI Java 内容进行版本跟踪,但使用 DM,您的 CLI Java 内容将被标记为“开发”包。
在生产中部署您应该排除所有“开发”包。
在 Java 中我认为正确的工具应该是 Maven,在 PHP 中有 Composer,在 Javascript 中最著名的是 NPM。
我的两(晚)美分
一个更简短的答案是肯定的!
它现在是 github 中的一个功能。您可以使用 gitignore 排除文件类型。
https://help.github.com/articles/ignoring-files/
我个人通过将以下内容添加到我的全局 gitignore 文件中,将名为 ASSETS 的文件目录从我的所有存储库中排除:
ASSETS/*
示例:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Audio Files #
###############
*.wav
*.mp3
*.wma
# Video Files #
###############
*.wmv
*.mpg
*.mpeg
*.mp4
*.mov
*.flv
*.avi
*.ogv
*.ogg
*.webm
# Image Files #
###############
*.jpg
*.gif
*.png
*.svg
*.ico
# Folders #
###########
ASSETS/*
# Documents #
#############
*.pdf
*.doc
我的 arch linux 机器上的上述文件位于 ~/.gitignore_global