考虑目录 my_dir 中的git-repository,我有
如果我使用IDE修改源代码,但想通过终端从我的 testdata 目录提交这些更改,我需要提供
git add ../../../a/different/path/to/my/sourcecode/file_with_changes.foo
我的问题:git是否提供了一种更简单的指定已更改文件的方法?
E.g:
git add file_with_changes.foo
编辑: testdata 目录还包含config-files,可能会暂时更改,但应从提交中排除(可能在之后提交)
答案 0 :(得分:1)
git add .
会将所有已更改的文件添加到暂存区域。
或者您可以直接提交所有已更改的文件,而无需通过运行以下命令来添加到暂存区域
git commit -a -m "<message>"
请注意,如果要提交的文件是新文件,则上述命令不会提交。
我希望这会有所帮助。
答案 1 :(得分:1)
简答:不。
除了git add
目录(以递归方式添加目录中包含的文件中的所有更改)之外,没有捷径。
另一方面,许多IDE都有某种git集成,这可以提供帮助。例如,在JetBrains的IDE(IDEA,WebStorm等)中,您可以在变更集之间拖放文件,或者右键单击以显示可以在索引中添加或删除文件的菜单等。 / p>
此外,如果你使用bash,使用git支持bash完成,你可以git add TAB
,它应该将标签完成限制为修改过的文件。
你提到想要使用终端...但我想我会提到还有几个可视化git前端,可以更容易地将一些文件添加到索引中。我使用SourceTree,我发现它非常好,但它仅适用于Windows和Mac。不过还有其他人。
答案 2 :(得分:0)
下面的shell脚本将任意字符串(允许使用通配符)作为输入参数。 git-repository中与此子字符串匹配的任何已修改文件(也在其路径中)都将进行提交。
要使用它,请将脚本复制到 git-core 目录(例如 / usr / lib / git-core ),并确保它是可执行的:< / p>
sudo cp my-downloaded-git-script /usr/lib/git-core/git-add-by-substring && chmod 775 /usr/lib/git-core/git-add-by-substring
要概述脚本的效果,您可以选择使用
附加最后一行git status
脚本:
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: git add-by-substring \"substring to identify files\""
echo "The script stages modified files, which contain the provided substring."
exit
fi
substring=$1
list_of_files=$(git status | grep modified | sed 's/.*modified: //' | grep ${substring})
if [ -z "$list_of_files" ]; then
echo "No modified files, matching substring \"${substring}\""
exit
fi
git add ${list_of_files}