Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Subversion:显式提交文件?_Git_Svn_Commit - Fatal编程技术网

Git Subversion:显式提交文件?

Git Subversion:显式提交文件?,git,svn,commit,Git,Svn,Commit,我已经习惯了git的方式,必须接触你想要提交的每一个文件,并且,在做的时候,仔细检查差异。现在在工作中,我不得不使用svn,而且我一直不小心地提交东西。有没有一种方法可以让subversion像git一样运行,因为我必须明确地告诉每个应该包含在下一次提交中的文件?您可以创建一个只列出要提交的文件的变更集,然后提交该变更集。如果您在完成更改集时非常努力地删除更改集,并且在没有更改集的情况下从不提交更改集,我认为这对您来说是可行的。更简单的解决方案是使用图形客户机(如OrtoiseSVN,但对于所有

我已经习惯了git的方式,必须接触你想要提交的每一个文件,并且,在做的时候,仔细检查差异。现在在工作中,我不得不使用svn,而且我一直不小心地提交东西。有没有一种方法可以让subversion像git一样运行,因为我必须明确地告诉每个应该包含在下一次提交中的文件?

您可以创建一个只列出要提交的文件的变更集,然后提交该变更集。如果您在完成更改集时非常努力地删除更改集,并且在没有更改集的情况下从不提交更改集,我认为这对您来说是可行的。更简单的解决方案是使用图形客户机(如OrtoiseSVN,但对于所有具有类似功能的平台都有其他客户机),它会向您显示在提示您登录消息时要提交的文件列表。然后,如果您单击“提交”而不查看它们,这并不是因为它没有告诉您它将要做什么:)

我通常从一些IDE提交,比如Emacs,在那里我可以手动选择要提交的文件集。

另一种方法是在工作时使用git svn桥,除非您有理由不能这样做。除了你之外,没有人知道你实际上在使用Git。通过这种方式,您可以在实际使用Subversion的同时获得Git的所有好处。

在命令行中指定文件


svn commit-m“My commit message”folder/file1.c

要了解Rory的答案,如果您想要强制执行显式文件提交行为,您可以编写一个批处理或shell脚本,检查以确保您至少有一个参数不是提交消息,如果没有,则返回一个错误。这至少会提醒您明确地输入文件名


我总是在提交之前进行svn统计和差异,因此统计通常会提醒我,可能有一些事情我还不想签入。

Subversion默认情况下按照您想要的方式工作。添加添加、删除或修改的项目将被暂存,直到使用commit命令指定要提交的文件后才会提交。如果您正在使用命令行,只是在没有任何其他参数的情况下运行“svn commit”,那么我可以看到您的问题可能是什么,在这种情况下,我将使用其他人建议的变更集功能,并将提交时间用作自代码检查时间,以浏览所有变更,并决定哪些进入,哪些不进入

我还想补充一点,只进行部分提交是一个坏习惯,只有当您非常清楚自己在共享分支中所做的事情时,才应该进行部分提交,因为这是最常见的方法之一,可以中断生成操作,使意外的相关更改不包含在同一提交中

如果我有要单独提交的更改,我会为我当时不想提交的更改创建一个补丁或一组补丁,然后从我的工作副本中还原这些相同的文件,并向其他人推荐。既然工作副本只有我将要提交的更改,我将通过手动测试或单元测试来重建和验证正确性,然后只有当所有这些都通过时,才进行自我代码审查和提交。我认为这种方式是与大群体互动的最安全的方式,尤其是当你正在进行复杂的改变时。svn支持客户端搁置功能,通过单个命令将更改放入名称类似于更改集的临时存储中,这一过程也会变得更容易


另外顺便说一句,使用可以更轻松地管理变更集和将进入任何给定提交的文件。如果你的电脑在Windows上运行,我强烈建议你出于这个原因检查一下。

+1,因为我不知道这个功能,但在subversion中它们实际上被称为“变更列表”。啊,废话。。。我知道我应该查阅文档而不是凭记忆写作,但我变得懒惰了。抱歉。好的建议,谢谢:)我知道GUI应该能够处理这个问题,但实际上我还没有找到一个不将所有文件标记为默认提交的文件(选择退出)。我想我会选择git svn,因为我最熟悉git-gui。你是怎么做到的?