首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在最初添加git时添加所有文件而不添加任何目录?

如何在最初添加git时添加所有文件而不添加任何目录?
EN

Stack Overflow用户
提问于 2013-06-08 04:32:26
回答 4查看 62关注 0票数 2

假设我在git中有一个目录,里面有一堆文件和其他目录。

如果我这样做了

代码语言:javascript
运行
复制
git init .
git add .

我将把包括目录在内的所有内容都添加到我的git库中。但是,如果我只想添加当前目录中的文件(没有递归遍历目录),有没有非手动的方法?

手动方法是使用另一个工具挑选文件,并对这些文件运行git-add。

EN

回答 4

Stack Overflow用户

发布于 2013-06-08 04:40:50

一种选择是:

代码语言:javascript
运行
复制
git add --interactive

这将允许您一个接一个地挑选文件。这可能很麻烦;但它允许您跳过目录。你会得到这样的结果:

代码语言:javascript
运行
复制
find . -depth 1 -and ! -type d -exec git add {} \;

下面是一个示例:

代码语言:javascript
运行
复制
ebg@tsuki(26)$ find . -depth  1 -and ! -type d -print
./a
./b
ebg@tsuki(27)$ find . -depth  1 -and ! -type d -exec git add {} \;
ebg@tsuki(28)$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   a
#   new file:   b
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   c/
票数 1
EN

Stack Overflow用户

发布于 2013-06-08 04:41:12

不幸的是,Git没有这样的内置功能。不过,使用shell循环可以很容易地做到这一点。假设您使用的是bash,这将会起作用:

代码语言:javascript
运行
复制
#!/bin/bash

for f in `ls -A`; do
    if [ -f $f ]; then
        git add $f
    fi
done

这将添加当前目录中的所有文件。

请注意,与所有bash脚本一样,如果只需要一次,则可以在一行中编写以下代码:

for f in $(ls -A); do if [ -f $f ]; then git add $f; fi; done

这只是一个概念脚本的证明,当然可以改进;例如,它可以首先构造一个列表,然后在该列表上调用一次git add

票数 1
EN

Stack Overflow用户

发布于 2013-06-08 04:41:40

就像这样

代码语言:javascript
运行
复制
find . -maxdepth 1 -type f | xargs git add --

也许吧?

第一部分列出了当前目录(但不是子目录,由于-maxdepth)中的所有文件,xargs将此列表作为参数附加到git add

您也可以尝试更健壮的

代码语言:javascript
运行
复制
find . -maxdepth 1 -type f -exec git add -- \{\} \+

如果您的find版本支持它。(或者将\+替换为\;,但这样运行速度会更慢。)

另请参阅:Bash: How to list only files?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16992479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档