git自动拉取代码

第一种方法

现在有2台服务器

A服务器:git仓库

B服务器:开发环境

需求:当提交代码到git仓库的时候   开发环境可以自动pull代码。

现在需要在A服务器git仓库里写一个钩子 post-receive

#!/usr/bin/expect
spawn ssh root@123.123.123.113
expect "*password:"
send "abcdefghUFi+B\r"
expect "*#" {send "sh gitpull.sh\r" }
expect "*#"
interact

代码意思是:先ssh登录到B服务器(开发环境),然后输入密码 。最后执行gitpull.sh脚本

 

因为ssh登录之后默认是进入到root家目录下(/root)

现在在root目录下创建一个sh文件 并且给予可执行权限

编辑gitpull.sh文件

#!/bin/sh
cd /web/php_xiuxiu_admin
git pull

保存即可。

 

然后当每次git push的时候就会自动执行A服务器的钩子文件

 

 

第二种方法 限于一个服务器

#!/bin/sh

unset GIT_DIR
cd /opt/wwwroot/zentaopms
git pull

第三种方法

 

当使用gitlab等工具的时候

在钩子文件里里面加入sh执行文件

exec 'sh /www/testgitpull.sh'

然后创建/www/testgitpull.sh

#!/bin/sh
unset GIT_DIR
passwd=passwd@163.com
su - root <<!
$passwd
cd /www/wwwroot/test.dskong.com
git pull
!

因为git是git用户 不是root用户。因此需要切换到root用户

### 关于 Git 代码的基础概念 Git 是一种分布式版本控制系统,允许开发者在本地和远程存储库之间同步更改。`git fetch` 和 `git pull` 都是用来从远程仓库获更新的命令,但它们的工作方式有所不同。 #### 什么是 `git fetch` `git fetch` 命令会从指定的远程仓库下载最新的数据到本地,但它不会自动合并或修改当前工作分支中的内容[^1]。这意味着执行完 `fetch` 后,用户需要手动决定何时以及如何将这些变化应用到自己的分支上。 ```bash git fetch origin ``` 上述命令表示从名为 `origin` 的远程服务器抓最新改动。 #### 什么是 `git pull` 相比之下,`git pull` 不仅完成与 `git fetch` 类似的操作——即从远程仓库提新数据;而且还会立即尝试把所得的内容合并入当前分支之中[^2]。因此,在某些情况下可能会引发冲突,如果存在无法解决的差异,则需人工干预处理这些问题后再继续流程。 ```bash git pull origin main ``` 此例子是从远端 'main' 分支回变更并将其合入本地活动分支里头去。 #### 如何应对常见错误? 当遇到类似于 `"fatal: not a git repository"` 这样的提示时,通常是因为所在目录并非有效的 Git 工作树的一部分所致[^3]。此时应确认自己确实处于某个已初始化为 Git 库的位置之下再试一次即可解决问题。 综上所述,虽然两者都能实现从网络源处获得资料的目的,不过由于后者包含了额外一步骤即将外来更动融入现有项目结构内的动作,所以在实际运用当中往往显得更为便捷一些然而也伴随着潜在风险比如意外覆盖未提交过的变动等等情况发生几率增大许多倍数不等视具体情况而定。 ### 示例对比两种方法的实际应用场景 假设有一个团队合作开发环境下的场景: - 如果只是想看看其他成员最近做了哪些贡献而不急于把这些东西加进来的话那么就可以单纯依靠 `git fetch`. ```bash $ git checkout feature-x Switched to branch 'feature-x' $ git fetch upstream remote: Counting objects... ``` - 反之假如希望快速吸收外界影响以便接着往下做进一步改进则更适合采用 `git pull`. ```bash $ git pull --rebase upstream master From https://github.com/example/repo-name * branch master -> FETCH_HEAD Already up-to-date. First, rewinding head to replay your work on top of it... Applying: Add documentation about widget usage patterns ``` 以上展示了基于不同需求选合适工具的重要性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值