zoukankan      html  css  js  c++  java
  • git 的初始化使用

    liuanyuan@baidu.com liuanyuan git
    准备工作
    前提: 确保已经安装Git客户端
    git commit必备配置,会依据这个配置确定代码提交人。执行下面两条命令会在机器家目录下生成~/.gitconfig文件

    1)配置账号
    1
    2
    git config --global user.email 用户名@abc.com # 邮箱地址
    git config --global user.name 用户名
    使用ssh协议上传下载代码必备配置,简单来说,就是在客户端所在的机器上生成一堆公钥私钥对,并将公钥(~/.ssh/id_rsa.pub)绑定到GitHub

    ```
    #1)生成密钥,一路回车、用默认选项
    ssh-keygen -t rsa 

    #2)复制到粘贴板
    cat ~/.ssh/id_rsa.pub | clip # Windows
    cat ~/.ssh/id_rsa.pub | pbcopy # MacOS
    #3)粘贴到Github,在Github 上添加SSH Keys[注意:
    ```
    然后执行 git clone


    ![这里写图片描述](https://img-blog.csdn.net/20180818170030757?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXF1bjAzMTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

    # git 常用命令

    ![图片](https://imgconvert.csdnimg.cn/aHR0cDovL2Jvcy5uai5icGMuYmFpZHUuY29tL3YxL2Fncm91cC9hNzE0MzFmMWI3ZGNiNDEzMjVkNTAwMTc2ZjEzZjdhZjUyYzdhMzUw)

    #git 与svn diff
    ![图片](https://imgconvert.csdnimg.cn/aHR0cDovL2Jvcy5uai5icGMuYmFpZHUuY29tL3YxL2Fncm91cC83OTFjYzJkYjk4Nzk0ZjFjMzA2M2E2Y2NjYTJmNzc3OTQyY2IwMzg0)
    ![图片](https://imgconvert.csdnimg.cn/aHR0cDovL2Jvcy5uai5icGMuYmFpZHUuY29tL3YxL2Fncm91cC85ZTlhNzA1ODlkMWRkNDU5OGZjNTkzZWI3ZTI1NGFhZjgzMGVmOTBi)

    #常用命令

    ##添加到< 暂存区 >
    git add .

    ##提交到< 本地git版本库 > 
    git commit -m “$本地提交代码描述语"

    ##提交到 < 远程版本库 >
    git push origin master:refs/for/$branchName

    ##从 <远程版本库更新> 到 <本地版本库>
    git pull origin master

    ##从远程版本库拉取本地 或者恢复 相当于 svn revert
    git checkout $fileName

    ##从远程版本分支合并到本地版本库中
    git merge $branchname

    ```

    创建新分支 
    1.进入pub工程目录(此步骤可选,如果不修改pub工程,就不需要此步骤)
    更新工程到最新(git pull)
    创建分支(git checkout -b release-brv1.0.0)
    把本地分支推送到服务端(git push -u origin release-brv1.0.0)
    增加分支配置文件(pub目录下的conf文件,即配置导航、引擎等的下载url)(cp -r conf/master conf/ release-brv1.0.0 ) (如有需要请修改conf/release-brv1.0.0 目录下的文件)
    将 conf/release-brv1.0.0 提交到新建分支release-brv1.0.0,并推送到服务端(git push origin head:refs/for/release-brv1.0.0)
    切回dev目录,
    2.进入dev工程目录下
    更新工程到最新(git pull)
    创建分支(git checkout -b release-brv1.0.0)
    (此步骤可选,如果第一步没有修改pub工程,就不需要此步骤)然后add、提交submodule的修改(即上面pub工程的release-brv1.0.0分支的最新提交)
    把本地分支推送到服务端(git push -u origin release-brv1.0.0)
    ```
    #git拉取分支操作
    ##git clone //整个代码库到本地
    ##git pull //取回远程主机所有分支的更新
    ##git branch -a //查看所有的分支信息
    ![图片](https://imgconvert.csdnimg.cn/aHR0cDovL2Jvcy5uai5icGMuYmFpZHUuY29tL3YxL2Fncm91cC9jZDkzMzcxMTg2M2Q5Zjk5MDkzZjM5YzkzNmQ1NjYzMDZhZmRhZTU0)
    ##git checkout -b branch_2017.2.01
    ```
    例如:
    1. git clone ssh://username@icode.baidu.com:8235/baidu/fsg-crm/crm-php crm-php && scp -p -P 8235 username@icode.baidu.com:hooks/commit-msg crm-php/.git/hooks/
    2. git pull
    3. git branch -a 
    4. git checkout -b branch_2017.2.01
    ```

    #1. git环境配置
    见此页面:


    #2. git使用
    ## 概述
    (git 工作区 )---add ---> (git 暂存区) ---commit ---> (git版本库 )---push(点击合入) --->( 远程版本库)
    ##2.1 克隆远程分支到本地
    git clone -b {分支名} {远程代码仓库} {本地文件夹名称}
    git checkout -b 本地分支名 {远程分支名}

    -----------------------
    示例如下:
    ```
    git clone -b datacenter_1-0-2_BRANCH ssh://maowandong@icode.baidu.com:8235/baidu/fsg-fmsp/datacenter datacenter // 将远程代码仓库中的数据中心模块的1-0-2分支拉取到本地的datacenter目录夹, 远程代码仓库可以在icode中查看
    ```

    ##2.2 常用查询命令
    ```
    git branch // 查看当前分支
    git branch -a // 查询所有远程分支
    git status // 查询当前分支修改状态
    git log // 查询git提交记录
    git show {commit id} // 查看某个commit修改的内容
    ```
    ## 2.3 git修改提交流程
    ```
    新增或者修改文件, 可以用git status查看文件的状态
    git pull origin {分支名} // 拉取最新的分支代码
    git add {文件} // 将新增的文件或者修改的文件添加到本地版本库控制中, 用'.'将所有修改或者增加文件添加到版本控制库中
    git commit -m 'comment' // 将修改或者增加的文件添加到本地仓库中
    git push origin {本地分支名}:refs/for/{远程分支名} // 将本地仓库中的文件提交到远程仓库(origin)的特定分支中
    点击上述push产生的cooder连接,review之后,点击合入 // 此为百度特有流程
    ```
    ## 2.4 分支切换开发便捷方式
    在通常情况下, 一般是多分支同时研发,或者在研发的过程中要紧急解决一些线上的问题,此时需要临时切换分支,但是此时开发分支里面的内容不想在紧急分支中可见以及可被提交,此种情况下,可有以下两种解决办法:
    ### a. 同步分支用不同的文件夹来管理
    此种方法是通过建立不同的存储分支的文件夹来做不同版本之间的修改内容之间的隔离。该方法的优点就是不同版本之间的修改内容绝对隔离,缺点是分支多了之后,维护成本较高。

    ### b. git stash
    当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。
    ```
    git stash save -u 'comment' // 对当前的暂存区和工作区的所有文件进行保存, -u忽略所有untracked files -a指全部,包括被git忽略的文件
    git checkout {其他分支} // 切换到其他分支,此时分支里面不含有上个分支里面的任何内容
    修改代码测试提交
    git checkout {之前分支} // 切换会之前的分支
    git stash list // 查看暂存区内所有保存的列表
    git stash pop // 弹出暂存区最新的暂存内容, 也可以使用git stash apply {版本号} 执行git stash list可以查询,如stash@{0}
    开发提交

    ```
    【重要】
    1. 使用git stash方法进行多分支同时开发时,一定要确认好开发分支,不然,执行git stash pop会将其他分支的内容应用到非修改分支。

    ## 2.5 git撤销
    传送门: https://segmentfault.com/a/1190000003102737

    ### a. git add撤销
    当执行git add之后发现了添加了不应该不应该添加的文件,可以执行如下操作
    ```
    git reset HEAD // 也可以用git log 查看提交记录, 将HEAD替换为特定之前的某个记录
    ```
    ### b. git commit后的撤销
    当执行了git commit之后发现提交了不应该提交的文件到本地仓库,可以执行如下操作撤销提交
    ```
    git log -n 10 // 查看之前的提交记录
    git reset {commitid} {文件} // 回退到之前的提交记录中, 本次提交后, 只是commit区的内容回退到之前的版本,而本地文件的修改不变, 也可以使用HEAD~1等快捷操作回退到之前的版本
    git reset --hard HEAD~1 // 强制回退到之前的版本,本地的修改会舍弃而不会保留,注意和不加--hard的区别
    ```

    ### c. git push 之后撤销
    需要执行以下操作:
    ```
    git rm {文件}
    git commit -m 'commit'
    git push origin {分支名}:refs/for/{分支名}
    ```

    ##2.6 git merge
    ```
    cd web-php
    git checkout web-php_1-0-1_BRANCH
    git merge master
    git add .
    git commit -m "合并分支"
    git push origin HEAD:refs/for/web-php_1-0-1_BRANCH
    ```
    备注:
    1. 在merge前尽量commit修改内容,或者稳妥起见,新拉一个干净的分支进行合并提交,在当前的开发分支内进行pull即可。

    # 3. 使用小技巧
    ##3.1. 设置.gitignore
    设置..gitignore文件,并在里面添加git忽略文件,这样以后可以避免提交一些无用的文件,如*~等
    ```
    *~ // 忽略所有以~结尾的临时文件
    ```

  • 相关阅读:
    CAS与ABA问题产生和解决
    OnCheckedChangeListener和setChecked之间冲突问题解决
    【二】 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。
    【一】设计一个类,我们只能生成该类的一个实例。
    深入学习semaphore
    RF-For循环使用
    【RF库Collections测试】List Should Contain Value
    RF采用SSHLibary库执行sudo命令,提示sudo: sorry, you must have a tty to run sudo错误的解决办法
    【RF库Collections测试】List Should Contain Value
    RF判断列表、字典、整数、字符串类型是否相同方法
  • 原文地址:https://www.cnblogs.com/liuqun/p/12655148.html
Copyright © 2011-2022 走看看