Git开发中的常用指令及其使用场景详解

Written by

in

文章目录
  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 官网下载地址:https://git-scm.com/downloads
  • 目录
    • 一、Git安装
    • 二、配置Git工具
      • 2.1 用户信息配置
      • 2.2 查看配置
    • 三、初始化仓库
      • 3.1 创建仓库
    • 四、常用命令
      • 4.1 git clone拉取远端仓库
      • 4.2 git分支操作
      • 4.3 撤回操作
      • 4.3 拉取代码操作
      • 4.4 贮存操作
    • 五、使用场景
      • 5.1 克隆仓库
      • 5.2 检出分支
      • 5.3 提交代码
      • 5.4 协作问题

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

    官网下载地址:https://git-scm.com/downloads

    对所有本地仓库的用户信息进行配置

    1、对你的commit操作设置关联的用户名

    git config --global user.name "[name]"

    修改用户名

    git config --global --replace-all user.name "[name]"

    2、对你的commit操作设置关联的邮箱地址

    git config --global user.email ""

    修改邮箱地址

    git config --global --replace-all uesr.email ""

    3、启用有帮助的彩色命令行输出

    git config --global color.ui auto

    查看用户名:

    git config user.name

    查看密码:

    git config user.password

    查看邮箱:

    git config user.email

    查看配置信息:

    git config --list  

    1、创建文件夹

    mkdir my-project

    2、进入文件夹

    cd my-project

    3、git初始化

    git init 

    1、2、3 步是基于没有仓库时的操作,如果仓库存在1、2、3步可替换为git clone 远程仓库地址

    进入文件夹

    cd my-project

    4、创建readme文件

    touch README.md

    5、添加readme文件到暂存状态

    git add README.md

    添加全部

    git add .

    6、把暂存状态的文件提交到本地备注为"first commit"

    git commit -m "first commit"

    7、远端仓库建立连接 名称origin对应远端仓库地址

    git remote add origin https://gitee.com/wudixiaofei/my-project.git

    8、推送代码至代码仓库 首次提交添加 -u

    git push -u origin "master"

    提交代码到对应分支

    git push origin branch_name

    如果有多个仓库需要推送,如gitee、github

    远程地址A:'gitee/my-project.git'  //设为'originA'
    远程地址B:'github/my-project.git' //设为'originB'
    
    $ git remote add originA giteeurl
    $ git remote add originB githuburl
    
    查看本地对应的远程仓库
    $ git remote -v
    
    操作追加远程推送B
    $ git push originA master:master
    $ git push originB master:master
    
    删除与远端建立的连接
    $ git remote remove "连接名字"
    

    拉取远端仓库
    git clone 远程仓库地址
    

    代码拉取下来后,就需要有分支的概念

    查看分支

    星号(*)表示当前所在分支

    查看远端分支
    git branch -r
    
    查看本地分支
    git branch
    
    查看所有分支
    git branch -a
    

    分支操作

    创建新分支 下级用/
    git branch dev
    git branch dev/featrue
    
    修改本地分支名称
    git branch -m oldName newName
    
    检出分支、切换分支到dev
    git checkout dev
    
    本地分支推送至远程分支
    git push origin 本地分支名:远程分支名
    > git push origin develop:develop
    
    删除本地分支
    git branch -D branch_name
    
    删除远程分支
    git push origin --delete branch_name
    > git push origin --delete develop
    

    撤回删错的分支

    1、找到删除branch的 hash 值
    git reflog 
    
    2、创建对应branch
    git checkout -b new_branch_name hash
    

    撤回提交

    HEAD:它是一个指向你正在工作中的本地分支的指针,可以将 HEAD 想象为当前分支的别名。

    HEAD^ 的意思是上一个版本,也可以写成HEAD~1如果你进行了2次commit,想都撤回,可以使用HEAD~2或者HEAD^^

    reset 用于本地的commit操作撤回

    1、代码恢复到上一次提交
    git reset --mixed HEAD^
    
    参数:
    	--mixed 默认参数
    	意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。
    	--soft 
    	意思是:不删除工作空间改动代码,撤销commit,不撤销git add 。
    	--hard
        意思是:删除工作空间改动代码,撤销commit,撤销git add . 操作。
    
    2、如果只是修改注释
    git commit --amend
    会进入默认vim编辑器,修改注释完毕后保存就好了
    

    revert 用于远程push操作的撤回

    因为是远程,revert是会有新纪录C2’此时C2’ 的状态与 C1 是相同的。

    git revert HEAD^ 
    

    拉取对应分支代码 
    git pull origin branch_name
    

    用于暂时保存没有提交的工作。运行该命令后,所有没有commit的代码,都会暂时从工作区移除,回到上次commit 时的状态。

    1、没有被 add 过的文件不会被贮藏

    2、git stash -u 可以把没有被add的文件也被贮藏

    (–include-untracked)

    SourceTree里的贮藏

    1、添加贮藏
    git stash save "贮藏备注" 
    
    2、查看贮藏列表
    git stash list
    
    3、取出指定内容
    git stash apply stash@{0}
    

    小白入职第一天:

    1、安配配置git

    2、拿到分配的账号登录公司代码仓库如gitlab、gitee、coding

    3、账号的安全设置处绑定公钥

    4、$ git clone 对应仓库地址

    5、大佬安排看看代码,熟悉一下

    场景1:小白进了一家私企没几天就来了一个工期3天的新需求,准备要大展身手。

    于是,小白checkout出了公司的dev分支,开始大干一番$ git checkout dev

    2天过去了,产品经理问,小白啊,怎么没有看见你的近两天的代码提交呀?还没开始吗?

    小白:原来没写好也要提交代码给上级看,那我马上提交。答到:『噢噢,写的差不多了,马上提交』

    $ git add .

    $ git commit -m "新功能"

    $ git push origin 本地分支名:远程分支名

    大佬:我刚补的bug合并代码发版了,咦,怎么起不来服务了,一看代码提交,小白你提交的代码有问题,影响到主业务了。

    小白:啊(慌了)!

    大佬:如果你需要开发新功能,要把当天的代码提交的话,你就在feature新建一个功能就行,测试好我再合并发版。大佬耐心讲到我司规范:

    master 是主分支,一般是保护分支,管理员才能操作

    dev 是开发分支,开发先拉这个分支

    feature 是功能模块,如:

    • —-feature/login (登录功能)
    • —-feature/用户导入 (导入功能)

    新增的功能加就行: 『feature/功能名称』

    hotfix 修补bug模块,如:

    • —-hotfix/login (修补登录功能)
    • —-hotfix/导入 (修补导入功能)

    refactor 重构模块

    小白赶忙撤回提交:

    $ git log 查看提交日志

    找到自己提交的hash,例如:(2c479a5)

    $ git revert ${commit hash} ...${commit hash}

    revert后那次提交的代码就会被撤回,日志的hash显示为(c18fad1ba),但是我辛辛苦苦写的代码咋就不见了。

    于是,创建并切换分支feature/我的功能

    $ git checkout -b feature/我的功能

    该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样。再revert一遍即可

    $ git revert c18fad1ba

    可以看见,代码都回来了。

    场景2 :小白开启了新分支完成功能后准备合并到主分支。

    $ git diff dev feature/我的功能

    使用diff查看分支差异,发现和大佬提交的代码同时修改了几个文件。

    解决冲突(合并、变基)

    <<<<<<< 
    =======, 
    >>>>>>> 
    

    merge

    当前分支在主分支,如master

    • $ git merge 目标分支 –只保留单条分支记录
    • --no-ff –关闭fast-forward方式,可以查看到分支状态。
    • --squash – 需要进行一次额外的commit来总结最终的合并。

    如果有冲突文件,在这一步处理完

    • $ git add . – 添加改动
    • $ git commit -m "merge" – 本地提交
    • $ git push origin feature/我的功能:master – 推送到master

    rebase

    当前分支在开发分支,如feature/我的功能

    $ git rebase master –rebase操作

    如果有冲突文件,在这一步处理完

    • $ git add . –添加改动
    • $ git rebase --continue –继续rebase
    • --abort –放弃合并,回到操作前的样子。

    处理完所有冲突后,提示

    Successfully rebased and updated refs/heads/feature/我的功能

    $ git push origin feature/我的功能:master–推送到master

    以上就是Git开发中的常用指令及其使用场景详解的详细内容,更多关于Git常用指令的资料请关注风君子博客其它相关文章!

    您可能感兴趣的文章:

    • Git命令如何添加到远程仓库
    • Git分支管理的核心命令科普指南
    • git merge 命令行操作实现
    • Git如何查看历史提交及其参数设定的常用命令详解
    • Git中查看文件的变更历史的常用命令详解
    • Python操作Git命令的详细指南
    • 通过git命令查看项目连接的仓库地址的几种方法
    • git stash命令基本用法详解

    站内搜索