如何创建一个可推送的裸git存储库,同时推送文件?

时间:2014-04-18 05:40:32

标签: git repository git-push git-bare

我在<path1>(远程)中有/f/gittest/foo。 我<path2>(本地)/f/gittest/bar。{/ p>

由于我现在不需要遥控器作为工作副本,主要是因为我无法进入活动分支,所以我裸露了它。

我通过创建.git目录并在git init --bare内运行/f/gittest/foo/.git。 我进入并将远程仓库添加到本地存储库,生成文件,添加,提交和推送到远程。更改似乎是推送,并且远程成功更新。但是,本地存储库跟踪的文件(例如example1.txt和example2.txt)不会显示在遥控器中(尽管我想在远程存储库中进行跟踪)。如何使用推送的文件更新此远程目录?我以前没有成功,没有镜像,但我不记得如何。

经过双重检查的行为 mkdir alpha/; mkdir beta/; cd beta/

mkdir .git/; cd .git/; git init --bare; cd ../../alpha/

git init; touch example1.txt(在example1.txt中输入文字)

git add example1.txt; git commit -m "Initial Commit"

git remote add destination ../beta/.git; git push destination master

3 个答案:

答案 0 :(得分:0)

如果您创建目录

mkdir some_dir
cd some_dir

并初始化一个简单的git仓库,

git init --bare
git remote add origin git@github.com:username/reponame.git

然后你创建一些文件说

echo "some_text" > somefile.txt
echo "some_text" > somefile1.txt

如果你在这个阶段推进,它们就不会反映在你的远程存储库中。

相反,如果您提交,

git add .
# Even if you push at this stage, you wont see the files in remote git server
git commit -m "Pushing to git server"

它们将反映在远程git服务器中。

编辑:

您无法像创建本地裸仓库那样在服务器上创建裸仓库。由远程git服务器来处理这种情况。例如,使用github,您可以从他们的UI创建一个裸仓库,或者他们为此提供API。此主题可能与Is it possible to create a remote repo on GitHub from the CLI without opening browser?

相关

答案 1 :(得分:0)

裸存储库没有签出版本,因此只会跟踪所有文件但不会在目录中显示它们。 如果你想要一个文件夹,检查你的存储库的最新提交,我建议有一个分离的树,在推送后由git钩子检出。

请参阅此处Git Post-Receive Hook for Website Staging

答案 2 :(得分:0)

首先,在.git文件夹中创建一个裸仓库并不是通常的最佳做法:

  • .git是非裸仓库的文件夹(其中一个工作树位于.git的父文件夹中)
  • foo.git将是一个裸仓库的文件夹的名称&#39; foo&#39;。

其次,推送到一个裸仓库意味着永远不会出现任何文件&#34;:一个简单的回购就是避免同步工作树。

相反,您可以将post-receive hook 添加到您的裸仓库中:

export GIT_WORK_TREE=..
git checkout -f HEAD

(正如我在&#34; Where are the project files stored in a git repository .git folder?&#34;)

中提到的