Svn 删除和重命名文件

Svn 删除和重命名文件,svn,git,revision,Svn,Git,Revision,在使用SVN或Git项目的签出副本时,我经常在不使用相应的Git mv、SVN rename、Git rm或SVN delete命令的情况下删除或重命名文件,因此在将版本提交回存储库时,这些更改不会得到适当反映。除了在我这方面更加小心之外,还有什么解决办法可以在事后解决这个问题吗?对于git,删除文件后,请使用: git rm --cached myfile 在git中,如果已删除文件,则可以使用git commit-a,提交将反映删除,而无需执行git rm 像OrtoiseSVN和Orto

在使用SVN或Git项目的签出副本时,我经常在不使用相应的
Git mv
SVN rename
Git rm
SVN delete
命令的情况下删除或重命名文件,因此在将版本提交回存储库时,这些更改不会得到适当反映。除了在我这方面更加小心之外,还有什么解决办法可以在事后解决这个问题吗?

对于git,删除文件后,请使用:

git rm --cached myfile

在git中,如果已删除文件,则可以使用
git commit-a
,提交将反映删除,而无需执行
git rm

像OrtoiseSVN和Ortoisegit这样的Gui工具在这方面很聪明,在使用这些工具时,通常不需要进行显式删除和重命名。

对于Git,请查看。这将添加所有新的或更改的内容,以及删除不再存在的文件。不过,它也可能会添加您不想添加的文件,所以在这里要小心。 由于git没有显式跟踪重命名,这应该足够了(再加上一个
git提交


对于Subversion,您可以执行类似的操作,然后执行
svn commit
,以执行等效操作,但这不会正确跟踪重命名/移动。我认为找出哪些文件被重命名(也可能被更改),哪些文件被简单地添加/删除并不是一件小事。

对于git,
git mv
只是一个方便的别名,相当于移动一个文件并对旧文件执行
git rm
。如果忽略使用此选项,结果是删除了原始文件(git会注意到),并添加了一个新文件,git会忽略该文件,因为您没有调用
git add
<代码>git rm与此类似

这是git的缺点之一,因为它不会像其他版本控制系统那样强制您提交存储库中的所有更改。但是,可以通过
git status
命令和谨慎使用.gitignore文件轻松管理它。只要你保持你的树干净,或者适当地忽略它,你就可以一眼就知道你是否有丢失的未跟踪文件


至于事后修复,只需阶段化并提交适当的更改,在这种情况下,这些更改将是未跟踪的文件。

我是否必须找到我删除的文件并手动为每个文件执行此操作?必须有一种智能的方法一次完成所有操作,git非常强大,但我不知道。谢谢——这正是我所希望的。否则,我也可以对我删除的文件执行
git-rm
(即使文件不在那里)。谢谢——我确实使用了
git-commit-a
,但这似乎并没有删除我的旧文件……不幸的是,它会添加不需要的文件,但我认为git不会那么聪明(现在)。如果您有与这些不需要的文件匹配的模式,请将它们放入
.gitignore
(或
.git/info/exclude
)中,它们将不会自动添加。