我有一个项目的工作副本,没有任何源控制元数据。现在,我想把git-clone复制到这个文件夹中,并保留我的本地更改。
Git-clone不允许我克隆到现有的文件夹。这里的最佳实践是什么?
我有一个项目的工作副本,没有任何源控制元数据。现在,我想把git-clone复制到这个文件夹中,并保留我的本地更改。
Git-clone不允许我克隆到现有的文件夹。这里的最佳实践是什么?
当前回答
不要克隆,而是获取。在回购中:
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...
你就像克隆的一样。
这里有一个有趣的问题(也是一个没有答案的问题):如何找出你的裸树是基于哪个提交的,因此要重置到哪个位置。
其他回答
我将git克隆到一个新目录,并将现有目录的内容复制到新的克隆。
使用临时目录是可以的,但是如果您想避免这一步,这样也可以。从你的工作目录的根目录:
$ rm -fr .git
$ git init
$ git remote add origin your-git-url
$ git fetch
$ git reset --mixed origin/master
这可以通过克隆到一个新目录,然后将.git目录移动到现有目录来实现。
如果您的现有目录名为“code”。
git clone https://myrepo.com/git.git temp
mv temp/.git code/.git
rm -rf temp
这也可以在不执行克隆命令的情况下完成;更多信息可以在这里找到。
下面我做了,在一个现有目录下签出主分支:
git init
git remote add origin [my-repo]
git fetch
git checkout origin/master -ft
不要克隆,而是获取。在回购中:
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...
你就像克隆的一样。
这里有一个有趣的问题(也是一个没有答案的问题):如何找出你的裸树是基于哪个提交的,因此要重置到哪个位置。