上下文:
/home/dev
/thepath/codebase
/thepath/dev
(当前包含应该是分支的文件)最终我想要一个名为kizunadb.git
的裸仓库(我想我的主目录是合乎逻辑的),我希望将其视为“原始”,其中所有内容都来自克隆。 (根据this discussion)的结论
不知道如何从一个空的裸仓库开始,然后从其他地方把文件放入其中,我尝试从文件所在的位置开始。我成功地在/thepath/codebase
制作了一个回购并提交了所有文件。然后我做了:
cd ~
mkdir kizunadb.git
cd kizunadb.git
git clone --bare /thepath/codebase
嗯...这使得/home/dev/kizunadb.git/codebase.git
- 不是我的想法。
/home/dev/
再次修复该位置,但仍然会调用codebase.git
- 如果我只是更改名称,我会破坏它吗?kizunadb.git
到 /thepath/codebase
完成代码 (使用克隆或结帐 - 不确定哪个是正确的命令)?我知道git并不是真的有“主要的”这个概念,但我注意到教程中的参考文献是“原创” - 不知道它是如何起作用的...... /thepath/dev
,这样我就可以在不丢失正在进行的工作的情况下进行分支? (我知道我可以移动整个目录,克隆存储库,然后覆盖repo的文件,但我怀疑有一种更简单的方法。)如果我以错误的顺序做事,我很高兴重新开始。
答案 0 :(得分:2)
首先,这会更好:
cd ~
git clone --bare /thepath/codebase kizunadb.git
其次,一个简单的回购是供贡献者推进的。
但是要使用代码库内容正确初始化您的裸仓库,我宁愿遵循" “fetch --all
” in a git bare repository doesn't synchronize local branches to the remote ones"中描述的工作流程:
cd /thepath/codebase
git clone --mirror . ~/kizunadb.git
git push ~/kizunadb.git --mirror
可以使用post-receive
挂钩完成cd
到第二个非裸仓库并从裸仓库中取出:在" Is --bare option equal to core.bare config in Git?& #34 ;.
假设/thepath/codebase
是一个git repo。
/thepath/dev
将是裸仓库kizunadb.git
的简单克隆,供您开发。
git stash
将允许您在不丢失正在进行的工作的情况下进行分支
请参阅" GIT: commit changes to old/safe branch while in new/dirty/dev branch without checking out or losing unstaged data"。
正如您在评论中提到的那样,对于单个开发人员来说,一个简单的回购可能是多余的。
你可以:
/thepath/dev
git --git-dir=/thepath/dev/.git --work-tree=/thepath/codebase checkout -f
"无论何时你想部署代码。在这种情况下,/thepath/codebase
甚至不是git repo,而只是在部署时被视为/thepath/dev
工作目录的树。