nic*_*ius 1 regex git rename git-commit
我有一个较旧的项目,我修改了许多文件(超过一百个)。删除了几个,重命名了一大堆,删除了很多等等。这批更改中可能有 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."
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为运行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'
Run Code Online (Sandbox Code Playgroud)
通过运行可以看到输出的字母及其含义git status --help。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |