23

我需要将干净的未版本控制代码关联到现有的 git 远程存储库。

我更好地解释我的情况。我的项目从 svn 转移到了 git。我有一个 svn 本地工作副本,其中包含必须与新的 git 存储库同步的旧代码(没有新的提交内容)。我可以克隆 repo,但我应该手动恢复许多被忽略的配置文件,我会避免它。

因此,我删除了所有 .svn 目录,并使用 git 远程存储库跟踪我的代码。

有没有办法做到这一点?

4

4 回答 4

34

我会提交您的工作目录以确保它在获取之前存在于历史记录中。(确保您位于项目根文件夹中)

git init
git add -A
git commit -m "my latest'

现在我们有了

git remote add origin url-to-your-remote
git fetch origin

现在我们有了远程的历史

git reset origin/master

现在我们当前的提交是来自远程的最新提交

git add -A
git commit -m "Committed my state"

现在我们使用当前工作目录作为下一次提交的快照。

git push -u origin master

推送您的更改并跟踪分支。

关键是reset没有--hard选项的命令。它使您的工作文件夹保持不变,同时将分支指向您从远程获得的内容。

于 2012-10-24T16:55:36.770 回答
15

好的,我根据Adam DymitrukEugene Sajine的答案发布了我的问题的正确答案。谢谢大家的支持:)

  • 首先,删除.svn工作副本目录中的所有目录;
  • 在工作副本目录中初始化新的 git 存储库

    cd /path/to/my/project
    git init
    
  • 添加 git 远程存储库并获取它

    git remote add origin url-to-your-remote
    git fetch origin
    
  • 将工作副本重置到远程存储库

    git reset --hard origin/master
    

最后,本地存储库将与远程存储库同步。

于 2012-11-13T14:03:44.040 回答
3

如果您真的是认真的,那么顺序将是:

cd {your-project}
git init
git remote add {remote_name} {address}
git fetch {remote_name}

然后,您可以从远程具有的分支之一创建本地分支,例如:

git branch master {remote_name}/master

然后你可以添加你的代码:

git add {files}

或者

git add .
git commit

更新:

OP 指定有问题的代码是旧的并且没有什么可提交的,因此似乎整个情况无缘无故地过于复杂。OP 应该克隆新的存储库并完成它。忽略配置应根据项目政策重做(.gitingore 是否存储在 repo 中等等)

于 2012-10-24T15:22:29.050 回答
0

下面的工作吗?我在我的一个项目上进行了尝试,它奏效了。

1) 将 git 存储库克隆到与包含未版本化代码的目录不同的位置。

2) 将 .git 文件夹从作为 (1) 的结果创建的目录复制到包含未版本化代码的目录。

这对我来说有效地实现了 Adam Dymitruk 在上面的回答中所采取的步骤。

于 2018-04-13T16:36:48.183 回答