首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们能否从现有的本地存储库中重新克隆git存储库?

我们能否从现有的本地存储库中重新克隆git存储库?
EN

Stack Overflow用户
提问于 2014-03-10 06:05:31
回答 5查看 50.9K关注 0票数 7

由于git是一个分布式VCS,所以它应该有对存储库所做更改的完整历史记录。

那么,我们能不能提取,这个版本的回购是第一个克隆的?

事实上,我已经做了很多改变,我现有的本地回购。并且不希望通过丢失数据而恢复到原始状态。但是,我希望使用现有的git对象(blob/tree)将原始存储库(最初克隆的)提取到其他位置。

注意:我现在没有访问git服务器的权限。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-10 06:43:00

试试这个:

代码语言:javascript
运行
复制
git clone SOURCE_PATH NEW_PATH # clones everything you have committed up to now
cd NEW_PATH                    # go to new clone, don't modify the pre-existing one
git reset --hard REV           # REV is the revision to "rewind" to (from git log)

因此,您需要明确地确定要返回哪个版本(Git可能不知道您最初克隆的是哪个版本,但很可能您可以找到它)。第一步是从本地磁盘克隆到不同目录下的本地磁盘,这样就可以保持现有工作不受影响。

票数 4
EN

Stack Overflow用户

发布于 2014-03-10 06:51:47

如果我正确理解,您将您的项目从远程回购(称为本地回购- local_repo_1)中克隆出来,之后您对其进行了一些更改(未提交),现在您希望获得原始克隆的git的另一个副本,而不是来自local_repo_1,而不是来自远程。

您可以在以下步骤中完成此操作:

  1. 把你的工作藏起来 git stash save stash_name //give any name to your stash, say local_repo_2
  2. 现在,您将只剩下从遥控器克隆的裸回购,您可以通过以下方式克隆它: 离开你的git回购 cd .. 无性系 git clone /path/to/local_repo_1 local_repo_2 // local_repo_2 is the new repo 如果您也有一些本地提交,那么执行一个 git log 并将其重置为所需的SHA。 git reset --hard SHA
  3. 最后,您可以回到您的local_repo_1并应用您的藏品。 git stash apply

瞧,现在你有:

local_repo_1:你的改变,你已经做了以上的裸露回购,回到原来的形式。

local_repo_2:远程回购的副本而不需要您的本地更改

票数 2
EN

Stack Overflow用户

发布于 2019-04-02 10:55:16

您可以将此脚本添加到bash中。

代码语言:javascript
运行
复制
reclone () {
    set -e
    basename=${PWD##*/}
    remoteurl=$(git remote get-url --push origin)
    cd ..
    echo $basename
    echo $remoteurl
    rm -rf $basename
    git clone $remoteurl
    cd $basename
    set +e
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22293118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档