30分钟,快速在项目中使用git


编   写:袁 亮
时   间:2017-01-17
说   明:30分钟,快速在项目中使用git

一、账号环境
    1、https://gitlab.oneitfarm.com
        使用自己的企业邮箱注册自己的账号
    2、安装windows环境
        https://git-scm.com/downloads/guis
        \\192.168.0.18\运维网络硬盘\y袁亮\software\Git-2.8.1-64-bit.exe
        cmd下运行 git 配置 
            git config --global user.email ""
            git config --global user.name ""
    3、生成sshkey (https,安全证书,一台电脑一个)
        任意目录,右键,打开 Git GUI
        help => show sshkey => Generate Key
    4、在gitlab添加ssk key
        https://gitlab.oneitfarm.com/profile/keys
    
二、加入开发组 
    1、申请加入开发者 https://gitlab.oneitfarm.com/geek
    2、审核通过,并分配相应权限
    
三、导出项目代码
    1、本地无代码,从远程拉取【必须会】
        1.1 注意事项 
            使用https协议的,ssh的服务器没有开启
            所有跟远程代码库交互,都需要输入git账号和密码
            windows下,空项目一直clone不下来
        1.2 linux
            git clone https://gitlab.oneitfarm.com/geek/dealer.git yl
        1.3 windows
            空目录,右键Git Gui
            Clone Existing Respository
            ps:需要输3次账号密码,不知道是什么鬼
    2、本地有代码,关联到远程一个空代码库【了解即可】
        2.1 linux
            a. 创建本地仓库 git init
            b. git remote add 
        2.2 windows
            a. 创建本地仓库 Git Gui => Respository => New
            b. 将本地代码,提交到本地仓库 stage change => commit
            c. 关联远程代码仓库 Remote => Add
                origin
                https://gitlab.oneitfarm.com/geek/dealer.git
            d. 提交到远程代码仓库
                push 
    3、本地有代码,关联到远程一个非空代码库
        略
    
四、常规操作 【必须会】
    1、本地仓库 查看当前git状态
        1.1 git status (svn st)
        1.2 可以通过配置alish,使用git st    
    2、本地仓库 新增文件
        2.1 新增 
            git add application/controllers/Store.php
        2.2 提交到本地仓库
            git commit -m '增加store控制器' application/controllers/Store.php
    3、本地仓库 修改文件
        3.1 查看文件改动
            git diff webroot/index.php
        3.2 不想修改,恢复文件
            git checkout webroot/index.php
        3.3 文件改动存入缓存区
            git add webroot/index.php
        3.4 改错,不想保持,取消修改
            git reset webroot/index.php
            git checkout webroot/index.php
        3.4 提交修改
            git commit -m 'index.php代码' webroot/index.php
    4、本地仓库 删除文件
        4.1 本地仓库删除 
            git rm debug.php
        4.2 发现删了,撤销
            git reset HEAD debug.php
            git checkout debug.php
        4.3 确认删除,提交
            git commit -m '删除调试代码' debug.php
        4.3 提交之后发现删错了
            a. 查看 log
                git log 
            b. 找到删除前的版本,并回滚到那个版本
                git reset --hard {commit_id}
                将被删除的文件备份出来
            c. 查看所有的版本log,并找到要恢复的版本
                git reflog
            d. 恢复到最新版本
                 git reset --hard {commit_id}
            e.将备份出来的代码还原回去
                cp或者mv回来,然后add,commit
    5、查看文件版本记录
        git log webroot/index.php
    6、提交代码到远程仓库
        git push -u origin master
    7、从远程代码库拉取最新代码
        git pull 
    8、常用设置
        8.1 pull push 免去每次输账号密码
            git config --global credential.helper store
        8.2 颜色设置
            git config --global color.ui true
        8.3 常用alias
            git config --global alias.st 'status'
            git config --global alias.ci 'commit'
            git config --global alias.co 'checkout'
            git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    9、忽略文件(日志,配置等不想要提交的文件)
        在项目文件下新建.gitignore文件
        文件中写入 /.idea/*  即忽略.idea文件 (!/.idea/echo.php 即不忽略.idea文件夹下的echo.php文件)
        *.txt 忽略txt类型的文件
        最后别忘了提交.gitignore文件
            
五、分支操作
    1、查看本地仓库分支及当前所在分支
        git branch 
    2、新建分支
        2.1 正常创建
            git branch dev
            git checkout dev
        2.2 命令合并
            git checkout -b dev
        2.3 从远程仓库创建分支
            a. 确保远程仓库有这个分支
            b. 更新本地仓库,确保本地知道远程仓库的分支 
                git remote update
                git fetch
                git remote show origin :查看远程分支
            c. 从远程分支中checkout一个分支到本地
                git checkout -b yl origin/yl
                ps:本地分支名可以起的跟远程分支名不一样,但不建议这么做,除非本地多个分支对应远程同一个分支
            d. 分支改动push到对应远程分支
                git push origin yl
    3、切换分支
        git checkout master
    4、删除分支
        git branch -d dev
        ps:如果删除未合并的分支,需要用-D参数,慎用,除非是写临时脚本的分支
    5、合并分支
        5.1 git merge dev 
        5.2 该命令是将dev分支合并到当前所在分支,因此需要先checkout到你所想要合并到的分支
            git checkout master
        5.3 冲突解决
            a. 手动修改冲突文件,然后提交
            b. 借助 mergetool (还没用过)
        5.3 查看分支合并情况
            git log --graph --pretty=oneline --abbrev-commit
    6、给绑定分支绑定远程分支
        git branch --set-upstream demo origin/yl
    7、拉取合并指定指定远程仓库的指定分支
        git pull  
        git pull origin yl

六、GitLab Flow 工作流
    1、参考文档
        http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
    2、我们采用的方式
        Gitlab flow
        版本发布
    
七、远程仓库使用
    1、添加远程仓库
        git remote add  
        shortname默认是origin
    2、查看远程仓库信息
        git remote :查看shortname
        git remote -v :查看完整信息
    3、拉取远程仓库的信息
        git fetch  :也可以使用,默认是origin
        ps:fetch只会拉取数据,但并不合并,pull是fetch之后会自动合并git merge
    4、推送到远程仓库
        4.1 git push origin master
        4.2 将本地master分支推送到origin远程仓库中对应的分支
        4.3 如果origin仓库里对应的分支已经有人改过,必须先pull下来,然后才能推送
        4.4 master分支推送到origin仓库的具体哪个分支,是由之前创建分支的时候决定的,并不是根据分支名来
            如果两个名字不一样,很容易出现一些看起来莫名其妙的问题,所以不要干这个事
    5、查看远程仓库
        git remote show [remote-name] 

八、标签tag (对应之前的release)
    1、本地仓库 查看所有标签
        1.1 git tag
        1.1 git tag -l '匹配规则,可以写正则'
        1.2 以标签名排序,不以创建时间
    2、本地仓库 创建标签
        2.1 git tag -a v1.0.0 -m '标签注释'
        2.2 不输入-m,在运行编辑器里可以更方便的写各种备注
        2.3 不允许打轻量标签,除非是本地测试用
    3、本地仓库 查看标签信息
        git show v.1.0.0
    4、将标签推送到远程仓库
        4.1 git push origin [tagname]
        4.2 多个标签,也单个单个推,不允许一次性把所有标签推上去
    5、从标签中检出新的分支
        5.1 git checkout -b fix-v2.0.0 v2.0.0
        5.2 类似分支的创建,如果本地没有v2.0.0这个标签,需要先从远程仓库pull或者fetch下来
    6、修复线上tag两种办法
        
        
参考文档:
    1、Git教程
        http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
    2、Git 工作流程
        http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
    3、Git分支管理策略
        http://www.ruanyifeng.com/blog/2012/07/git.html
    4、Git 使用规范流程
        http://www.ruanyifeng.com/blog/2015/08/git-use-process.html
    5、git 文档
        https://git-scm.com/book/zh/v2/
    6、Git可视化极简易教程 — Git GUI使用方法 
        http://www.runoob.com/w3cnote/git-gui-window.html
    7、GitLab Flow的使用
        https://www.15yan.com/story/6yueHxcgD9Z/
        https://about.gitlab.com/2014/09/29/gitlab-flow/
    8、如何使用gitlab的flow以及代码review
        http://mojito515.github.io/blog/2016/03/09/ru-he-shi-yong-gitlabde-flowyi-ji-dai-ma-review/
    9、The 11 Rules of GitLab Flow
        https://about.gitlab.com/2016/07/27/the-11-rules-of-gitlab-flow/
    10、使用git、git-flow与gitlab工作
        http://blog.2baxb.me/archives/736
    11、GitLab的Pull Request工作流
        http://www.jianshu.com/p/6bcd082101c1
    12、常用 Git 命令清单
        http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
        
        

发表评论