• GIt备忘录


    TOC

    [========]

    常用命令

        git init     //仓库初始化
        git clone git@github.com/xxxx.git    //克隆远程仓库到本地
        git remote add origin git@github.com/xxxx.git    // 连接到远程仓库
        git status // 查看版本库的状态
        git add .|[file you want add like README.md] // 添加修改的文件进入版本库
        git commit -m "the content of your modify" // 提交版本库
        git push -u origin master // 上传到远程版本库</pre>
    

    git全局配置和单个仓库配置邮箱和用户名

    全局配置

    git config --global user.name "github's Name"
    git config --global user.email "github@xx.com"
    git config --list

    单个仓库配置

    git config  user.name "github's Name"
    git config  user.email "github@xx.com"
    git config --list

    git config --list查看当前配置, 在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置


    本地ssh-key的创建

    ssh-keygen -t -rsa -C "dalinyy@163.com"

    然后在C:UsersAdministrator.ssh(windows)目录中可以看到生成的ssh-key。


    git从远程库同步到本地仓库

    1. 远程仓库发生改变,本地仓库没有改变

    1.查看远程仓库 : git remote -v
    2.把远程仓库更新到本地 : git fetch origin master
    3.比较远程和本地版本的差异 : git log master.. origin/master
    4.合并远程仓库 : git merge origin/master

    2. 远程仓库没有改变,本地仓库发生改变(将本地更新到远程)

    1. 常看更改 : git status
      1. git add .
      2. git commit -m "content"
      3. git push -u origin master

    版本回退 : git reset

    1. 基本而用法

    '''
    1. git log //查看历史版本
    2. git log --graph //一图形界面方式查看历史
    3. git reset HEAD~n //回退到前 n 版本, n = 前几个版本
    4. git reset id //回退到任意一个id版本
    '''

    2. --hard参数

    添加--hard参数: 表示回退到某个版本并且丢弃调工作区进行的修改

    git reset --hard HEAD~1 或者 git reset --hard id

    不添加--hard参数:不加该参数表示回退到某个版本但保留工作区的修改。

    git reset HEAD~1 或者 git reset id

    推送和拉取

    1. git push: 推送本地分支到远程

    当修改完成,本地的改动都已经提交到本地库,则可以将本地分支推送到远程代码库了。

     git push origin master origin  //表示远程代码库的一个别名(也可以修改为其他名字,可
     git remote                     //master 表示需要推送的分支名称。

    如果,push 的过程中提示当前分支进度落后于远程的分支,则需要通过 git pull 命令来拉取远程最新状态和本地分支进行合并,完成之后再 push 到远程就可以了。

    2. git pull: 拉取远程分支到本地并合并

    一般是本地分支的进度落后于远程分支时,需要使用该命令。

    git pull origin master origin   //表示远程代码库的一个别名(也可以修改为其他名字,可
    git remote                      //master  表示需要拉取合并的分支名称。

    常用 git pull --rebase origin master 用 rebase 的方式进行,不会产生 merge 保持分支干净、整洁

    分支管理

    1. git branch: 分支操作

        git branch                //显示本地所有分支以及当前所在哪个分支
        git branch branchName     //用于新建名为 branchName 的新分支
        git branch -d branchName  //用于删除名为 branchName 的分支
        git branch -D branchName  //用于强制删除分支

    2. git checkout: 分支间切换

    该命令除了进行分支间切换功能外,还可以用来丢弃工作区中的修改内容,这里就不作介绍了,仅介绍分之间的切换功能

        git checkout branchName     //用于从当前分支切换到名为 branchName 的分支上。
        git checkout -b branchName  //用于新建名为 branchName 的分支并切换到该分支上。

    注意与 git branch 新建分支的区别,此处除了新建分支外还进行了切换操作

    3. git merge: 合并分支

    该命令用于合并两个分支。 命令:git merge branchName 用于将名为 branchName 的分支合并到当前分支。 有两种合并方式:

    1. fast-forward 方式合并: 命令:git merge dev

    1. 非fast-forward 方式合并: 命令:git merge dev

    注意两种方式的区别:fast-forward 方式仅仅是移动了 HEAD 指针,而非 fast-forward 方式则是新建了一个节点

    其他命令

    1. git revert: 撤销某次提交

    该命令用于撤销历史上的某次提交,注意该撤销操会作为一个新节点存在于分支上
    

    2. git tag: 标签的操作

    用于给某次提交打个标签,例如截止到某次提交后完成了某个重大版本的开发,则可以在该次提交打上一个版本的 tag
    git tag V1.0   标注V1.0版本
    

    3. git show: 显示信息

    可用于显示某次提交或者某个 tag 相关的信息。 命令: git show commit_id 显示某次提交的详细信息
    命令: git show tag_name 显示某个 tag 的详细信息
    

    4. git blame: 查看文件每行的提交历史 (追责)

    git blame file_name
    

    可用于查看某个文件中的每一行是那次提交产生的,是谁提交的,什么时候提交的,提交的版本号是多少等等详细信息,在实际工作中方便对出问题的代码进行追责,找到产生 BUG 的责任人。

    GIT团队协作

    在团队协作过程中一般会有多个分支,比如有默认的 master 分支,有用于开发的 dev 分支,还有用于测试的 test 分支,用于对外发布的 release 分支,以及每个开发人员开发不同功能时用到的 feature_xx 分支等等。

    1. 分支设置

    我们常用的分支有3个(master 分支、dev 分支、test 分支)以及若干个 feature_xx 分支。

    1. master 分支:是主分支,是最终上线代码的分支,该分支被设置被保护分支(锁住),普通开发人员没有权限操作,只有团队 leader 有合并的权限;
    2. dev 分支:是用于开发的分支,该分支被设置为默认 clone 的分支,也用于合并到 master 之前进行测试的分支,普通开发人员从远程 clone 到本地的默认分支,可以进行合并等操作;
    3. test 分支:是用于测试的分支,测试人员可以将自己开发分支中的修改合并到 test 分支在测试环境进行测试,一般该分支不合并到任何分支;
    4. feature_xx 分支:是用户开发自己模块功能的特征分支,可以叫 feature_login, feature_ui, feature_payment 等与开发的功能相关的名称,该分支上的功能开发完、测试无误后可合并到 dev 分支上。

    2. 普通开发人员的操作

    普通开发人员,一般按照如下几个步骤来进行开发、测试工作就可以了:

    1. 将远程 dev 分支 clone 到本地,例如:git clone git@github.com:xxx/xxx.git
    2. 从 dev 分支拉出(新建)自己的 feature 分支用于开发,例如:git checkout -b feature_login
    3. 在自己的 feature 分支上进行开发工作;
    4. 开发完了用 add、commit 等操作提交到当前分支;
    5. 如果需要在测试环境进行测试,则将远程 test 分支拉到本地,例如:git branch test origin/test;
    6. 将自己的 feature 分支合并到 test 分支,并将 test 分支 push 到远程,例如:git rebase test, git checkout test, git merge feature_login, git push origin test(注意:我们推荐用 rebase 来合并,以保证分支的整洁、美观)
    7. 通过公司的发布平台将远程 test 分支发布到测试环境进行测试;
    8. 如果测试没问题或者开始就不需要测试,这可以直接将当前 feature 分支合并到 dev 分支,并 push 到远程库,例如:git rebase dev, git checkout dev, git merge feature_login, git push origin dev(注意:我们推荐用 rebase 来合并,以保证分支的整洁、美观)
    9. 这时表示该功能已经开发完成了,代码的 review 以及发布,需要团队 leader 在合并到 master 操作时进行;这时可以删除了自己的 feature 分支,例如:git branch -d feature_login
    10. 如果在 push 到远程的时候提示需要先 pull 时,我们推荐使用 rebase 的方式:git pull --rebase 以保持分支的整洁、美观。

    3. 团队 leader 的操作

    因为只有 leader 有操作 master 分支的权限,所以需要完成 dev 分支到 master 分支的合并,以及后续打 tag 和正式上线发布的工作:

    1. 先切换到 dev 分支,并拉取最新的状态,例如:git checkout dev, git pull --rebase origin dev
    2. 进行代码 review 等过程后,合并到 master 分支,例如:git rebase master, git checkout master, git merge dev;(注意:我们推荐用 rebase 来合并,以保证分支的整洁、美观)
    3. 为本次完成的版本打上标签,例如:git tag v1.0 -m "release version 1.0"
    4. 将本地合并后的 master 分支以及标签 push 到远程库,例如:git push orgin master --tags
  • 相关阅读:
    公司系统缓慢-分析数据库CPU过高原因-连接数
    克隆虚拟机的相关设置
    centos7基本设置和优化
    遇到的问题和解决集中
    chrome优化调教
    shell三剑客之小弟grep
    迭代器和生成器
    函数进阶
    函数介绍&参数的使用
    文件处理中光标的移动以及文件的修改
  • 原文地址:https://www.cnblogs.com/DaLinY/p/59f91f9488b52e3dafc8113c1a136483.html
Copyright © 2020-2023  润新知