我如何克隆成非

我有目录A,文件与目录B匹配。目录A可能有其他需要的文件。 目录B是一个git回购。

我想克隆目录B到目录A,但git-clone不允许我,因为该目录非空。

我希望它只是克隆.git,因为所有的文件匹配我可以从那里去?

我无法克隆到一个空目录,因为我有目录A中不在目录B中的文件,我想保留它们。

复制.git不是一个选项,因为我想参考推/拉,我不想手动设置它们。

有没有办法做到这一点?

更新:我认为这有效,任何人都可以看到任何问题? - >

cd a
git clone --no-hardlinks --no-checkout ../b a.tmp 
mv a.tmp/.git .
rm -rf a.tmp
git unstage # apparently git thinks all the files are deleted if you don't do this

这对我有效:

git init
git remote add origin PATH/TO/REPO
git fetch
git reset origin/master  # this is required if files in the non-empty directory are in the repo
git checkout -t origin/master

注意: -t会为你设置上游分支,如果这是你想要的,通常是。


在以下shell命令中, existing-dir是其内容与repo-to-clone git存储库中的跟踪文件匹配的目录。

# Clone just the repository's .git folder (excluding files as they are already in
# `existing-dir`) into an empty temporary directory
git clone --no-checkout repo-to-clone existing-dir/existing-dir.tmp # might want --no-hardlinks for cloning local repo

# Move the .git folder to the directory with the files.
# This makes `existing-dir` a git repo.
mv existing-dir/existing-dir.tmp/.git existing-dir/

# Delete the temporary directory
rmdir existing-dir/existing-dir.tmp
cd existing-dir

# git thinks all files are deleted, this reverts the state of the repo to HEAD.
# WARNING: any local changes to the files will be lost.
git reset --hard HEAD

对我工作的答案中的一个稍作修改:

git init
git remote add origin PATH/TO/REPO
git pull origin master

立即开始在主分支上工作。

链接地址: http://www.djcxy.com/p/7845.html

上一篇: How do I clone into a non

下一篇: Git submodules: Specify a branch/tag