共计 2058 个字符,预计需要花费 6 分钟才能阅读完成。
git 常用命令
基于下面的图片,咱们来理解一些概念
- 版本库
.git
文件
- 当咱们应用 git 管理文件时,比方 git init 时,这个时候,会多一个.git 文件,咱们把这个文件称之为版本库。
- 另外一个作用就是它在创立的时候,会主动创立 master 分支,并且将 HEAD 指针指向 master 分支。
- 工作区
- 本地我的项目寄存文件的地位
- 能够了解成图上的 workspace
- 暂缓区(Index/Stage)
- 顾名思义就是临时寄存文件的中央,通过是通过 add 命令将工作区的文件增加到缓冲区
- 本地仓库(Repository)
- 通常状况下,咱们应用 commit 命令能够将暂存区的文件增加到本地仓库
- 通常而言,HEAD 指针指向的就是 master 分支
- 近程仓库(Remote)
- 举个例子,当咱们应用 GitHub 托管咱们我的项目时,它就是一个近程仓库。
- 通常咱们应用 clone 命令将近程仓库代码拷贝下来,本地代码更新后,通过 push 托送给近程仓库。
git 文件状态 – git status
changes not staged for commit
– 示意得大略就是工作区有该内容,然而缓存区没有,须要咱们 git addchanges to be commit
– 示意文件放在缓存区了,咱们须要 git commitnothing 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/ 近程分支名 x
或git 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.txt
doc/*.txt
# 疏忽 doc/ 目录下所有扩大名为 txt 文件
doc/**/*.txt
合并上线流程
- git fetch – 拉取近程分支(获取到要合并的分支)
- git checkout < 要合并的分支 >
- git pull origin < 要合并的分支 >
- git checkout qa/develop
-
git merge < 要合并的分支 >
- 无抵触 – 执行 4
- 有抵触 – 先解决抵触,解决完抵触之行
git add
、git commit
- git push origin qa/develop
- 如果上线则需把 develop 合并到 release
- 增加白名单
参考
- 「新手入门福利」一张脑图带你把握 Git 命令
- https://www.liaoxuefeng.com/w…
正文完