递归地将整个文件夹添加到存储库
Posted
技术标签:
【中文标题】递归地将整个文件夹添加到存储库【英文标题】:Recursively add the entire folder to a repository 【发布时间】:2013-07-18 14:08:28 【问题描述】:我正在尝试向 GitHub 上的 master 分支添加一个分支,并将一个文件夹推送到该分支上。
分支的文件夹结构看起来像 - SocialApp/SourceCode/DevTrunk/SocialApp 和所有源代码文件都在最后一个文件夹中。
我正在使用以下 Git 命令:
git add *
git commit -m with the message
git push
这只会将第一个文件夹“SocialApp”推送到 GitHub 上,而忽略文件夹内的文件夹 SourceCode。我该如何解决这个问题?
【问题讨论】:
哪里有文件?.gitignore
中没有忽略它们吗?
This is pushing only the first folder
- git 根本不关心文件夹,只关心文件。请显示提交 - 您提交了一个子模块、一个符号链接或其他不是文件夹的东西
我也遇到了同样的问题。我不认为这是一个问题,而只是预期的行为。令人惊讶的是有这么多解决方案。
注意:当您的文件夹为空时,它们不会被跟踪。将一个空的 .keep 文件放在那里以保留空目录是一个好习惯
【参考方案1】:
从顶层目录调用的“git add *”和“git add SocialApp”都应该递归添加所有目录。
可能您在 SocialApp/SourceCode/DevTrunk/SocialApp 中没有文件,这就是原因。
尝试调用“touch SocialApp/SourceCode/DevTrunk/SocialApp/.temporary”(并检查 .gitignore),然后再次尝试 git add。
【讨论】:
我不这么认为,我使用 git add * 并且遇到了同样的问题。【参考方案2】:检查.gitignore
文件,如果子目录被忽略。
然后再试一次
git add --all
git commit -am "<commit message>"
git push
【讨论】:
请注意,这将不包括 .gitignore 中提到的文件。我通常手动添加它们或使用这样的批处理文件:for /R %%f in (*.*) do git add --force %%f
(参见bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/…)
递归添加文件夹的整个树形结构,命令应该是git add --all :/
@JeroenWiertPluimers git add -f -all
用于添加 .gitignored 文件
@JasonHartley 您的评论可能是一个答案。谢谢!
这不是在 git repo 中添加所有未暂存的文件,而不仅仅是当前文件夹吗?我不认为这是最初的问题所要问的。【参考方案3】:
设置
本地服务器上的本地存储库 客户端通过局域网连接到本地服务器更新(2020 年 9 月): 使用 foldername/\*
而不是 foldername/\\*
:
git add foldername/\*
到服务器...
git commit -m "comments..."
git push remote_server_name master
大多数情况下,用户会将 remote_server_name 指定为来源...
git remote add remote_server_name username@git_server_ip:/path/to/git_repo
【讨论】:
失败为fatal: pathspec 'foldername/\\*' did not match any files
。曾担任git add foldername/\*
。
git add foldername/\\*
和git add --all
有什么区别?
Danijel,前者将所有文件添加到一个文件夹中,而后者将所有文件添加到存储库中
git add -f foldername/\*
- 为我工作。已添加-f
。【参考方案4】:
这对我有用:
git add . --force
【讨论】:
其他答案要求将文件列表计算为命令的参数,而这个没有,因此是更好的选择。 绝对是最好的答案。如果您希望忽略仍然受到尊重,一个编辑会提到您不需要--force
。【参考方案5】:
我遇到了这个花了我一点时间的问题,然后我想起了 git 不会存储空文件夹。请记住,如果您有要存储的文件夹树,请至少在该树的最深文件夹中放置一个文件,例如名为“.gitkeep”的文件,以影响 git 的存储。
【讨论】:
【参考方案6】:在我的例子中,子目录中有一个 .git 文件夹,因为我之前在那里初始化了一个 git repo。当我添加子目录时,它只是将其添加为子项目,而不添加任何包含的文件。
我通过从子目录中删除 git 存储库然后重新添加文件夹解决了这个问题。
【讨论】:
这为我解决了。我还必须重命名文件夹本身才能进行修复。【参考方案7】:如果你想递归地添加一个目录和其中的所有文件,转到你要添加的目录所在的目录。
$ cd directory
$ git add directoryname
【讨论】:
cd 目录 git add *【参考方案8】:导航到您保存文件的文件夹如果您在 Windows 机器上,则需要启动 git bash,从中您将获得命令行界面,然后使用这些命令
git init //this initializes a .git repository in your working directory
git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded
git add * // this adds all the files to the initialialized git repository
如果您在将文件合并到主文件之前对文件进行了任何更改,则必须通过执行来提交更改
git commit -m "applied some changes to the branch"
结帐后分支到主分支
【讨论】:
只回答提到init
【参考方案9】:
有时我想将我的 Web 服务源代码连同其客户端项目一起包含在内。它们都有一个单独的 git 存储库。 我其实习惯用命令添加所有文件:
git add -A
但由于某种原因,它只添加了文件夹。后来我发现服务器文件也有它的.git
文件夹,所以这个命令不起作用。
tl;dr:确保您要暂存的文件夹中没有 .git
文件夹。
【讨论】:
如果您不想删除 .git 文件夹,如何解决这个问题? @rolls 见git submodules【参考方案10】:我只是用这个:
git add app/src/release/*
您只需指定要添加的文件夹,然后使用*
递归地添加里面的所有内容。
【讨论】:
这可能会失败。见***.com/questions/12084227/… @kmiklas 很有趣。应该是git add app/src/release/.
?
git add --all app/src/release/
为我工作;参考:git-scm.com/docs/git-add
@kmiklas 我喜欢这种方法。下次我会使用它。使用git add app/src/release/*
对我有用,但如果它会失败,为什么要冒险?下次我会更好地使用git add --all app/src/release/
。谢谢!【参考方案11】:
我也有同样的问题,我没有 .gitignore 文件。我的问题通过以下方式解决。这会占用所有子目录和文件。
git add <directory>/*
【讨论】:
【参考方案12】:这对我有用
git add -f *
【讨论】:
【参考方案13】:场景/解决方案 1:
确保您的Folder
/ Sub-folder
不在.gitignore
文件中,无论如何。
场景/解决方案 2:
默认情况下,git add .
以递归方式工作。
场景/解决方案 3:git add --all :/
工作顺利,而 git add .
不(工作)。(@JasonHartley 的评论)
场景/解决方案 4:
我个人面临的问题是添加Subfolders or Files
,这在多个Folders
之间很常见。
例如:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt
所以Git
建议我添加git submodule
,我尝试过但很痛苦。
最后对我有用的是:
1. git add
一个位于Folder
的最后一个/级别的文件。
例如:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
2.git add --all :/
现在。
它会非常迅速地添加所有Folders
、Subfolders
和files
。
【讨论】:
【参考方案14】:我只需要这样做,我发现您可以轻松地将文件添加到子目录中。您只需要位于 repo 的“***目录”,然后运行类似:
$ git add ./subdir/file_in_subdir.txt
【讨论】:
【参考方案15】:git add --all my/awesome/stuff/
为我工作。 [1]
-
https://git-scm.com/docs/git-add
【讨论】:
以上是关于递归地将整个文件夹添加到存储库的主要内容,如果未能解决你的问题,请参考以下文章