linux git clone 文件夹,“git clone”到现有文件夹的最佳做法是什么?

我有一个项目的工作副本,没有任何源控制元数据。 现在,我想在这个文件夹中执行相当于git-clone的操作,并保留我的本地更改。

git-clone不允许我克隆到现有文件夹中。 这里的最佳做法是什么?

#1楼

这可以通过克隆到新目录,然后将.git目录移动到现有目录中来完成。

如果您的现有目录名为“code”。

git clone https://myrepo.com/git.git temp

mv temp/.git code/.git

rm -rf temp

这也可以在克隆命令期间不进行结账时完成; 更多信息可以在这里找到。

#2楼

git clone your_repo tmp && mv tmp/.git . && rm -rf tmp && git reset --mixed

#3楼

这有两种方法。 在可能的情况下,我会从一个干净的文件夹开始,为你的新git工作目录,然后在以后复制你的版本的东西。 这可能看起来像*:

mv $dir $dir.orig

git clone $url $dir

rsync -av --delete --exclude '.git' $dir.orig/ $dir/

rm -rf $dir.orig

此时你应该有一个非常干净的工作副本,你以前的工作文件夹作为当前的工作目录,所以如果你运行git status ,任何更改包括文件删除都会显示在雷达上。

另一方面,如果你真的必须这样做,你可以得到相同的结果:

cd $dir

git clone --no-checkout $url tempdir

mv tempdir/.git .

rmdir tempdir

git reset --mixed HEAD

无论哪种方式,我要做的第一件事就是运行类似git stash东西来获取所有本地更改的副本,然后你可以重新应用它们并处理你想要提交的那些。

* 这两个示例都假设您从项目的父目录中的shell开始。

#4楼

不要克隆,取而代之。 在回购:

git init

git remote add origin $url_of_clone_source

git fetch origin

git checkout -b master --track origin/master # origin/master is clone's default

然后,您可以重置树以获得所需的提交:

git reset origin/master # or whatever commit you think is proper...

而你就像克隆了一样。

这里有趣的问题(以及没有回答的问题):如何找出裸树所基于的提交,从而确定要重置的位置。

#5楼

使用临时目录很好,但如果你想避免这一步,这将有效。 从工作目录的根目录:

$ rm -fr .git

$ git init

$ git remote add origin your-git-url

$ git fetch

$ git reset --mixed origin/master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值