我使用Git作为VCS,使用IntelliJ IDEA作为IDE。
我想在更改列表中保留我的本地更改(我将不会提交的更改),名称为“local”,并在我的默认更改列表中进行其他更改(旨在提交)。当我有本地更改和我打算在同一文件中提交的更改时,会发生此问题。在这种情况下,在执行提交之前,我需要检查这些文件中的所有更改并丢弃所有本地更改。
有没有办法在第一个更改列表中保留文件中的一部分更改而在第二个更改列表中保留另一部分?
答案 0 :(得分:3)
实际上,现在可以使用IntelliJ对2018年Git部分提交的新支持。您现在可能已经遇到过它,但是有两种方法(至少)在不同的更改集中存在同一文件中的不同更改。
在任何情况下要注意的重要一点是,在无关或无效的更改集中的更改将以非常微弱的颜色显示,而不是在查看dif时使用正常的绿色/蓝色/等突出显示。微弱的突出显示意味着这是对您的工作副本的更改,但不会与“这个'改变集。 (可能在这里使用了错误的命名法)
保持局部变化的两种方法,但继续像往常一样继续工作:
只需将现有更改保存到位于非活动更改集中的文件,然后对该文件进行进一步修改。默认行为是向活动更改集添加任何新更改。当您从活动更改集提交此文件时,将不包括非活动更改。
如果您需要将现有更改拆分为两个不同的更改集,我发现这样做的方式稍微繁琐一些。希望其他人知道一种更好的方法......我这样做的方法是搁置更改而不还原它们,将更改移动到非活动的更改集,并还原或手动删除您想要处于活动状态的更改变更。此时,只需取消搁置更改并将其应用于活动变更集,或者不将它们应用于特定变更集。我确定可以按相反的顺序执行此操作(例如,保持文件处于活动状态,还原您要保留的'非活动状态'更改为非活动更改集的更改),或者任何其他混合和混搭。
如果您还没有想出来,希望这会有所帮助!
答案 1 :(得分:1)
不,更改列表(以及一般的java版本控制)不会像这样工作。此外,我认为你所做的事情可能是错误的 - 特别是考虑到你有git。
假设您是团队的一员,在某个地方使用集中式共享仓库推送您的更改(尽管如果您还单独推送到github,这样可行)...
您应该为您正在处理的功能设置一个分支机构 - 让我们称之为功能A'。在您的本地计算机上,您应该创建一个本地分支,让我们称之为“本地”。所以,你有这个分支结构:
master
-> Feature-A
-> local
您可以在本地工作并提交您喜欢的内容 - 您可以将其推送到共享仓库,例如备份。在此过程中,偶尔检查每个分支并将分支拉到它上面(因此,在本地,拉出Feature-A)以确保您拥有master的最新更改。当您准备就绪时,您可以签出功能A并合并来自本地的更改(这就像您的双重更改列表)。在开始处理新事物之前,请确保将(可提交的)更改从本地合并到Feature-A中。当功能A准备就绪时,您可以将其推送到中央存储库并发出主服务器的拉取请求。
基本上,你应该始终保持在Feature-A中可以推送的内容,并在本地'中进行开发,并在适当的时候将其合并到Feature-A中。