zoukankan      html  css  js  c++  java
  • Git工具和GitHub的使用

    一、Git工具的安装

    1)centos系统下安装

    1.1)查看环境

    [root@gitlab ~]# rpm -qa centos-release
    centos-release-7-4.1708.el7.centos.x86_64
    [root@gitlab ~]# uname -a
    Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    [root@gitlab ~]# getenforce 
    Disabled
    [root@gitlab ~]# systemctl status firewalld.service 
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: man:firewalld(1)

    1.2)yum安装,yum 工具

    #centos 自带git
    [root@gitlab ~]# rpm -qa git
    git-1.8.3.1-11.el7.x86_64
    
    #安装方法
    yum install git -y

    1.3)编译安装。建议使用编译安装。自带的git版本较低

      git工具下载:https://github.com/git/git/releases

    # 安装依赖关系
    yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel
    # 编译安装
    tar -zxf git-2.0.0.tar.gz
    cd git-2.0.0
    make configure
    ./configure --prefix=/usr
    make  
    make install  
    编译安装

    yum install autoconf -y

     

     yum install zlib-devel -y

     yum install -y perl perl-devel

    2)Windows下安装

      过程略

    2)git命令的基本使用,如显示文件,创建文件

    lenvovo@LENVOVO-PC MINGW32 /e/test
    $ mkdir git_test    # 创建文件夹
    
    lenvovo@LENVOVO-PC MINGW32 /e/test
    $ cd git_test/        # 进入文件夹
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test
    $ git init            # git 初始化,生成 .git下的隐藏文件
    Initialized empty Git repository in E:/test/git_test/.git/
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ cd .git/            # 进入隐藏文件
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!)
    $ ls                # 显示隐藏文件内容
    config  description  HEAD  hooks/  info/  objects/  refs/
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!)
    $ cd ..
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ ls -a
    ./  ../  .git/
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ cat first_program.py
    def sayhi(name):
        print("hello world!",name)
    基本命令使用

      git init   # 初始化文件

    3)提交文件

    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git add first_program.py        # 将代码放入暂存区
    warning: LF will be replaced by CRLF in first_program.py.
    The file will have its original line endings in your working directory.
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git commit    # 存入暂存区,失败,因为要表明是谁提交的代码
    
    *** Please tell me who you are.
    
    Run
    
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    
    to set your account's default identity.
    Omit --global to set the identity only in this repository.
    
    fatal: unable to auto-detect email address (got 'lenvovo@LENVOVO-PC.(none)')
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git config --global user.email "1257063655@qq.com"    # 写邮箱名
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git config --global user.name "lover"                    # 写用户名
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git commit    # 再提交,会弹出一个文件,里面必须添加为什么要提交文件
    [master (root-commit) 8323763] git test commit
     1 file changed, 2 insertions(+)
     create mode 100644 first_program.py
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git commit    # 再提交,显示没有内容需要提交了
    On branch master
    nothing to commit, working tree clean
    提交文件

    4)修改文件回滚操作,前提是没有git add

    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   first_program.py
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            readme
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ cat first_program.py
    def sayhi(name):
        print("Hello sb!",name)
        print('user')
        print('Second change')
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ git checkout first_program.py
    
    lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
    $ cat first_program.py
    def sayhi(name):
        print("Hello sb!",name)
        print('Second change')
    回滚

     5)命令总结

    git add first_program.py        # 将文件放入暂存区
    git add .                        # 提交整个目录与暂存区
    git commit    # 如果失败需要要表明是谁提交的代码
        git config --global user.email "1257063655@qq.com"        # 写邮箱名
        git config --global user.name "lover"                    # 写用户名
        会弹出一个文件,里面必须添加为什么要提交文件
    git commit -m "second commit test"        # 避免弹框,将为什么提交写在后面
    git status    # 查看文件的状态
    git checkout first_program.py            # 回滚操作,前提是没有git add,还原到上次提交时的文件
    
    # 提交之后的回滚
    git log        # 查看提交的日志
    git log --pretty=oneline        # 忽略不重要的信息
    git reset --hard HEAD^    # 回滚到上一次提交时
    git reset --hard 8323763f7b5dfd365f593fb724346ce692bdc258    # 回滚到指定的版本号
    git reset --hard 832376        # 写上前6位就可以了 
    # 如果关闭了命令行,找不到了版本号
    git reflog        # 回滚的最后招数,所有的操作记录都显示了,可查看到版本号

    6)git 提交代码

    git使用账号:
    账号:user03
    密码:123456
    ======================================
    mkdir -p /root/user_git
    cd /root/caojin_git/
        git clone http://192.168.1.5/ODW/ProjectD_svr.git
    cd ProjectD_svr
        git checkout trunk        从线上拉取分支代码
        
    每天第一次执行的操作
    cd /root/user_git/ProjectD_svr/
        git pull 从服务器更新代码到本地
    =============================
    # 修改代码后
    git status      查看差异文件
    git diff 文件
    ===对比无误
    git add  test.py        
    
    git commit -m "add test"        提交
    第一次提交时
    git config --global user.email "11111111@qq.com"
    git config --global user.name "user03"
    再进行git commit
    git push
        需要输入用户名,密码
        

     二、github的使用

    1)创建好账号后,创建项目

    2)创建好项目后。操作提示

     3)克隆创建的项目代码

    使用https的方式

     4)修改代码后上传至GitHub仓库

    上传代码步骤总结

    git clone https://github.com/xxxx/xxxxxxx    # 克隆代码到本地
    修改文件之后
    git add .
    git commit -m "first_commit"
        git config --global user.email "125@qq.com"
        git config --global user.name "you name"
    git push -u origin master    # 上传至远程仓库
        输入用户名
        输入密码

    5)将已有的本地仓库推送到GitHub仓库中

    在本地git仓库里面执行的操作都将上传至GitHub

    git remote add origin https://github.com/xxxx/xxxxxxx
    git push -u origin master

    6)使用秘钥的方式

    先在本地生成秘钥

     

    再将秘钥内容拷贝到GitHub的setting里面:deploy keys里只对该仓库有效

     

    SSH and GPG keys对所有仓库有效:new ssh key

    7)做了秘钥之后,可以使用ssh克隆GitHub仓代码

     

    git clone git@github.com:xxxx/xxxxxxx
    修改文件
    git add .
    git commit -m "change on linux"
    git push origin master

     三、开发流程。GitHub的分支管理

    1)分支使用流程

     创建了分支之后,提交会显示分支出来。

    分支使用流程总结

    git checkout -b dev        # 创建dev分支
    git branch                # 查看分支
        * dev    # *,当前分支
          master 主分支
    提交......
        git push origin dev # 提交到自己的分支上
    
    git checkout master        # 切换到 主分支
    git branch                # 查看分支
          dev    
        * master     # 当前是在主分支

    2)分支与主库合并代码

    在主库上
    git pull 更新主库代码
        Already up-to-date
    git merge dev    # 合并分支的代码
        只能合并没有相同的文件,有相同的文件,就有冲突
        
    git status        # 查看主库和分支代码不一样的地方
        both modified  : first_program.py    # 该文件都修改了
    vim first_program.py    # 查看文件差异,解决冲突
        def sayhi(name):
            ....
        <<<<< HEAD
            主库代码
        =======
            都有的代码
        >>>>> dev
            分支代码
    git add .
    git commit -m "test"
    git push origin master
    View Code

    需要使用比对工具软件

     3)如果主库已经更新,分支继续开发新代码,合并时也需要处理冲突问题

     4)保存当前环境的工作代码

    git stash         # 把当前工作环境临时保存
    git stash apply # 恢复之前保存的临时工作
    git stash list    # 查看临时保存的列表
    git stash drop    # 删除当前临时保存的环境备份
    git stash pop    # 恢复并删除临时保存的备份

    5)编辑不想维护,不想上传的代码

    vim .gitignore    # 编辑忽略不想要的上传的文件

    四、总结

    多人开发的工作模式

    1、首先,可以试图用git push origin branch-name推送自己的修改;
    2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    3、如果合并有冲突,则解决冲突,并在本地提交;
    4、没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功

    原来链接:https://www.cnblogs.com/alex3714/articles/5930846.html

  • 相关阅读:
    Dev XtraTreeList 学习
    DataGridView单元格显示GIF图片
    如何在.NET上处理二维码
    设计模式之UML类图的常见关系(一)
    .NET常用操作小知识
    Sql Server 存储过程使用技巧
    WinForm中如何判断关闭事件来源于用户点击右上角的“关闭”按钮
    WinFrom 安装包制作
    DBHelper数据库操作类(二)
    spring cloud zipkin
  • 原文地址:https://www.cnblogs.com/linu/p/9715686.html
Copyright © 2011-2022 走看看