Git使用|青训营

91 阅读7分钟

git使用方式

gui

git 的相关图形化用户界面非常多,就我个人的体验而言,我比较推荐如下三种图形化的方式:

GitKraken

作为一个跨平台的 git gui ,GitKraken 可用于多种版本控制系统(Github这样子的)。内置代码编辑器、合并冲突编辑器、任务跟踪等 git 日常使用中所需要的各种功能。非常的好用。

唯一的缺点是作为商业软件,有些重要的功能是收费的。

GitHub Desktop

是由 GitHub 开发的免费应用,值得一提的是,虽然是由GitHub开发的,但是本身它依然支持如 GitLab 等其他非 GitHub 的 Git 平台。

非常推荐的 gui 应用

各种 IDE 应用自带的版本控制系统

现在流行的大部分 IDE (集成开发环境)都带有 git 功能,使使用者可以轻松创建仓库和后续维护。

比较典型的就是 vscode 这种,再安装如 Gitlen 这种插件,就可以解决许多问题,不需要另外安装 git gui 应用了。

控制台

这也是教程中常见的使用 git 的方式。

在安装完 git 后, 你应该在控制台(cmd/power shell)中输入git -v,如果 git 正常安装后,你应该可以看到 git 的版本。

你还需要配置一下你的用户名称和邮箱,之后对文件修改时将会用到这个东西。因为 git 不仅会记录文件变更,还会记录每次更改的修改者是谁。

相关配置命令为:

git config --global user.name "xxx"(xxx配置用户名)

git config --global user.email "xxx@xxx"(xxx配置邮箱)

初始化版本库

使用 git 的第一步是创建版本库, git 的作用就是管理代码版本,使使用者可以方便的回到需要的代码版本。

git 创建版本库的指令为git init作用是在当前文件夹创建版本库。比如你目前正在C:\Users\f2248\Documents\Notes,那么使用该命令后, git 将管理该文件夹下的所有文件。

实际上,虽然程序员将 git 用来管理代码版本,但 git 本身的功能不限于管理代码,而是管理文件,所以只要是文件, git 都能进行版本管理。所以,你能在 github 上找到表情包,pdf资源等。

而 git 管理的方式就是在文件夹下的.git文件夹和.gitignore文件

提交修改

到这里就涉及工作区、暂存区和仓库了。

工作区大体就是指文件夹下不是.git文件夹和.gitignore文件的其他部分。

在你在工作区修改文件后, git 就会检测是哪些文件被修改了。

此时,你可以使用git status命令查看一下当前工作区的状态。该指令会显示当前所在分支、被修改但未存到暂存区的文件和暂存区中的文件。

当然了,有时你并不想把某个文件反复提交到 git 仓库里面,因为它们不仅大,而且是可以实时生成。这时你就需要.gitignore文件,在这个文件中你只需要将文件名称添加进去, git 就不会检测该文件,不管它是否存在或者被修改。

关于这个文件中的内容,主要有以下几种方式:

  • xxx.xxx

直接写需要忽略的文件的全名

  • *.xxx

以 * 符号来忽略所有xxx类型的文件

  • xxx/

忽略名字为xxx的文件夹,里面所有的文件都会被忽略

  • xxx/*.xxx

忽略xxx的文件夹下的xxx格式的文件

.gitignore 文件也有更加详细的操作,但深入了解会比较复杂,可以自己理解一下。

在 git 检测到你修改了哪些文件后,你就可以开始将你的修改提交到暂存区了。

git add xxx命令可以将xxx文件提交到暂存区,可以是多个文件,比如git add test1 test2也可以是文件夹。如果想将所有文件(不包括.gitignore中的)都提交到暂存区,使用以下指令git add .

在将修改添加到暂存区后, git 会将数据记录在 .git 文件夹里面,我们不需要了解详细的原理。

如果你在添加到暂存区后又对文件进行了修改后,你依然可以继续添加到暂存区。而且你还可以对比你修改后的文件和 git 系统中记录的文件的差异,相关命令为git diff。而该指令不仅可以对比工作区和暂存区的差异,还可以比对两次提交之间的差异、暂存区和上一次提交的差异,通过不同的参数实现功能。

你不仅可以将文件修改添加到暂存区,也可以从暂存区移除,相关命令为git rm --cached xxx.xxx。参数--cached是必须的,不然就会变成从暂存区和工作区删除,也就是从移出暂存区变成删除文件。

在添加到暂存区后,我们就可以正式的将代码修改提交到仓库区了。你可以将每次commit理解为一个正式的代码版本,而暂存区中则是未正式发布的代码补丁。并且像软件版本一样,你也应该有一个合理的版本管理意识,不管是固定时间提交一次commit还是每个功能一个commit

git 要求每次提交都要有信息,命令参数为git commit -m "信息"。由于提交的版本编号是 git 随机生成的,所以由程序员自己控制的提交信息显得非常重要,因此有条理的提交信息是非常有必要的。

退回版本

git 在你每次提交时都会为每个提交生成唯一确定的随机码用来标识每个提交,这样你可以方便的退回到你需要的代码版本。不过显然你不可能记录每个提交的随机码,那太麻烦了,你可以通过git log命令显示提交和相关的描述信息。

在清楚了你需要退回的版本后,你就可以使用git reset xxx命令退回版本了,不过该命令也有很多参数,其中最需要注意的便是软退回,硬退回的区别,--soft会在退回版本后保留工作区和暂存区的所有修改;而--hard不会保留任何当前的修改,不论是工作区还是暂存区都会完全退回到指定版本;作为折中,--mixed则会保留退回前工作区已有的修改,但暂存区则会完全退回到指定版本。

分支

git 的一个灵魂功能便是分支了,在创建仓库的时候 git 会自动创建一个 master 分支,你也可以自己创建分支。你可以设定指定分支开发某个功能,然后开发完成后将该分支合并到主分支上,这也是分支的主要用途。

你可以现在使用git branch命令查看当前的分支,在没有创建分支的情况下,应该只会出现 master 分支。

如果想创建分支,那么可以使用git branch xxx命令创建一个分支。这时,再使用git branch命令,应该会显示多个分支,其中包括你创建的分支。

在创建后,你可以随时使用git checkout xxx命令切换分支,每个分支之间是非常独立的,这包括独立的工作区,独立的暂存区,甚至独立的commit,但分支之间并不完全割裂,你可以在开发完后随时将两个分支合并,或者删除。

首先假如你创建了一个 test 分支用来开发某个功能,现在你已经开发完了,希望将它合并到主分支 master ,首先你需要切换到主分支,然后使用git merge test,这样 git 就会将 test 分支合并到主分支上。

但分支合并并不是永远一帆风顺的,在合并中经常会出现合并冲突,这时你需要手动去修改所有出现冲突的文件。修改冲突需要你使用代码编辑器去修改文件,由自己选择合并后代码是什么样的。

在将所有需要的文件修改后,你还需要将这些文件使用git add xxx.xxx添加到暂存区,然后使用git commit将其提交。这样的提交也因此被称为合并提交,通过合并提交, git 也解决了合并冲突问题。