繁体   English   中英

如何将本地 git 存储库推送到远程 git 服务器?

[英]How does one push a local git repo to a remote git server?

对于我的工作,我的任务是查看 git(不是 github)是否会成为我们项目的可靠版本控制系统。 我只是想了解它现在是如何工作的。 我以前从未使用过 git,除了许多个月前的 compsci class 之前我们使用了 gui 和 github。

到目前为止我所做的(除了在两台机器上安装 git ):

在服务器上初始化一个裸仓库

mkdir /path/to/test.git
cd /path/to/test.git
git init --bare test.git

在本地机器上创建了一个 repo

mkdir testGitProject
cd testGitProject
git init

准备我的“项目”

*made some random txt files (1, 2, & 3)*
git add 1 
git add 2
git add 3
git commit -m "Initial commit, testing with three txt files"

将远程服务器添加到本地机器这是我相信我开始犯错误的地方

git remote add origin ssh://user@<remote_server_ip>/path/to/test.git

尝试推送到远程服务器

git push origin master

我必须使用我的 ssh 密码登录,并且本地计算机上的 output 表明一切都已成功“推送”。 我试图重新创建这个 output 但现在我在运行推送时看到的只是“一切都是最新的”。 我还想指出,我按照此演练在本地计算机上创建了一个“接收后”挂钩 - 不确定这是否重要。

看着各种演练和论坛帖子,我对live、起源和master感到很困惑。 我不确定这是否只是基于您命名分支/遥控器的名称,还是我需要更好地理解它们。 两个“分支”目录(在本地仓库和远程仓库上)都是空的,我认为我会在那里看到一些东西。

我觉得我了解 65% 的 git 是如何工作的,而另外 35% 的我一无所知。 我希望在我的远程仓库中看到这三个文本文件,但即使在运行 find 命令时也看不到它们。 这个过程至少有点接近我需要做的事情吗?

origin是远程存储库 URL 的默认名称。
但是在您的教程中,远程 URL 已注册并引用为“ live ”。

这是因为一个简单的git push默认情况下会推送到“ origin ”。
但是,更新实时服务器(顾名思义,它代表实时的对所有人可见的网站)应该是一个明确的操作。
通过使用非默认远程名称( live ),您可以确保对实时服务器的更改需要的不仅仅是git push :它需要git push live ,确保用户想要影响实时服务器。

由于推送是针对裸存储库完成的,因此它需要一个 post-receive 挂钩来检查已推送到实际实时网站文件夹的内容的内容。

因此/var/repo/myproject.git/hooks/post-receive可执行脚本具有:

git --work-tree=/var/www/myproject/ --git-dir=/var/repo/myproject.git/ checkout -f

通过推送到裸存储库,您会触发 post-receive 钩子,该钩子反过来会更新/var/www/myproject/文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM