首页 > 解决方案 > 使用 git 仅提交一组文件中的部分更改

问题描述

我正在使用一个生成一堆 .xml 文件的工具。所有文件都包含特定的文本块。

例如:

<classAccesses>
    <class>TestClass</class>
    <enabled>false</enabled>
</classAccesses>

此文本将以这种确切格式存在于大约 100 个不同的文件中,但是:

所以我只需要在所有 100 个文件中提交这块文本,不需要其他更改。这可能吗?

标签: git

解决方案


如果当前没有工作答案,我将我的工作流建议作为答案发布,因为这在 git 中很简单。

选项 1:GIT 存储

您可以推迟 git stash 缓存中文件的所有当前更改。之后,文件等于以前的结帐状态。

假设您有一个回购“myrepo”并在某天检查了它:

cd /home/me
git clone gihub.com/myrepo
cd myrepo

然后您对签出的文件进行了更改

vi file1.txt
vi file2.txt

一段时间后,您需要对 file1.txt 和 file3.txt 应用一些特殊更改。

您可以执行以下工作流程:

git stash push
vi file1.txt
vi file3.txt
git add .
git commit -m "super fast preferred changes"
git push
git stash pull

现在处理你最后的工作更改。

选项 2:第二次结帐

另一种选择是将 repo 签入第二条路径并仅进行其他更改:

cd /home/me
git clone gihub.com/myrepo myrepo-2nd
cd myrepo-2nd

现在,您可以执行以下工作流程:

vi file1.txt
vi file3.txt
git add .
git commit -m "super fast preferred changes"
git push

之后,您可以删除第二个签出的文件并继续您的第一个签出:

cd ..
rm -rf myrepo-2nd
cd myrepo

要从您首选的先前提交中获取所有更改:

git pull

现在继续你的工作。


推荐阅读