Git:只提交指定的文件(重命名、删除、修改、新建文件等)



我有一个旧项目,在那里我修改了很多文件(超过一百个(。删除了几个,重命名了一整堆,删除了很多,等等。在这批更改中可能有10个或更多的提交。例如,我如何编写一个提交命令来只选择那些重命名的文件:

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 $1}' | 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只选择第一个块,这很好。谢谢

您可以使用git status --porcelain仅选择特定类型的文件。例如,要只选择重命名的文件,请使用以下内容:

$ git status --porcelain | grep -E '^(.R|R.)' | cut -b4- | 
xargs git commit -m 'Renamed files'

通过运行git status --help可以看到输出的字母及其含义。

相关内容

  • 没有找到相关文章

最新更新