git技能树总结
1. git简介
版本控制:
   指的是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制系统发展可分三个阶段:本地版本控制系统 -> 集中式版本控制系统 -> 分布式版本控制系统。
 
2.git安装
打开git官方网站(https://git-scm.com/download/win)选择相应的版本下载即可。
git环境配置:
  通常情况下,只需配置一次git,当git程序升级时会保留配置信息。不过可以运行 git config 命令来修改。
  
  git config 命令配置用户信息:
    git config --global user.name 'wl'
    git config --global user.email 'wl@qq.com'
  注意: 如果使用了 --global选项,意味着是全局配置。如果想在特定项目中使用不同的用户名称,可以在那个项目目录下运行没有--global
        选项的命令来配置。
    
  查看配置信息: git config --list  
               也可使用 git config <key> 查看某一项配置,eg: git config user.name
  git颜色配置:  git config --global color.ui true
  git忽略文件配置:  在工作区根目录下创建一个 .gitignore 文件,然后把要忽略的文件名填进去即可。
                 1. 忽略文件规则如下:
                       .gitignore文件
                       # xx:
                       //排除所有.开头的隐藏文件
                       .*
                       // 排除所有.js文件
                       *.js
                       //不排除.gitignore 和 remember.class:
                       !.gitignore
                       !.remember.class
                 2.强制添加被忽略的文件  git add -f xx.js
                 3.把指定文件排除在 .gitignore 规则外的写法是: !+文件名
   git配置别名:
             git config --global wl.co checkout
             git config --global wl.ci commit
             git config --global wl.br branch
    最后输入:git ci -m 'sth.'
   配置git log -1:
       配置一个git last,显示最后一次提交信息:
       git config --global wl.last 'log-1'
       然后输入: git last 就可以显示最近一次提交记录。
3.git使用
在文件目录中初始化仓库:  git init
克隆仓库: git clone <url>
         自定义本地仓库名称: git clone <url> newName 
编辑并添加文件: 
   创建一个index.txt文件,内容如下:
     hello git;
     hello world;
   把文件添加到仓库: git add index.txt
   提交更改到仓库:   git commit -m '创建了一个index.txt文件'
查看git仓库当前状态变化:
   接下来继续修改index.txt文件,如下:
     hello git;
     hello world;
     hello everyone;
   查看git status结果: git status
比较变动: git diff index.txt
查看日志: git log --pretty=oneline**
查看全部commit记录: git log
git 回退:
   git reset --hard HEAD^ (回退到上一个版本)
   git reset --hard HEAD^^(回退到上上个版本)
   git reset --hard HEAD~10 (回退到10个版本之前)
git 重置:
   记录每一次命令:git reflog ,通过这个命令找到对应的commitid,然后使用 git reset --hard commitId 切换到最新的版本上了。
工作区和暂存区:
   工作区:就是用户电脑里能看到的目录;
   版本库: 工作区有一个隐藏目录 .git。
     git版本库里存放了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区,还有git自动创建的第一个分支master,以及指向
     master的一个指针叫HEAD。
   即:当把文件往Git版本库里添加的时候,是分两步执行的:
      第一步是用git add把文件添加进去,即把文件修改添加到暂存区;
      第二步是用git commit提交更改,即把暂存区的所有内容提交到当前分支。
![]()
4.版本管理
撤销修改 (git commit --amend):
   当我们提交文件完后发现漏掉了几个文件未提交,或者提交信息写错了,此时,就可以运行带有 --amend选项的命令来重新提交
   使用场景:
      git add index.txt
      git commit -m 'commit index.txt'
      git add forgot.txt
      git commit --amend
   结果是:最终只会有一个提交(第二次提交将代替第一次提交的结果)。
取消暂存的文件(git reset):
   git reset HEAD readme.txt
   
撤销对文件的修改(git --checkout):
   git checkout -- index.txt
   显示结果: 文件中的修改已经被撤销了。
删除文件:
   使用 rm 命令删除: rm index.txt
   或者先用 git rm index.txt 再使用 rm index.txt 命令删除即可
  
   特殊情况,把误删的文件恢复到最新版本: git checkout -- index.txt
5.分支管理
 完成提交代码分支流程:
    1.首先,创建dev分支,然后切换到dev分支:
      git checkout -b dev
    2.使用 git branch 命令查看当前分支:
      git branch
    3.在dev分支上面做修改并提交:
      git add readme.txt
      git commit -m 'xxx'
    
    4.现在切换到 master分支:
      git checkout master
    5.把dev分支的代码合并到master分支上:
      git merge dev
      [git merge 命令用于合并指定分支到当前分支。]
    6.合并完成后,可以删除dev分支了:
      git branch -d dev
    7.删除后,查看branch,
      git branch
由于切换分支使用 git checkout <branch>,而撤销修改则是 git checkout -- <file>,tong
创建并切换到新的dev分支,可以使用:
  git switch -c dev
直接切换到已有的master分支,可以使用:
  git switch master
合并dev分支,添加 --no-ff 参数,表示禁用 Fast forward:
  git merge --no-ff -m 'merge with no-ff' dev(因为本次合并要创建一个新的commit,所以加上-m参数)
分支策略:
  master分支-应该是非常稳定的,仅用来发布新版本。
  dev分支-开发需求都在dev分支
  feature分支-开发新功能
  bug分支-每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
  
  场景描述:假设正在dev开发功能,突然需要修改master分支bug,这时需要 把dev分支的代码储藏起来,用的命令
  是 git stash; bug修复后,切回dev分支,使用 git stash pop 把储藏的代码放出来,然后就可以继续开发了.
git stash list: 查看储藏的文件区域
git stash apply stash@{0}: 可以多次stash,恢复的时候,想用git stash list查看,然后恢复指定的stash
git cherry-pick: 对于多分支代码库,将代码从一个分支转移到另一个分支上。
  分两种情况,第一种是另一个分支的所有代码变动,就采用合并 git merge.
  另一种是,只需要部分代码变动(某几个提交),采用 cherry pick。
  git cherry-pick <commitHash>
git cherry-pick转移多个提交:
  git cherry-pick A..B(转移从A到B的所有提交。且必须按照正确的顺序放置,提交A必须早于提交B,否则命令
  将失败,且提交A将不会包含在cherry pick中。)
  git cherry-pick A^..B (包含提交A,转移从A到B的所有提交)
  git cherrry-pick <HashA> <HashB> 将A和B两个提交应用到当前分支。
git cherry-pick代码冲突:
  git cherry-pick --continue: 继续执行
  git cherry-pick --abort: 发生代码冲突后,放弃合并,回到操作前的样子。
  
推送分支:
  git push origin master: 将该分支推送到master分支上
  
rebase: rebase操作可以把本地未push的分叉提交历史整理成直线;目的是使得我们在查看历史提交的变化时更容易.
6.git标签
创建标签,切换到需要打标签的分支上:
  git branch
  git checkout master
  git tag v1.0(使用 git tag <name>就可以打一个新标签)
  git tag: 查看所有标签
默认标签是打在最新提交的commit上的。如果忘了打标签,可以先找到历史提交的 commit id,然后使用
git tag v0.9 commit-id 即可。
如果标签打错了,使用 git tag -d v0.1 删除即可。
如果要推送某个标签到远程,使用命令 git push origin <tagname>:
git push origin v1.0
或者,一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
如果标签已经推送到远程,要删除远程标签,需要先从本地删除:
git tag -d remove
然后,从远程删除即:git push origin :refs/tags/remove
参考链接:
https://edu.csdn.net/skill/gml/gml-62c30f9c31f64a1d96af732c47c93f04?category=635
    如果快乐太难,那祝你平安。
                    
                
                
            
        
浙公网安备 33010602011771号