[英]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.