git 常用命令


基于下面的图片,咱们来理解一些概念

  1. 版本库 .git文件
  • 当咱们应用git管理文件时,比方git init时,这个时候,会多一个.git文件,咱们把这个文件称之为版本库。
  • 另外一个作用就是它在创立的时候,会主动创立master分支,并且将HEAD指针指向master分支。
  1. 工作区
  • 本地我的项目寄存文件的地位
  • 能够了解成图上的workspace
  1. 暂缓区(Index/Stage)
  • 顾名思义就是临时寄存文件的中央,通过是通过add命令将工作区的文件增加到缓冲区
  1. 本地仓库(Repository)
  • 通常状况下,咱们应用commit命令能够将暂存区的文件增加到本地仓库
  • 通常而言,HEAD指针指向的就是master分支
  1. 近程仓库(Remote)
  • 举个例子,当咱们应用GitHub托管咱们我的项目时,它就是一个近程仓库。
  • 通常咱们应用clone命令将近程仓库代码拷贝下来,本地代码更新后,通过push托送给近程仓库。

git文件状态 - git status

  • changes not staged for commit - 示意得大略就是工作区有该内容,然而缓存区没有,须要咱们git add
  • changes to be commit - 示意文件放在缓存区了,咱们须要git commit
  • nothing to commit,working tree clean - 这个时候,咱们将本地的代码推送到远端即可

常见命令

分支治理

  • 查看本地分支 - git branch
  • 查看近程分支 - git branch -r
  • 查看本地和近程分支 -git branch -a
  • 从以后分支,切换到其余分支 - git checkout <branch-name>
  • 创立并切换到新建分支 - git checkout -b <branch-name>
  • 删除本地分支 - git branch -d/-D <branch-name>
  • 以后分支与指定分支合并 - git merge <branch-name>
  • 查看各个分支最初一个提交对象的信息 - git branch -v
  • 删除近程分支 - git push origin -d <branch-name>git push origin :<brnach-name>
  • 重命名分支 -git brnach -m <oldbranch-name> <newbranch-name>
  • 拉取近程分支并创立本地分支 - git checkout -b 本地分支名 origin/近程分支名xgit fetch origin <branch-name>:<local-branch-name>
  • 近程仓库内容更新到本地 - git fetch
  • 命令用于从近程获取代码并合并本地的版本 - git pull

花式撤销

  • 撤销「工作区」批改 - git checkout -- <file>
  • 暂存区文件撤销 (不笼罩工作区) - git reset HEAD <file>
  • 版本回退 - git reset --(soft | mixed | hard ) < HEAD ~(num) >

应用场景:
场景1:当你改乱了工作区某个文件的内容,想间接抛弃工作区的批改时,用命令git checkout -- file

场景2:当你岂但改乱了工作区某个文件的内容,还增加到了暂存区时,想抛弃批改,分两步
第一步:用命令git reset HEAD <file>,就回到了场景1;
第二步:按场景1操作。

场景3:曾经提交了不适合的批改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到近程库。

差别比拟

  • 比拟工作区与缓存区 - git diff
  • 比拟缓存区与本地库最近一次commit内容 - git diff -- cached
  • 比拟工作区与本地最近一次commit内容 - git diff <commit ID> <commit ID>

解决抵触

当Git无奈主动合并分支时,就必须首先解决抵触。解决抵触后,再提交,合并实现。

解决抵触就是把Git合并失败的文件手动编辑为咱们心愿的内容,再提交。

疏忽文件 .gitignore

这个文件的作用,会去疏忽一些不须要纳入Git治理这种,咱们也不心愿呈现在未跟踪文件列表。

# 此行为正文 会被Git疏忽# 疏忽 node_modules/ 目录下所有的文件node_modules# 疏忽所有.vscode结尾的文件.vscode# 疏忽所有.md结尾的文件*.md# 但README.md 除外!README.md# 会疏忽 doc/something.txt 但不会疏忽doc/images/arch.txtdoc/*.txt# 疏忽 doc/ 目录下所有扩大名为txt文件doc/**/*.txt

合并上线流程

  1. git fetch - 拉取近程分支(获取到要合并的分支)
  2. git checkout <要合并的分支>
  3. git pull origin <要合并的分支>
  4. git checkout qa/develop
  5. git merge <要合并的分支>

    • 无抵触 - 执行 4
    • 有抵触 - 先解决抵触,解决完抵触之行git add git commit
  6. git push origin qa/develop
  7. 如果上线则需把develop合并到release
  8. 增加白名单

参考

  1. 「新手入门福利」一张脑图带你把握Git命令
  2. https://www.liaoxuefeng.com/w...