GIT 在服务器上布署 & 本地布署

    xiaoxiao2021-03-25  209

    GIT 在Linux & windows安装部署

    1)            安装git一.Linux部署 git

    [root@bjoss03 ~]# yum install git

    2)           创建git用户,用来运行git服务

    [root@bjoss03 ~]# adduser [git用户名]

    [root@bjoss03 ~]# passwd [密码]

    3) 初始化Git远程仓库:

    先选定一个目录作为Git远程仓库,假定是:

    /wrk/sysadmin/arolinez/web/ywtest,到这个目录下:

    1)      #创建远程git仓库   

                  gitinit

    2)     #设置git参数允许远端push并执行自动更新

                  git config receive.denyCurrentBranchignore

    暂时可以不用设置,有特殊作用(#GIT服务器实现web代码自动部署:             

    echo"unset GIT_DIR; cd ..; git reset --hard" > .git/hooks/post-update

    #设置可执行文件           

    chmoda+x .git/hooks/post-update)

    3) 设置远程要提交的用户信息

    gitconfig --global user.email  "你的邮箱"

    gitconfig --global user.name  "你的名子"

    4) 初始化远程git仓库(因为git init 没有默认创建master分支,下面步骤就是创建master分支)

    1.创建一个空目录:mkdir [文件名称]

           2.添加到git仓库中: git add [文件名]

           3.提交git仓库: git commit –m‘备注’

           4.推送到git仓库: git push

    5.查看仓库是否有推送内容: git log

    6.查看具体内容 : git diff [git log显示出来的commit 后面的字符串]

    至此,远程git仓库已经创建完成。

     

    4)创建用户后,将用户加入写入权限

           4.1)将用户git加入root组: chown -Rroot:git [git 仓库]

           4.2) 改变git仓库文件权限:chmod -R 775 [git 仓库]

     

    5)补充:

    1. 创建git仓库有两种方法:git init  和 git init –bare

    使用命令"gitinit --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repository)只会生成一类文件:用于记录版本库历史记录的.git目录下面的文件;而不会包含实际项目源文件的拷贝;所以该版本库不能称为工作目录(working tree);如果你进入版本目录,就会发现只有.git目录下的文件,而没有其它文件;就是说,这个版本库里面的文件都是.git目录下面的文件,把原本在.git目录里面的文件放在版本库的根目录下面;换句话说,不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面

    若是需要看到远程的文件就需要用gitinit,若不想要看到远程的文件,就用git init –bare.看需求使用那种初始化仓库

    2.使用shell脚本自动创建git仓库:

           #!/bin/sh

     

    name=$1

     

    if [[ -z $name ]]; then

        echo "Usage: $0 {name}"

        exit 1

    fi

     

    git init $name

    cd $name

    git config receive.denyCurrentBranch ignore

    #GIT服务器实现web代码自动部署:  

    echo "unset GIT_DIR; cd ..; git reset --hard" > .git/hooks/post-update

    #设置可执行文件

    chmod a+x .git/hooks/post-update

    初始化配置好后,在执行第4步骤初始化远程git仓库

    完成上面的步骤,我们在服务器上面就新建了一个裸的git仓库。

     

    二.克隆服务器上的git仓库

         1. 使用git命令:

              1)  克隆远程代码

                      git clone [git用户名]@[git仓库地址]

    例如:

    branch@10.2.254.222:/wrk/sysadmin/arolinez/web/ywtest/ipinfo-online

                  本地执行完该命令会让你输入密码,就是这个用户的密码

                         ,然后就会发现已经克隆到本地了。

    配置本地要提交的用户信息:

    gitconfig --global user.email  "你的邮箱"

    gitconfig --global user.name  "你的名子"

     

    2) 查看文件改动状态

         git status

    3) 提交更新

    拉取更新:git fetch

           git add [文件名称]

           git commit –m “[修改备注]” (虽然备注不是必须的吗,但是建议备注要有,方便以后查看和版本回退)

    gitpush <本地分支名>:<远程分支名>  

     提交远程

    如果当前分支只有一个追踪分支,那么都可以省略。

          gitpush

    若出现下面错误:

    则运行这个命令就行:git config --global push.default simple

    4)撤销修改

           git checkout – [文件名称]

    命令git checkout –[文件名称] 意思就是,把要修改的文件在工作区的修改全部撤销,这里有两种情况:

    一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    gitcheckout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

           5) 查看提交log

                  gitlog

     

           6) 版本回退

                  1. 回退到上个版本

                         git reset --hard HEAD^

    Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

    总结:

    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hardcommit_id。

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

           7) 解决冲突

                  Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:

           在调用3)步骤,提交冲突。

     

                 

     具体git命令如何使用请参考   

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

     

    2. 使用git GUI工具:

          因为本地环境是windows环境,下面就是windows系统的部署:

          1)本地部署git

                  下载连接:https://git-scm.com/ 

     

           2) 下载git GUI工具 -> TortoiseGit

                         下载连接:http://rj.baidu.com/soft/detail/19969.html?ald

    3) 设置tortoiseGit 配置:

    3.1) 设置本地git用户名和邮箱:

    安装后在桌面右键找到tortoiseGit->Settings->Git出现如下界面:

    设置好name&Email

    3.2)     设置ssh

      到git安装目录下,如下图所示找到ssh路径,设置如下

    3.3)     克隆代码

    右键找到git clone, 设置好clone的地址和存到本地的位置后,点击ok就可以了。

     

    3.4)     若要更改项目push的地址:

    3.5)Pull 拉取代码

    到项目下,右键找到git Synchronization 点击pull,拉取代码

     

    3.6)      提交到本地仓库commit

    3.7)     推送到远程push

     然后别人在自己电脑pull拉取的时候,就会把你提交上去的代码拉取下来

    三.SSH 免密提交

    经过上面的提交,会发现每次提交更新都是需要输入密码的,为了节约开发时间,提高工作效率,故配置ssh密钥登陆

    1) Linux生成私钥

    cd.ssh

    ssh-keygen-t rsa

          cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

          chmod600 ~/.ssh/authorized_keys

     

    2)收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

    3) 在用户主目录下(开始->运行->输入 "." 或 "%userprofile%")创建目录".ssh", 将生成的私钥文件( id_rsa)拷贝到".ssh"目录中。 如果目前下已经有同名文件,请手工修改和合并。

     

    然后就可以发现pull\commit\push都不会需要密码了

     

    四.创建git分支

    为了项目稳定及安全,将所有开发人员写的代码放到master上面,经过测试人员测试无误后推送到rel分支上(即正式线上),

    1).创建分支 git branch [分支名称]

    2).切换分支 git checkout  [分支名称]

    可以将两步合成一步:

    创建+切换分支:git checkout -b [分支名称]

    3)合并分支marage:     git [rel分支名称] --no-ff  [master 分支名称]

    按照这个规则推送分支上的改动。

     

    总结: 布署git环境的时候遇到一些问题:

    1.       新建的git用户没有权限push。

    原因:是因为新建用户没有对文件的写入权限,

    解决办法:在服务器上修改用户对文件的写入权限。

    2.     sshroot密钥有用,但是新建用户 配置无效果

    原因:是因为新建用户的生成密钥有问题。

    解决办法:重写生成密钥。安装上面的步骤,将密钥替换。

    3.     若使用git init 初始化仓库则本地不能更新.

    原因:因为git init 不创建master分支

    解决办法:使用git add,git commit 提交文件就会有分支了

    4.     提交后看不到文件

    解决办法:     远程端必须运行命令:git reset --hard才能看到push后的内容。

     

    转载请注明原文地址: https://ju.6miu.com/read-2102.html

    最新回复(0)