阅读 1884

【Git】简单使用Git

简单使用Git

GitBash的使用

Git Bash的使用和 Linux的命令行一致,所以如果你有使用 Linux的经验,上手 Git Bash是极其快的;

不会?不会也不要紧 不是什么很高深很晦涩的东西,关于 Linux的基础命令我在一个月前也写过文章

可以通过该文章进行一个简单的了解,也写得十分详细:【Linux(二)常用基础命令详解】

除此之外更多的命令可以通过 Linux官方的帮助手册来进行查找

配置 git

熟悉完基础命令后,可以自行尝试一下;都理解后我们开始配置 git

我们可以使用 git config -l命令,查看所有的配置

$ git config -l # 使用命令查看 git全部的配置
# 以下为所有配置
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=Moluu
user.email=2545581825@qq.com
difftool.sourcetree.cmd='' "$LOCAL" "$REMOTE"
mergetool.sourcetree.cmd=''
mergetool.sourcetree.trustexitcode=true
复制代码

这些配置不需要全部了解,初学的话不会对其进行太多的改动

我们再使用 git config --system --list命令查看一下系统配置

$ git config --system --list # 查看系统配置
# 以下为系统配置
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
复制代码

可以看到,系统的配置中不存在 user.name以及 email等自定义配置。

如果要单独查看自定义配置我们可以使用 git config --global --list命令

$ git config --global --list # 查看用户的自定义配置
# 以下为用户的自定义配置
user.name=Moluu
user.email=2545581825@qq.com
difftool.sourcetree.cmd='' "$LOCAL" "$REMOTE"
mergetool.sourcetree.cmd=''
mergetool.sourcetree.trustexitcode=true
复制代码

如果你是第一次下载 git的话应该自定义配置是空的,那你需要先进行用户信息的配置。

可以使用命令的形式,也可以直接找到配置文件进行修改。

自定义配置的配置文件极大概率在你 c盘下的对应用户文件夹内

找到该文件后,将其打开进行配置信息的编辑或添加即可

一般只需要配置用户名和 email,这些用户配置会在你进行代码提交时起作用。

如果说你找不到该配置文件或想使用较为优雅的方式来进行自定义配置,我们可以这么做

直接使用 git config --global key value的形式来对具体配置项进行配置

同样的 配置 email可以使用 git config --global user.email "你的邮箱"命令来进行配置

这不会很难,如果配置失败可以检查空格以及引号,在这里不能使用中文的引号;这是需要注意的。

书写引号是为了规范起见,你也可以省略引号的书写


除自定义配置外,系统的配置则存放在 git安装目录下的 etc文件夹内;

因为我安装时未指定路径,所有 git安在了 C盘下的 Program Files目录内

如果你有指定安装路径,可以去对应的路径中寻找 gitconfig配置文件,但个人建议初学者不要乱动系统配置。

Git的基本理论

配置完成后我们再来看看大家都不太喜欢的 git理论知识,这些理论知识的学习并非无意义的;相反理解这些理论知识对 git的学习十分关键

工作区域

首先我们来了解一下 git 的四个工作区域,一般来说我们本地能接触到的工作区域有三个;

分别是 工作目录(Working Directory)、暂存区(Stage/Index)、本地仓库(Repository或Git Directory)。

而最后一个工作区域则是 远程仓库(Remote Directory)

文件在这四个区域转换的关系如下:

先来理解一下这四个区域,首先工作目录就是我们项目的存放位置,而暂存区在物理上并不存在;它只是一个文件,用于保存一些提交列表信息,类似于清单,记录哪些内容会被提交到本地仓库。

本地仓库则用于存放暂存区提交过来的版本数据,它是一个目录;该目录我们可以使用 git init命令生成也可以使用 gie clone从远程拉取一个仓库作为本地仓库。

这个目录里面所有的文件都可以被Git管理起来,每个文件的修改,删除等操作Git都可以跟踪到

远程仓库比较好理解,就是所谓的 Github Gitee等代码托管平台;我们可以通过与这些远程仓库取得连接的方式 将本地仓库中的代码推送到远程仓库。

同样的我们也可以将远程仓库存放的代码拉取到我们的本地仓库中

这四个工作区域我们需要管理的仅有 工作目录及远程仓库,另外的两个工作区域并不需要太多的管理。

我们通过实操 一个一个的来理解这些工作区域

工作目录

工作目录是最好理解的,我们使用 IDEA或其他集成开发环境生成的项目文件夹就是一个工作目录;

除了使用 IDE来生成,我们手动创建的文件夹也是一个工作目录,就是这么简单。

暂存区及本地仓库

仅有工作目录是不能够满足我们使用 git的条件,此时我们如果想使用 git来管理我们的代码,我们需要在此文件夹内右击并点击 Git Bash Here

在弹出的 Git Bash中输入 git init进行初始化操作

初始化完成后会在该目录内生成 .git文件夹,该文件夹为隐藏文件夹 需要勾选" 隐藏的项目"才可见

该文件夹生成后,该工作目录就已经被 git托管,是一个 git项目;暂存区和本地仓库都已生成。

我们也可以使用 git init 目录名的方式在指定目录内生成 .git文件夹,二者都可

我们尝试写一个测试文件 :

该文件被创建后默认是未被跟踪的状态(Untracked),也就是未被添加到暂存区。

我们可以在刚刚打开的 Git Bash中使用 git status命令查看该目录内的文件跟踪状态

此时我们使用 git add命令,可以将该测试文件添加到暂存区;添加到暂存区后该文件会被 git标记为已跟踪状态

(图中使用了该文件名的方式将该文件添加到暂存区,但一般情况我们都会使用 git add . 命令将该目录下的所有文件添加到暂存区)

添加到暂存区后, 如果确认添加的文件内容无误 即可将暂存区中的文件提交到本地仓库;如果有问题可以使用 git reset命令撤销之前的 git add操作

提交到本地仓库我们需要使用 git commit命令,可以看到我在使用该命令时追加一个 -m选项;

m表示 message,即本次提交的备注信息,可以简单的这么理解;这是必须的

将暂存区的文件提交到本地仓库后,暂存区会被清空

远程仓库

将我们的文件提交到本地仓库后下一步自然是将文件推送到远程仓库,远程仓库可以使用 GitHub或者 Gitee;看个人需求

这里需要注意的是,因为 Github服务器并不在国内,访问速度会有些一言难尽......有时候甚至会访问不了

要将文件推送到远程仓库,不可避免的我们需要在代码托管平台创建一个 远程仓库。这里使用 GitHub来做示例

使用 GitHub或 Gitee我们都需要先注册一个平台账号,注册完毕点击头像左侧的 " + " 可以看到有 New repository选项

点击该选项后会让我们填写仓库信息,填写完毕即可完成仓库的创建

完成创建后,我们的本地仓库和远程仓库都准备妥当了;我们要做的就是让二者对接,但在这之前我们需要准备一下 ssh公钥

使用 ssh安全连接,可以让我们在操作远程仓库时跳过用户信息的验证。

获取公钥的操作我们可以进入 c盘,找到自己对应的用户目录;在该目录下寻找 .ssh文件夹,在该文件夹下打开 Git Bash

输入 ssh-keygen命令可以创建 ssh公钥文件,为了安全起见 我们需要追加 -t选项,将该公钥进行加密

使用该命令后会让你输入一些公钥信息,不知道怎么填可以全部按回车使用默认的信息

命令执行完毕会在 .ssh文件夹下生成两个文件,我们需要用到的是以 pub为后缀的文件,即公钥文件

公钥文件有了,我们回到 GitHub 点击头像下的 settings选项

找到 SSH and GPG keys,在这里完成 ssh安全连接

操作成功后,我们还不能直接将本地仓库中的文件 push到 GitHub远程仓库中;

我们还需要进行一个远程仓库的绑定,毕竟仓库可以有多个 GitHub怎么能够知道你要将本地仓库中的文件提交到哪

绑定远程仓库我们可以使用git remote add origin 远程仓库的 url命令,绑定完我们就可以将我们本地仓库的文件推送到 远程仓库了。

即使用git push -u origin master将本地仓库中的文件推送到绑定好的远程仓库中

推送完成后我们打开 GitHub,在master分支下可以找到我们提交的文件,及提交的备注信息


除了这种推送方式外,我们还可以通过仓库的克隆拿到已经对接好的本地仓库。

这可以让我们偷很多懒,省却了初始化和远程仓库的绑定过程。

尝试一下:

首先将我们之前创建的本地仓库和工作目录都删掉;删掉后我们找一个合适的目录 在该目录内右击打开 Git Bash

回到我们的 GitHub,切换到 main分支

拿到用来克隆的 url

在刚刚打开的 Git Bash中输入 git clone 你复制的url命令,完成仓库的克隆

克隆完成后该目录下会多出一个和你远程仓库名同名的目录,这个目录就是克隆后的仓库。

点进该目录可以发现存在仓库的自述文件(即远程仓库创建时添加的自述文件)和 已经同远程仓库对接好的 .git文件夹(本地仓库)

使用 cd命令在 Git Bash中将工作目录切换到该目录

切换到该目录后我们创建测试文件,完成一次本地仓库 push到远程仓库的操作。

完整代码如下 :

86186@y7000p MINGW64 /d/IDEAproject
$ cd ./gitTest # 切换到克隆后生成的仓库目录

86186@y7000p MINGW64 /d/IDEAproject/gitTest (main)
$ git add . # 创建完测试文件后使用 git add .命令将测试文件添加到暂存区

86186@y7000p MINGW64 /d/IDEAproject/gitTest (main)
$ git status # 确认文件的跟踪状态
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   test.txt


86186@y7000p MINGW64 /d/IDEAproject/gitTest (main)
$ git commit -m "第二次提交" # 确认无误后将该测试文件提交到本地仓库
[main fa902f9] 第二次提交
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

86186@y7000p MINGW64 /d/IDEAproject/gitTest (main)
$ git push # 因为已经分支和远程仓库都已经绑定好了所以这里我们可以直接使用 git push命令不需要其他过多的操作
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 307 bytes | 307.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Moluuuu/gitTest.git
   c899391..fa902f9  main -> main
# push成功,可以切换到 GitHub gitTest仓库 main分支中查看推上去的文件内容
复制代码

这种操作无疑是更便捷的

使用IDEA集成的Git

IDEA作为现如今功能最强大的集成开发环境,没有理由不支持 git;

不用想也知道我们可以在 IDEA中打开 git项目,完成和 Git Bash一样的功能。甚至更甚


一般来说我们使用 IDEA创建项目都会生成各种各样的文件,其中就有 .gitignore,这个文件的作用是排除掉一些特定的文件

使其在 git add .时不会被添加到暂存区,而我们使用 IDEA打开刚刚的 git项目则不会生成这个文件;需要我们手动的书写


在 IDEA的 git项目中如果创建或添加新文件,应该会弹出一个窗口 它的意思是 "是否将如下文件添加到 git中";

一般都勾选不再询问,并点击 cancel;这是一个挺烦人的功能.....

使用 IDEA打开该 git项目后无疑会生成 .idea目录,这个目录我们不能将其删除;但我们可以将其写进.gitignore文件内;

细心的朋友会发现该文件的文件名是浅红色的(过一会它应该会变成暗黄色,这表示它被排除了),这就是集成 git后 IDEA的一些功能

它可以让你可视化的看到哪些文件未被添加到暂存区

因为.gitignore本身也是一个文件;它自身也要被排除(当然了,这要看你自己的需求)


因为是 git项目的缘故,在最顶部我们还可以看到这样一些小东西,将鼠标悬停在上面可以看到分别是 pull、commit 以及push(IDEA版本不同,可能会有所差异)

当然了,这些小工具用起来并没有想象中的那么得心应手,我还是更喜欢使用 命令行;


我们可以通过调出控制台,在该控制台中书写 git命令完成和 GitBash一样的操作

我们尝试再创建一个新的 测试文件,并将该文件通过 IDEA的 Git控制台推送到远程

D:\IDEAproject\gitTest>git add .

D:\IDEAproject\gitTest>git commit -m "在IDEA中完成提交"
[main 59a4859] 在IDEA中完成提交
 1 file changed, 1 insertion(+)
 create mode 100644 newTest.txt

D:\IDEAproject\gitTest>git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 355 bytes | 355.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Moluuuu/gitTest.git
   4258682..59a4859  main -> main

D:\IDEAproject\gitTest>
复制代码

完成 push操作后查看 GitHub远程仓库可以发现仅提交了 未被排除的 newTest文件

.gitignore实际上可以说的东西很多,但篇幅问题这里就不写了;感兴趣可以去搜一下这些东西

除此之外 IDEA还有一些其他有意思的功能,大家可以自行发掘一下


到这里我们还没有讲到的就只有 pull命令了,也就是从远程仓库拉取到本地仓库。

大家可以试着在 GitHub或 Gitee中对文件进行修改,再使用 git pull命令将修改后的文件拉取下来;


放松一下眼睛

原图P站地址

画师主页


文章分类
开发工具
文章标签