【问题标题】:Git: Commit Only Specified Files (Renamed, Deleted, Modified, New File, etc)Git:仅提交指定的文件(重命名、删除、修改、新文件等)
【发布时间】:2020-07-03 02:16:17
【问题描述】:

我有一个较旧的项目,我在其中修改了许多文件(超过一百个)。删除了几个,重命名了一大堆,删除了很多,等等。这批更改中可能有 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 只选择第一个块,这很好用。谢谢!

【问题讨论】:

    标签: regex git rename git-commit


    【解决方案1】:

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

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

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

    【讨论】:

    • 只需要使用```cut -d">" -f2 ```
    猜你喜欢
    • 2021-12-31
    • 2011-01-29
    • 2021-05-19
    • 2017-09-18
    • 1970-01-01
    • 2012-04-24
    • 2021-02-24
    • 2019-03-08
    • 2012-09-10
    相关资源
    最近更新 更多