我有一个项目的工作副本,没有任何源控制元数据。现在,我想把git-clone复制到这个文件夹中,并保留我的本地更改。
Git-clone不允许我克隆到现有的文件夹。这里的最佳实践是什么?
我有一个项目的工作副本,没有任何源控制元数据。现在,我想把git-clone复制到这个文件夹中,并保留我的本地更改。
Git-clone不允许我克隆到现有的文件夹。这里的最佳实践是什么?
当前回答
你可以递归地输入以下命令行:
mkdir temp_dir // Create new temporary dicetory named temp_dir
git clone https://www...........git temp_dir // Clone your git repo inside it
mv temp_dir/* existing_dir // Move the recently cloned repo content from the temp_dir to your existing_dir
rm -rf temp_dir // Remove the created temporary directory
其他回答
只要用。在git克隆命令的最后(在那个目录下),像这样:
cd your_dir_to_clone_in/
git clone git@github.com/somerepo/ .
git clone your_repo tmp && mv tmp/.git . && rm -rf tmp && git reset --mixed
有两种方法。在可能的情况下,我会为你的新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开始。
要将一个git repo克隆到一个空的现有目录,请执行以下步骤:
cd myfolder
git clone https://myrepo.com/git.git .
注意。在git克隆命令的末尾。这将把repo下载到当前工作目录中。
使用临时目录是可以的,但是如果您想避免这一步,这样也可以。从你的工作目录的根目录:
$ rm -fr .git
$ git init
$ git remote add origin your-git-url
$ git fetch
$ git reset --mixed origin/master