Git 几个修改过的文件。仅提交branchA中的文件A,branchB中的文件B,

Git 几个修改过的文件。仅提交branchA中的文件A,branchB中的文件B,,git,Git,我正在做一个项目。每次我想创建一个新的功能时,我都会从它的主分支分支创建一个新的功能,称为FeatureX,稍后我会将其合并到主分支中 假设我创建了一个名为featureA的分支,最后修改了featureA(在fileA.py中)和featureB(在fileB.py中) 在branchA上,如果像我通常做的那样提交,我会在branchA的文件B中包含所做的更改,这是我不想要的。我想提交branchA中文件A中所做的更改和branchB中文件B中所做的更改 在branchA,我怎么可能只提交fi

我正在做一个项目。每次我想创建一个新的功能时,我都会从它的主分支分支创建一个新的功能,称为FeatureX,稍后我会将其合并到主分支中

假设我创建了一个名为featureA的分支,最后修改了featureA(在fileA.py中)和featureB(在fileB.py中)

在branchA上,如果像我通常做的那样提交,我会在branchA的文件B中包含所做的更改,这是我不想要的。我想提交branchA中文件A中所做的更改和branchB中文件B中所做的更改

在branchA,我怎么可能只提交fileA.py中所做的更改,然后签出到branchB并在那里只提交对fileB.py所做的更改

编辑:

我在最初的消息中没有指定这一点,也许我应该澄清一下:fileA和fileB存在于两个分支(branchA和branchB)中


但是,当我在branchA中提交时,我只想提交在fileA中所做的更改,而不修改fileB。然后签出到branchB并仅提交对fileB所做的更改,保留其fileA版本不变。

确保您位于功能A的正确分支上:

git checkout featureA
添加更改并提交它们

git add fileA.py#当然要使用正确的文件路径
git commit-m“对fileA的光荣更新”

现在,将您对
fileB.py
的更改与另一个特性分支一起使用,有一个简单而复杂的例子

简单案例:
fileB.py
在分支之间没有差异

切换到另一个分支,并执行相同的操作

git签出功能b
git add fileB.py
git commit-m“对fileB进行了极好的错误修复”
(稍微)更复杂的情况:
fileB.py
不同

如果
fileB.py
不同,则对
featureB
的签出将失败(Git将中止签出,并显示一条消息,表示未提交的更改将被覆盖)。因此,您可以尝试签出,除非使用
-f/--force
开关或使用类似于
git clean
的其他方法,否则不会丢失更改。您将得到以下错误:

error: The following untracked working tree files would be overwritten by checkout:
    fileB.py
Please move or remove them before you can switch branches.
Aborting
你得把找零的钱藏起来一会儿。像这样:

git stash#将所有未提交的更改保存到临时空间中
git签出特性b
git stash pop将尝试应用您保存的更改;可能会有冲突
#如果有冲突(Git会告诉您),请通过正常的解决方案
git add fileB.py
git commit-m“文件B中的大量错误修复”

谢谢你的回答,内维克。我编辑了我的原始消息,因为如果两个分支中都存在两个文件,我不确定您的答案是否有效,但我只想更新分支A中的文件A和分支HB中的文件B。会吗?刚刚更新了我的答案,把问题也包括进去:)再次非常感谢你,内维克。你的回答很有帮助!