我需要将干净的未版本控制代码关联到现有的 git 远程存储库。
我更好地解释我的情况。我的项目从 svn 转移到了 git。我有一个 svn 本地工作副本,其中包含必须与新的 git 存储库同步的旧代码(没有新的提交内容)。我可以克隆 repo,但我应该手动恢复许多被忽略的配置文件,我会避免它。
因此,我删除了所有 .svn 目录,并使用 git 远程存储库跟踪我的代码。
有没有办法做到这一点?
我需要将干净的未版本控制代码关联到现有的 git 远程存储库。
我更好地解释我的情况。我的项目从 svn 转移到了 git。我有一个 svn 本地工作副本,其中包含必须与新的 git 存储库同步的旧代码(没有新的提交内容)。我可以克隆 repo,但我应该手动恢复许多被忽略的配置文件,我会避免它。
因此,我删除了所有 .svn 目录,并使用 git 远程存储库跟踪我的代码。
有没有办法做到这一点?
我会提交您的工作目录以确保它在获取之前存在于历史记录中。(确保您位于项目根文件夹中)
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
选项的命令。它使您的工作文件夹保持不变,同时将分支指向您从远程获得的内容。
好的,我根据Adam Dymitruk和Eugene 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
最后,本地存储库将与远程存储库同步。
如果您真的是认真的,那么顺序将是:
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 中等等)
下面的工作吗?我在我的一个项目上进行了尝试,它奏效了。
1) 将 git 存储库克隆到与包含未版本化代码的目录不同的位置。
2) 将 .git 文件夹从作为 (1) 的结果创建的目录复制到包含未版本化代码的目录。
这对我来说有效地实现了 Adam Dymitruk 在上面的回答中所采取的步骤。