我需要将干净的无版本代码与现有的git远程存储库相关联。
我更好地解释了我的情况。 我的项目从svn转移到git。我有一个svn本地工作副本,旧代码(没有新的提交)必须与新的git存储库同步。我可以克隆回购,但我应该手动恢复许多被忽略的配置文件,我会避免它。
所以我删除了所有.svn目录,然后使用git远程存储库跟踪我的代码。
有办法吗?
答案 0 :(得分:20)
我会提交您的工作目录以确保它在获取之前存在于历史记录中。 (确保您位于项目根文件夹中)
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
选项。它使您的工作文件夹保持不变,同时将分支指向您从遥控器获得的内容。
答案 1 :(得分:10)
确定, 我根据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
最后,本地存储库将与远程存储库同步。
答案 2 :(得分: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中或不存储等等)
答案 3 :(得分:0)
以下工作会怎样?我在我的一个项目上尝试过它并且有效。
1)将git存储库克隆到与包含无版本代码的目录不同的位置。
2)将.git文件夹从作为(1)的结果创建的目录复制到包含无版本代码的目录。
这有效地实现了Adam Dymitruk在上面的答案中所采取的步骤。