0. 前言
了解 Git 的常用指令,以下将以 Visual Studio Code 作为编辑器、Gitee 作为长途库房介绍相关运用。
Git 的含义在于控制多版本的代码以及更好的团队协作。
Reading && More References:
-
Git 官方教程:git-scm.com/book/zh/v2
-
如安在 Visual Studio Code 中运用 Git:code.visualstudio.com/Docs/editor…
-
如安在 WebStorm 中运用 Git:www.jetbrains.com/help/idea/u…
1. 代码克隆(至本地库房) git clone <git address>
仿制代码库房地址(gitee.com/hp-chenpc/f…),找到你寄存本地代码库房的文件夹,右击点选 Git Bash Here。
进入 Bash 终端界面,运用以下指令克隆线上代码至本地库房:
git clone https://gitee.com/hp-chenpc/frontend_practice.git
留意:假如无法执行克隆,请确保在初次运用 git 前,设置相关配置,详细可参看:
- git-scm.com/book/zh/v2/…
- git-scm.com/book/zh/v2/…
2. 检查(本地库房的)现有分支 git branch
将源码文件夹拖进 vs code,打开终端(Ctrl + ~),能够看到本地库房默认坐落 master 分支:
也能够经过指令 git branch 检查本地现有分支,目前仅有 master 一个分支。
经过颜色可知,当时处于 master 分支。
git branch
3. 新建分支 git branch <branch name>
一般来讲,正常开发中绝不允许直接在 master 上直接批改代码,咱们需求依据详细使命在本地新建分支。例如,我现在要增加 Vue 脚手架初始化项目,那么新的分支的姓名能够依据【使命类型-使命内容-使命执行人】的方法起为:update-init_project-cpc。
留意:新建的分支需求基于现有分支进行创立,能够理解为造房子需求有一个地基,也能够理解为 JavaScript 中创立一个新的目标实例的条件是要有一个结构函数,是的,它需求有一个地基。
初始化项目的新分支暂时基于 master 分支进行创立,键入以下指令:
git branch update-init_project-cpc
之后,经过 git branch 指令能够看到,本地代码库房中确实有这个分支。
4. 切换分支 git checkout <branch name>
尽管咱们创立了新的本地分支,但目前地点的分支并非是它。
需求运用以下指令切换分支:
git checkout update-init_project-cpc
之后,经过 git branch 指令能够看到,当时分支已切换成功。
留意:新建分支并切换到新的分支的指令能够兼并为 git checkout -b <branch name>
:
git checkout -b update-init_project-cpc
# 等价于下面两条指令:
# git branch update-init_project-cpc
# git checkout update-init_project-cpc
5. 检查(文件的)状况陈述 git status
当分支上的文件发生改动时 (这儿我初始化了 Vue 脚手架,详细细节减。),vs code 内置的 git 功用会监测这些文件变化。
输入以下指令检查状况陈述:
git status
留意:
- 在提交(commit)代码之前,咱们需求将发生变化的文件(staged changes)存入一个位置——暂存区。
-
暂存区的含义在于,它会追寻变化。
- 当你提交代码时,存在暂存区的文件(就是被追寻的文件)将会被提交上去;
- 而不在暂存区的(肯定是有变化的)文件,没有被追寻,因而不会被提交上去。
- 所以,当你将当时分支的代码与上游分支兼并,却发现上游分支的代码某些功用缺失时,你就要想到是不是有文件没有被提交到暂存区。
6. 追寻新文件(放入暂存区) git add <file name>
一般来说,一个大的功用点将会被拆分为少许小的功用点,每开发完一个小的功用点后,都会提交一次代码,在提交之前,需求将改动的文件增加至暂存区,然后再提交。
git add .
git add 后边我只写了一个点,表明将当时文件夹下一切的改动文件(不管是未被追寻的,还是被追寻的。)全部增加至暂存区。
接着再看一次文件状况,git status。 一切改动的文件已被放进暂存区。
留意:假如想要指定文件,例如,我只想将 README.md 文件增加进暂存区,那么输入以下指令即可:
git add README.md
7. 提交更新记载 git commit -m 'some commit logs'
提交暂存区内一切文件,更新本地库房,从而确保从本地库房向长途库房推送的代码是最新的。
git commit -m 'init project'
每次提交都会生成一个提交记载的 id 值,这个是有含义的,感兴趣的能够去查找资料。
8. 推送分支(至长途库房) git push origin <branch name> / git push
现在能够将这批代码推送至长途库房了。
git push origin update-init_project-cpc
留意:到这儿,或许会有疑惑,一般不是 git push 就好了么?
原因在于:update-init_project-cpc 这个分支并没有在长途库房,因而需求将推送指令写完整才行。
之后,长途库房也有这个分支以后,便可直接 git push。
9. 拉取(长途库房的)分支 git pull
以上,咱们完成了代码克隆、新建分支、切换分支、文件追寻(暂存)、提交更新记载、分支推送,现在能够说是完成了 60% 的使命了,剩下 40% 要做的事是更新长途库房的主分支 master 。
分为四步:
第一步,从 update-init_project-cpc 分支切换至 master 分支 (留意都是本地库房);
git checkout master
第二步,master 分支拉取长途库房,确保本地的 master 分支与长途库房中的 master 文件状况保持一致;
git pull
留意:这儿看似多了一步,实践上在实在开发过程中,长途库房的 master 分支或许与咱们最开始的不一样了,有更新,因而这一步是有必要的!
10. 兼并分支 git merge <branch name>
第三步,将 update-init_project-cpc 分支上的代码兼并进 master 分支。
留意,此刻咱们坐落 master 分支,要兼并谁,branch name(分支名) 就写谁,这儿是 update-init_project-cpc。
git merge update-init_project-cpc
11. 检查未暂存的批改 git diff
一般情况下,能够正常兼并。
但这儿呈现了一个错误,提示咱们有一个文件(.gitignore)没有被提交。
原因是 vs code 发现 master 分支上的 .gitignore 文件能够做一些更好的批改,所以我遵循它的主张作了批改,但此刻并未提交这些批改。
还记得吗?能够经过 git status 来检查本地库房的文件状况:
git status
假如
git status
指令的输出关于你来说过于简略,而你想知道详细批改了什么地方,能够用git diff
指令。—— git-scm.com/book/zh/v2/…
git diff
git diff 指令能够看到文件批改的详细细节,而不仅仅是文件的姓名。
接下来,文件增加追寻,放进暂存区,并提交更新。
git add .gitignore && git commit -m 'update .gitignore'
留意:上面的指令是连写方法,也能够像下面这样分开写:
git add .gitignore
git commit -m 'update .gitignore'
# 上面两条可兼并为一条:
# git add .gitignore && git commit -m 'update .gitignore'
当然,还需求推送到长途库房才行。
git push
终究,从头进行代码兼并。
git merge update-init_project-cpc
又犯错了!主动兼并时,提示 .gitignore 文件存在抵触。
12. 处理分支抵触
如上图所示,在 vs code 中,假如呈现分支抵触,那么在这个发生抵触的文件中,绿色代表当时分支 (此刻是 master 分支) 的内容,蓝色表明外来分支 (此刻是 update-init_project-cpc 分支) 的内容。
依据实践情况,这儿应该挑选外来分支的内容,点击绿色规模上方的第二个选项:Accept Incoming Change。
这样,就处理了分支抵触。
留意:实践工作中,遇到的抵触或许远比这个杂乱,有必要的情况下,请和团队成员承认兼并结果,避免兼并犯错,造成代码丢掉等问题。
接下来,从头增加文件放进暂存区、提交并推送。
git add .gitignore && git commit -m 'fix conflicts in .gitignore && git push'
好像推送成功了,可是又没有成功。
因为我把 && git push
指令写进了提交记载的字符串中,本来要写的是:
git add .gitignore && git commit -m 'fix conflicts in .gitignore' && git push
现在,已经提交了记载了,该怎么办?
从头批改提交信息即可。
13. 检查分支提交前史 git log
在批改提交信息之前,咱们需求看一下提交前史,承认上一次的提交信息是否写错。
那么如何检查提交前史呢?
git log
咱们能够看到最近一条提交记载的提交信息被误写成:fix conflicts in .gitignore && git push。
14. 批改上一次的提交 git commit —amend
有时候咱们提交完了才发现漏掉了几个文件没有增加,或者提交信息写错了。 此刻,能够运转带有
--amend
选项的提交指令来从头提交。——git-scm.com/book/zh/v2/…
git commit --amend
输入后,呈现以下界面,第一行就是刚刚的提交信息:
此刻,按下 i 键进入 insert 模式:
移动光标,批改第一行的提交信息:
完成后,按下 Esc 键,退出 insert 模式,底部的”刺进“字样消失。
此刻,直接键入 Linux 指令 —— :wq
,保存编辑并退出。呈现以下界面说明批改成功:
这时再次运用 git log 检查提交前史。 没有问题。
终于,正式来到终究章——将兼并好的 master 分支推送至长途库房(git push),并运用 git status 再次检查文件状况:本地库房的分支已更新到长途库房,也确实没有东西提交了,本地和长途库房的内容保持一致。
至此,完成了初始化 Vue 脚手架的使命(相关分支:update-init_project-cpc)。
15. Summary
假如你边读边做,我相信你应该会把握以下技术:
- 将一个长途库房克隆到本地
- 在本地新建分支
- 切换(检出)分支
- 追寻文件,放进暂存区
- 提交更新
- 推送分支
除此之外,还包含分支兼并、分支抵触的处理、提交信息的批改等内容。
完毕了么?并没有~ 未完待续……
增加我的微信:enjoy_Mr_cat,共同成长,卷卷群里等你 。
以上,感谢您的阅读。