1

<path1>/f/gittest/foo(远程)。我<path2>/f/gittest/bar(本地)。

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

我通过并创建一个 .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

4

3 回答 3

0

如果创建目录

mkdir some_dir
cd some_dir

并初始化一个裸 git repo,

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。这个线程可能是相关的是否可以在不打开浏览器的情况下从 CLI 在 GitHub 上创建远程存储库?

于 2014-04-18T05:53:16.027 回答
0

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

请参阅此处用于网站登台的 Git 接收后挂钩

于 2014-04-18T06:17:02.260 回答
0

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

  • .git是非裸 repo 的文件夹(一个工作树位于 的父文件夹中.git
  • foo.git将是裸仓库“ foo”的文件夹的名称。

其次,推送到一个裸仓库意味着永远不会“显示”任何文件:一个裸仓库就是要避免同步工作树。

相反,您可以向您的裸仓库添加一个钩子post-receive

export GIT_WORK_TREE=..
git checkout -f HEAD

(正如我在“项目文件存储在 git 存储库.git文件夹中的什么位置? ”中提到的那样)

于 2014-04-18T06:18:13.943 回答