使用git从远程仓库获取干净的副本

3

我正在使用git与SVN仓库。我的本地“master”分支有些混乱,每次执行git svn rebase时,我都会遇到各种问题,而我和我的同事都无法解决。所以,有没有一种方法可以从远程仓库获取干净的拷贝,并覆盖本地分支中的所有更改。


我猜我们需要更多的细节才能帮助你。第一步是,不要使用 git svn rebase,而是将它分成两个步骤。首先执行 git svn fetch,然后执行 git rebase trunk。看看哪一个失败了,以及失败的原因,并告诉我们。 - Jan Hudec
2个回答

6

重置将会把你所有跟踪的文件全部变为远程仓库里的版本。

git reset --hard 

使用 "git clean -xdf" 命令也可以清除您代码库中所有未被跟踪的文件。

git clean -xdf

这将帮助您创建一个“完整”的干净存储库。

抱歉晚回复。那个方法并没有像我预期的那样起作用。实际上,它根本没起作用。它显然做了一些事情,但不是我想要的。我只想获取远程SVN仓库中的所有文件和提交记录,以替换我的当前本地git仓库。一种‘使用所有内容更新我的本地主仓库,不要问我任何问题。直接覆盖它’的方式。问题在于它一直进入rebase区域,告诉我文件被锁定了。我删除锁定,添加更改,更新git,然后同样的事情再次发生。我对git仍然很蒻。 - screenm0nkey
@screenm0nkey:问题出在其他地方。如果你没有任何本地更改(git log trunk.. 没有显示任何内容),那么问题就在于从 svn 获取时出现了问题,而不是你的本地更改。重置确实无法解决这些问题。 - Jan Hudec

-1

您的意思是:

git reset --hard trunk

这将使当前分支指向指定的修订版本(使用修订版本进行重置)并匹配工作树(--hard)。您的先前版本将在 git gc 90 天后保留在 reflog 中(可配置)。

请注意,trunk 的名称可能因特定设置而异(我有 svn/trunk,但我相信在初始化 git-svn 时已定义了 svn/ 前缀)。


请看Kits帖子的评论,因为你们俩发布了相同的内容。我想;) - screenm0nkey
@screenm0nkey:我们发布了显着不同的内容。我发布了git reset --hard SOMETHINGtrunk是跟踪子版本主干的分支的默认名称,尽管它可能被配置为不同的名称),而他只发布了git reset --hard。只有git reset --hard会丢弃_未提交_的更改,我确信这对您来说是不够的。您需要参数(并需要检查您的配置是否适用于trunk或您需要的其他名称)。 - Jan Hudec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接