【问题标题】:git push does not update remote workdirgit push 不更新远程工作目录
【发布时间】:2015-07-03 12:18:07
【问题描述】:

我确实执行以下步骤在 DEBIAN 服务器上创建 1) git 裸仓库; 2)一个工作目录,文件在本地 git push 后被复制; 3) Windows 上的本地克隆,克隆裸服务器 repo。

我执行了以下命令:

# SERVER: Setup git bare repo on server on Debian Wheezy v7.8, GIT 2.3.6
# mkdir /domains/site/test-workdir
# make a content copy on DEBIAN server into a test workdir
cp -rp /content/* /domains/site/test-workdir

mkdir /domains/git/site-bare.git
cd /domains/git/site-bare.git
git --git-dir=. --work-tree=/domains/site/test-workdir/. init
git config receive.denycurrentbranch ignore
cd /domains/git/site-bare.git/hooks
nano post-receive
# add the following content until # end
#!/bin/sh
export GIT_WORK_TREE=/domains/site/test-workdir/
export GIT_DIR=/domains/git/site-bare.git/
cd $GIT_DIR
git checkout -f
# end
chmod +x post-receive
cd ..
git add .
git commit -m "Initial commit"
git status
# On branch master
# nothing to commit, working directory clean


# LOCAL:
cd /w/Dev/\!GIT/
mkdir test-remote
cd /w/Dev/\!GIT/test-remote
git init
git remote add web-local ssh://root@192.168.1.101/domains/git/site-bare.git
git remote -v
# web-local       ssh://root@192.168.1.101/domains/git/site-bare.git (fetch)
# web-local       ssh://root@192.168.1.101/domains/git/site-bare.git (push)
git pull web-local master


# SERVER
cd /domains/site/test-workdir/
rm -r *

# LOCAL (Windows7 64bit, git v2.3.6)
# git push should execute post receive on remote, so workdir should get again the content
git push web-remote master

一旦我也得到了

Counting objects: 27, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (27/27), done.
Writing objects: 100% (27/27), 2.49 KiB | 0 bytes/s, done.
Total 27 (delta 21), reused 0 (delta 0)
remote: fatal: Not a git repository: '/domains/git/site-bare.git/.git'
To ssh://root@192.168.1.101/domains/git/site-bare.git
27b6ceb..8ed3301  master -> master

后来我没有收到这样的“不是 git 存储库”错误。 但是不管怎样,workdir 没有填满内容,这是我的问题。

更新: 如果我对服务器执行“git checkout -f”,那么 workdir 会被更新,所以这意味着 post-receive 钩子没有被执行。

UPDATE2:修复了接收后的错误,但仍未更新。就像我手动执行接收后脚本一样。

知道为什么远程工作目录没有更新吗?

【问题讨论】:

    标签: git git-push git-remote git-bare


    【解决方案1】:

    首先,您尝试手动执行的是 Capistrano 之类的工具的用途,您应该看看它。

    我认为您的问题是您在没有 --bare 的情况下运行“git init”。如果你想要一个裸 repo,那么使用 --bare,你不需要“git config receive.denycurrentbranch ignore”。

    您应该会看到以下相关问题: How to copy a pushed branch to another directory?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 2011-06-24
      • 2018-05-19
      • 2017-01-17
      • 2010-11-20
      • 1970-01-01
      • 2017-12-31
      • 2015-10-23
      相关资源
      最近更新 更多