Git:仅提交指定的文件(重命名、删除、修改、新文件等)
Git: Commit Only Specified Files (Renamed, Deleted, Modified, New File, etc)
我有一个较旧的项目,我在其中修改了很多文件(超过一百个)。删除了几个,重命名了一大堆,删除了很多等等。这批更改中可能有 10 个或更多的提交值。我如何写一个commit命令到select,例如,只有那些重命名的文件:
git commit "all renamed files" -m "Renamed files."
我想尽量避免做这样的事情:
git commit file1 file2 file3 -m "Renamed files."
...因为太多了。我也可以提交一个价值 (git commit folder1 . . .
) 的文件夹,但不幸的是,文件夹中有一些文件不能提交。
我已经接受了提供的答案,但不得不稍微修改一下命令:
git status --porcelain | grep -E '^(.R|R.)' | \
cut -b4- | awk '{print }' | xargs git commit -m "Bulk renamed files."
之所以这样,是因为运行宁git status --porcelain | grep -E '^(.R|R.)' | cut -b4-
,例如,输出(这里用一行来演示):source/__init__.py -> site/__init__.py
。当我使用 xargs
到 运行 的 commit
命令时,它不被接受,大概是因为 -> . . .
部分。所以我在这里使用 awk
来 select 仅第一个块,这很好用。谢谢!
您可以使用 git status --porcelain
到 select 仅特定类型的文件。例如,要 select 仅重命名文件,请使用如下内容:
$ git status --porcelain | grep -E '^(.R|R.)' | cut -b4- | \
xargs git commit -m 'Renamed files'
输出的字母及其含义可以参考运行 git status --help
.
我有一个较旧的项目,我在其中修改了很多文件(超过一百个)。删除了几个,重命名了一大堆,删除了很多等等。这批更改中可能有 10 个或更多的提交值。我如何写一个commit命令到select,例如,只有那些重命名的文件:
git commit "all renamed files" -m "Renamed files."
我想尽量避免做这样的事情:
git commit file1 file2 file3 -m "Renamed files."
...因为太多了。我也可以提交一个价值 (git commit folder1 . . .
) 的文件夹,但不幸的是,文件夹中有一些文件不能提交。
我已经接受了提供的答案,但不得不稍微修改一下命令:
git status --porcelain | grep -E '^(.R|R.)' | \
cut -b4- | awk '{print }' | xargs git commit -m "Bulk renamed files."
之所以这样,是因为运行宁git status --porcelain | grep -E '^(.R|R.)' | cut -b4-
,例如,输出(这里用一行来演示):source/__init__.py -> site/__init__.py
。当我使用 xargs
到 运行 的 commit
命令时,它不被接受,大概是因为 -> . . .
部分。所以我在这里使用 awk
来 select 仅第一个块,这很好用。谢谢!
您可以使用 git status --porcelain
到 select 仅特定类型的文件。例如,要 select 仅重命名文件,请使用如下内容:
$ git status --porcelain | grep -E '^(.R|R.)' | cut -b4- | \
xargs git commit -m 'Renamed files'
输出的字母及其含义可以参考运行 git status --help
.