我正在运行 Ubuntu 10.04(64 位)并在 /etc/cron.hourly 中有以下脚本
cd /home/chris/path/to/directory
git add .
git commit -m "Commit message"
git push origin master
Run Code Online (Sandbox Code Playgroud)
该文件是 775,我可以手动运行它运行脚本并查看它推送到的服务器上的提交。这是手动运行的输出:
chris@IronHide:~$ /etc/cron.hourly/auto-commit
[master 8dc5299] Commit message
4 files changed, 8 insertions(+), 6 deletions(-)
rewrite 1h/1m/c.-b.-6.dat (100%)
Counting objects: 17, done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 4.64 KiB, done.
Total 9 (delta 3), reused 0 (delta 0)
To <repo_path_cencored>.git
6c6d0ad..8dc5299 master -> master
Run Code Online (Sandbox Code Playgroud)
不知道这是否重要,但我的 /etc/crontab 文件如下所示:
# /etc/crontab: system-wide crontab
# Unlike any other crontab …Run Code Online (Sandbox Code Playgroud) 假设我有一台本地开发机器,并且我将 git origin 设置为另一台机器“2”,是否可以将 machine2 的 git origin 设置为另一台机器?这将让我将我的代码从 dev 推送到 machine2,并将 machine3 作为 machine2 上的 repo 的远程备份。
谢谢
我有我的 github 帐户,我想从我的两个工作站访问它,一个 Ubuntu 工作站和一个 Windows 工作站。
我也是 SSH 和 git 的初学者,我按照所有说明在我的 ubuntu 笔记本电脑上使用 SSH 密钥设置我的帐户,一切正常,但是现在如果我想从我的 Windows 笔记本电脑使用我的 git 帐户,我需要生成另一个 ssh 密钥,或者我可以使用从我的 ubuntu 笔记本电脑生成的密钥?
也许我需要从我的 Windows 笔记本电脑生成另一个 ssh 密钥,然后用我的 github 帐户注册它以及我从我的 ubuntu 笔记本电脑生成的一个,并在各自的机器上使用每个?
最好的方法是什么?有最佳实践吗?
如果我可以在两台机器上使用相同的 SSH 密钥,我如何导入我已经在另一台机器上使用的密钥?
我通过 git 安装了 git apt-get,但发现版本已经过时了,所以我然后从 source 安装了 git。最终的结果相当令人费解:
$ git --version
git version 1.7.0.4
$ which git
/usr/local/bin/git
$ /usr/local/bin/git --version
git version 1.7.6
Run Code Online (Sandbox Code Playgroud)
这似乎which是在骗我……这似乎不太可能。这里实际发生了什么,我如何才能直接调用 git 来运行正确的版本?
我有一个运行 Ubuntu 9.10 的 Oracle VM VirtualBox,还有一个运行 Ubuntu 9.10 的 pysical DELL 服务器
我可以使用 putty 连接到 VM 和 DELL。我可以通过 ssh 连接到另一个,尽管使用的是 IP 地址。
ssh user@192.168.1.X
Run Code Online (Sandbox Code Playgroud)
然后在两台机器上,我都设置了 git repo:VM 作为 DELL 的克隆 - 我设法成功使用git clone user@192.168.1.X:/path/to/repo/on/DELL
因此,VM 将 DELL 作为远程存储库,称为origin,DELL 将 VM 作为远程存储库,称为siteVM
我在 VM 中做了一些更改,并提交了它们。
但是,如果我尝试从 DELL 存储库中获取数据,则会得到以下信息:
git fetch siteVM
ssh: connect to host 192.169.1.X port 22: Connection timed out
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
所以我迷路了。SSH 工作正常,我将 DELL 存储库克隆到 VM 上,没有任何问题。
什么阻止 SSH …
我正在尝试在服务器上安装 gitosis(由 OVH 托管并运行 Ubuntu 服务器 11.04)。我已经做过几次了,从来没有遇到过任何问题。
但是这一次,当我只是尝试克隆 gitosis 时,我有一些非常复杂的事情。
[root@ovks-1:~/]#git clone git://eagain.net/gitosis.git
Cloning into gitosis...
eagain.net[0: 208.78.102.120]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
zsh: exit 128 git clone git://eagain.net/gitosis.git
Run Code Online (Sandbox Code Playgroud)
根据我的搜索,9418 端口似乎已关闭。
但我不明白,根据定义,服务器不应该有任何关闭的端口,而且我找不到办法查看它们是否关闭。
那么如何检查端口是否打开以及如果关闭如何打开它?
感谢您的帮助。
WesleyDavid 请求:iptables -L结果
[root@odeoos-vks-1:~/]#iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么意思...谢谢:)
更新:
我终于使用 github 从 gitosis …
现在,我的 ubuntu 服务器上运行着 gitlab 和 gitolite。但是,这台服务器太慢了,我的公司希望将服务器移到另一台机器上。有没有办法将 gitlab 和 gitolite 服务器(整个文件、用户和设置)移动到另一台机器上?
再次安装和创建所有用户和存储库将是我的最后选择。先感谢您。
有没有办法使用 git 通过 SSH 将 git 分支部署/交付到不同的服务器?无需设置 git 服务器,使用 github 等服务或连接到远程服务器并从主服务器拉取。
我需要类似于 rsync 或 scp 的东西。我目前的快速和肮脏的解决方案是签出,克隆到 tmp 目录和 rsyncing 以部署服务器。
我将我的 salt sls 文件存储在一个 git 存储库中,但我有一个长期存在的问题,即我无法验证我的 YAML 是否代表了一组可以应用的有效状态(我也很难验证我的 YAML -- 那是不过要容易得多)。理想情况下,我想要某种方式在提交之前在我的工作站上验证我的状态。如果做不到这一点,某种方式可以检查预接收挂钩,这样我至少可以阻止狡猾的代码访问服务器。
我有一种情况,我需要使用两个不同的 SSH 密钥访问同一个 SSH 主机 (GitHub)。这没问题,我可以通过为主机名设置别名来轻松设置它。当此配置与我的 SSH 多路复用配置结合时,问题就来了。我似乎无法使用特定于主机的声明覆盖我的默认 ControlPath。
也许这只是它的工作方式?也许这是一个错误?难道我做错了什么?
顺便说一下,我使用的是 Mac 10.7。
这是我的配置:
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/ssh-%r@%h:%p
Host github.com-X
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_X
IdentitiesOnly yes
ControlPath ~/.ssh/connections/ssh-%r@%h-X:%p
Host github.com
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
Run Code Online (Sandbox Code Playgroud)
我稍微修改了一下,但似乎我总是得到 Host * 声明中指定的 ControlPath。
ssh -T git@github.com-X
Run Code Online (Sandbox Code Playgroud)
使用 id_rsa_X 以正确的用户身份登录我,但它会在此处创建域套接字:
~/.ssh/connections/ssh-git@github.com:22
Run Code Online (Sandbox Code Playgroud)
而不是:
~/.ssh/connections/ssh-git@github.com-X:22
Run Code Online (Sandbox Code Playgroud)
所以稍后当我尝试使用 id_rsa 发出 SSH 命令时,由于连接多路复用,我得到了 id_rsa_X 用户。换句话说:
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
为密钥为 id_rsa_X 的用户给我一条问候消息。
有任何想法吗?
编辑:对 vgoff 评论的回应——不,它似乎正在阅读我的所有配置......
$ ssh -vT …Run Code Online (Sandbox Code Playgroud)