【问题标题】:How can I associate local unversioned code to git remote repository?如何将本地未版本化代码关联到 git 远程存储库?
【发布时间】:2012-10-14 16:01:25
【问题描述】:

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

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

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

有办法吗?

【问题讨论】:

  • 你的意思是添加它?同事是什么意思?
  • 您可以设置 git 存储库之间的关系。您无法与非托管代码和远程存储库建立关系 - 您需要将其放入本地存储库。
  • 更多细节会有所帮助,您是指要覆盖的新代码还是现有代码?给我们一个例子来解释你的情况,我们大多数时候不介意读者。
  • @JPM 对不起,我在描述中添加了一些细节

标签: git version-control repository git-remote


【解决方案1】:

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

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

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

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

【讨论】:

  • 好的,我了解,这可能是解决方案,但我的本地代码已过时,我需要跟踪我的旧代码,以免在克隆存储库时恢复许多被忽略的文件。但是您已经使用选项--hard 提出了正确的解决方案。这是给我的:)
  • yes.. 添加 --hard 选项以进行更改。最好git stash -u 他们以防万一在使用 --hard 发出重置之前。
  • 您的意思是保存与存储库中不同的文件吗?
  • 我不明白的是,如果您打算执行“reset --hard”,为什么不克隆 repo 并完成它呢?特别是如果您在问题中所说的没有什么可提交的?
  • @EugeneSajine 我必须维护 .gitignore 中的复杂配置文件,我会避免克隆然后恢复所有配置文件。
【解决方案2】:

好的, 我根据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
    

最后本地仓库将与远程仓库同步。

【讨论】:

    【解决方案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 中等等)

    【讨论】:

    • 执行此过程后,git pull 失败并显示 fatal: No remote repository specified....
    【解决方案4】:

    以下方法可行吗?我在我的一个项目上进行了尝试,它奏效了。

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

    2) 将由 (1) 创建的目录中的 .git 文件夹复制到包含未版本化代码的目录中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-16
      • 2021-01-25
      • 2011-09-16
      • 2020-04-21
      • 2014-10-19
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      相关资源
      最近更新 更多