相关疑难解决方法(0)

在单独保留其他修改的同时提交和推送单个文件的最简单方法是什么?

我对Mercurial相对较新,我的团队现在正在尝试将其作为Subversion的替代品.

如何将单个文件提交并推送到另一个存储库,同时保留我的工作目录中的其他修改未提交(或者至少不推送到其他存储库)?

这种情况发生在我们的数据库迁移中.我们希望将迁移提交到源代码控制,以便DBA可以在我们处理代码修改时查看和编辑它,以便与数据库迁移一起进行.这些变化还没有准备好,所以我们不想把它们全部推出去.

在颠覆中,我只是这样做:

svn add my_migration.sql  
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql
Run Code Online (Sandbox Code Playgroud)

并继续在当地工作.

这不适用于mercurial,因为当我将它推送到另一个存储库时,如果我没有删除它的更改,它希望我将它们拉下来,合并它们并将该合并提交到存储库.合并后提交不允许您省略文件,因此它会强制您提交本地存储库中的所有内容.

我能想到的最简单的事情是将文件提交到我的本地存储库,克隆我的本地存储库,从实际存储库中获取任何新的更改,合并它们并提交该合并,然后它们将我的更改推送出去.

hg add my_migration.sql 
hg commit -m "migration notes" my_migration.sql 
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push  http://hg/project
Run Code Online (Sandbox Code Playgroud)

这样可行,但感觉我错过了一些更简单的东西,某种方式告诉mercurial忽略我工作目录中已有的文件,只需进行合并并发送文件.我怀疑mercurial队列可以做到这一点,但我还没有完全搞定mq.

version-control merge mercurial push

72
推荐指数
3
解决办法
4万
查看次数

将部分文件(Patch)提交给SVN

可能重复:
使用subversion进行部分提交

有什么办法我只能将文件中的一些更改提交给SVN吗?假设我正在研究2个新功能(或错误修复),它们都会影响同一个文件.我完成了1个功能,我只想提交其中一个更改.我意识到我可以为每个功能创建一个单独的分支,但这会以其他方式使事情变得复杂,不断在我可能正在同时工作的几个功能分支之间来回切换.

目前,当我需要这样做时,我会复制该文件,删除我不想提交的更改,然后提交.然后我把副本放回原来我刚刚提交的东西上,只留下我不想提交的更改.这可能是为了解决一个小错误修复可能提交1行所做的很多事情.

我知道有些人可能会说,你不应该这样做,因为提交整个文件的全部意义在于你确切地知道你提交了什么,并且它不会破坏代码.但由于您可以提交单个文件,因此这种情况没有太大区别,因为您仍然可能忘记提交与您正在更改的文件相关的其他文件,但仍会导致代码被破坏.或者同样忘记添加新功能所依赖的文件.

svn patch commit

7
推荐指数
1
解决办法
5578
查看次数

标签 统计

commit ×1

mercurial ×1

merge ×1

patch ×1

push ×1

svn ×1

version-control ×1