qd博客

海阔凭鱼跃,天高任鸟飞

Git自动化部署本地代码到线上项目目录

环境:

线上:CentOS 8 

本地:windows10 64

一.linux服务器操作

1.Linux 上安装git     


yum install git -y

2.添加用户git并设置一个密码

useradd -s /bin/bash git
passwd git

3.切换到git用户,创建git的代码仓库

su git
mkdir /home/git/project.git
cd /home/git/project.git
git init --bare


二.本地操作

1.生成秘钥并且将生成的公钥添加到服务器

ssh-keygen   // 一路回车


复制生成的key (当前用户下的.ssh/id_rsa.pub)


三.继续服务器操作

mkdir -p /home/git/.ssh
vim /home/git/.ssh/authorized_keys  //把上面复制的key粘贴进去,后保存退出
chown git:git -R /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys //权限不要出错
chmod 755 /home/git/.ssh


四.本地初始化并且添加远程仓库

git init //初始化
git config user.email "xxxx@xx.com" //添加用户邮箱
git config user.name "xxx"   //添加姓名
touch test //创建文件
echo "test">>test  //添加文件内容
git add .
git commit -m 'add test'
git remote add xxx ssh://git@127.0.0.1:22/home/git/project.git
git push xxx master

五.自动化配置

当我们在本地git push的时候需要将代码推到线上的项目目录。

1.进入线上project.git目录

cd /home/git/project.git

2.进入hooks目录,并且拷贝钩子文件并重命名。

cp post-update.sample post-receive
vim post-receive

3.注释其他的代码。将以下内容复制进去。

unset GIT_DIR
cd /www/xxx 
git pull origin master
exit 0

将上面xxx换成项目目录,然后保存并退出。

4.进入上面的项目目录,没有目录就创建

如:mkdir -p /www/project

5.初始化仓库并且将仓库属主属组改为git,否则会出现权限问题。

git init
git config user.email "xxxx@xx.com" //添加用户邮箱
git config user.name "xxx"   //添加姓名
git remote add xxx /home/git/project.git
chown -R git:git project

6.然后测试在本地项目添加文件,推送到远程就会将项目也部署到线上项目目录了。

git版本回退 实例

1.首先使用git log找到需要回退的版本号:

         比如:git log

        

         commit f3f695f194b251e5b3f940dd9003a72275495669

         Author: lqd001 <aaaaa@gmail.com>

         Date:   Mon May 27 21:26:58 2019 +0800


         add 统计


2.使用git reset --hard回退到上一次提交,或者使用git reset f3f695f194b 回退指定的版本

         比如:git reset f3f695f194b


        重置后取消暂存的变更:

        M template/default_pc/html/actor/detail.html

        M template/default_pc/html/art/detail.html


3.使用git checkout .放弃修改  (也可以放弃一部分修改,使用 :git checkout + 文件名即可)

        

        从索引区更新了 2 个路径


4.查看状态

        git status


        位于分支 master

        您的分支落后 'origin/master' 共 1 个提交,并且可以快进。

      (使用 "git pull" 来更新您的本地分支)


        无文件要提交,干净的工作区


5.将本地代码强行推到远程分支

        git push -f origin master


        总共 0 (差异 0),复用 0 (差异 0)

        To github.com:lqd001/idomv.git

         + f965e5c7...f3f695f1 master -> master (forced update)


6.使用git status 查看状态,一切都恢复如初。

        

        git status

        位于分支 master

        您的分支与上游分支 'origin/master' 一致。


        无文件要提交,干净的工作区


git fatal: 拒绝合并无关的历史

解决方法是:允许其合并历史。只需要在分支名后加上:--allow-unrelated-histories  即可(注意是两个中划线);

如下:

git merge branchName --allow-unrelated-histories 


Git中fatal: refusing to merge unrelated histories的解决

出现这个问题是因为远程代码与本地没有任何相关的历史,往往出现在直接拷贝了一份代码,然后想与远程建立联系的情况下。

可以使用以下命令:

如果是在push则:

git push origin master --allow-unrelated-histories

如果实在pull则:

git pull origin master --allow-unrelated-histories

如果是在merge则:

git merge master --allow-unrelated-histories

<< 1 >>
«   2020年9月   »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
搜索
最新留言
文章归档
友情链接
    控制面板
    您好,欢迎到访网站!
      查看权限

    Powered By Z-BlogPHP 1.6.4 Valyria

    (陕ICP备19025567号-2)

    召唤伊斯特瓦尔