相关疑难解决方法(0)

得到"致命:不是git存储库:'.'"当使用更新后挂钩在另一个repo上执行'git pull'时

我是git的新手,所以如果我在这里滥用术语,我会道歉(请纠正我),但我会尽我所能.

我正在尝试在Web服务器上设置一个裸git repo(hub)和一个开发站点工作副本(prime).我试过在这篇文章之后模仿它.我希望每当推送集线器repo时都要更新开发工作副本.我的印象是,正确的钩子是这样的post-update,我已经创建了这样:

#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Run Code Online (Sandbox Code Playgroud)

更新

当我将更改从本地存储库推送到裸集中心时,我从更新后的脚本中获得以下输出:

remote: sites
remote: fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)

但是,如果我以用户"站点"的身份SSH进入服务器并手动执行此脚本,那么这个钩子或脚本可能会出现什么问题?

git githooks

84
推荐指数
2
解决办法
2万
查看次数

如何保持两个git repos同步?

我正在colo工具中的私有服务器上运行我自己的私有git存储库.我将它用于任何我无法开源的私人项目.我使用github进行所有开源工作.

我在桌面ubuntu机器和MacBookPro上进行开发.当我在开发系统上进行更改时,我将更改推送到colo中的原点并拉到另一个系统.我非常擅长将所有三个系统保持最新状态,主要用于备份和灾难恢复.

现在BitBucket正在免费提供私人git托管,我正在考虑在那里添加我的项目的克隆.此外,我可以使用BitBucket提供的额外功能,我的准系统私人git服务器不提供.但是,我想继续在我的colo服务器上保留私人存储库的副本以及备份冗余.

所以我有几个问题:

  1. 在不改变我的标准开发过程(编辑,添加,提交,推送)的情况下,如何自动将推送到我的服务器的提交同步到bitbucket项目?每次我推送到我的git服务器,我都希望这些提交能够自动推送到我的bitbucket项目.我不想改变我的工作流程,并希望对我的开发客户端进行必要的更改.

  2. 如果我想使用bitbucket作为我的主要git repo,如何将我的项目从私有git服务器迁移到bitbucket?

  3. 一旦我迁移到bitbucket,我仍然喜欢我的服务器上的另一个备份.如何自动提交bitbucket被推送到我的git服务器?这基本上与问题1相反.

git github bitbucket

9
推荐指数
2
解决办法
2917
查看次数

我可以在没有本地副本的情况下在远程存储库上发出 git rev-parse 吗?

我的本地 git 存储库位于加密卷内。我希望git pull --all只有在远程有新提交时才能运行。但是,我无法像这里一样使用 post-receive hook由于我没有加密卷的密码,因此。这意味着即使钩子会被触发,我仍然不知道安装卷和拉取新更改的密码。所以我正在寻找其他一些替代方案,我想到的一种可能方法是向遥控器询问最新版本的 SHA 并将其与本地副本知道的最新版本 SHA 进行比较,如果它们匹配,我不需要运行 pull 命令,如果它们不匹配,那么我需要运行 git pull 命令。

有没有办法可以git rev-parse master在远程存储库上运行?

您可以在此处获得有关我的问题的更多背景信息

git bitbucket git-pull

5
推荐指数
1
解决办法
6180
查看次数

git pull 直到有东西可以拉

有没有办法git pull直到有东西可以拉。

假设我正在等待一位同事推送他的最新更改,因为我不耐烦并且不看他的屏幕,我只是运行watch git pull直到我看到有东西被拉出,但我可能会错过这一刻并浪费一点比必要的时间更多。(注意:是的,这是一个非常小的不便,但仍然是不便:))

git pull似乎没有不同的返回值,无论它是否实际拉了一些东西,但也许有一些我不知道的晦涩的、未记录的选项?

编辑: 感谢您的回答,我将其添加到我的 .zshrc 中:

alias gitpullwait="git pull | grep "已经是最新的" > /dev/null; while [ $? -ne 1 ]; do git pull | grep "已经是最新的" > /dev/null;完成;通知发送拉 f$

它看起来很丑,但对我有用。

git pull wait

5
推荐指数
1
解决办法
721
查看次数

无法git克隆服务器上的文件夹然后编辑和git push?

之前我使用过Mercurial(Hg),可以在本地PC上做一些事情:

hg clone ssh://peter@hostingcompany.com/~/mysite.com
Run Code Online (Sandbox Code Playgroud)

然后将有一个名为的本地文件夹mysite.com,我可以编辑其内容,提交,并说出hg push并将其推送到服务器.当然,为了让内容显示在"工作目录"中,我将不得不在ssh那里做一个hg up.

使用Git,如果我这样做,在服务器上,做一个

git init
git add .
git commit -m "ok"
Run Code Online (Sandbox Code Playgroud)

在当地的电脑上,做一个

git clone ssh://peter@hostingcompany.com/~/mysite.com
Run Code Online (Sandbox Code Playgroud)

但是当我编辑一个文件时git push ssh://peter@foo.com/~/mysite.com master,它会拒绝它,因为它不是一个"裸存储库".

有办法吗?

  1. 无论如何推它,像Hg?
  2. 或者,更好的是,推送它并让它自动执行类似的操作hg up- 是的git checkout,以便内容在mysite.com上立即可视(在任何地方使用任何Web浏览器).

更新:

看起来通常的做法是推出一个简单的回购......但我们不能使用一个简单的回购并使(2)上面的工作?如果这是一种实用的方式,那么我们不必坚持"推动裸机回购"规则吗?

如果还有其他原因仍然需要在服务器上推送裸机并克隆...那么:

如果服务器有目录,例如~/mysite.com~/other_folder等,然后在那里应该用于回购mysite.com坐? mysite.com是网站的内容,所以如果我放一个index.html,那么世界上的任何浏览器都可以看到它.那么创建一个裸仓库,~/mysite.com从它上面克隆,在本地PC上,在本地PC上git push <path> master; ssh <path> "cd to that folder and do git checkout to update the content"自动使用1行是不错的?这条线是 …

git

2
推荐指数
1
解决办法
743
查看次数

标签 统计

git ×5

bitbucket ×2

git-pull ×1

githooks ×1

github ×1

pull ×1

wait ×1