0


[6.13]Git 学习笔记

写在前面:在工程实践中,因为涉及多个部门之间的协同工作,笔者不得不改掉之前的开发习惯,用git进行相应的上库操作。在此期间踩坑无数,现将近段时间的学习心得整理,希望能对git初学者起到帮助。文中内容有不妥之处,还望交流指正

了解Git

一、初识Git

1)什么是git

  1. git是一种**分布式**版本控制系统,用于开发人员对版本的修改和维护,相较于对文件的**直接修改**——**另存为/保存**的操作,git有其优越性:保存各个版本的**快照**,且有相应的代码可以进行维护,方便开发人员了解各个版本的**修改内容**及其**特性**。
  2. 与**分布式**版本控制系统相对的,是**集中式**版本控制系统,在此通过两个文本文档间内容对比的例子来简述其异同,如下:
  1. Hello World
  1. Hello Wuhan
  1. 在上述两个代码中,此次的修改点其实是World --> Wuhan ,相较于论文的修改采用批注的方式,git中有指令能帮我们很好的分析修改的具体位置:**git diff**

  1. 执行后在git的窗口,会以上图的形式显示,其中**---**表示删除的内容,**+++**表示增加的内容,在工程文件中,相应的指令能帮我们很快定位到修改的地方,使我们的维护和更新更加稳定
  2. 如上图,我们能获得**修改前**和**修改后**的内容**差异**,而**集中式**版本控制系统则做不到这一点,集中式版本控制系统保存的仅是每个版本的修改点,这导致了若中途的版本出现问题,可能会导致最终的版本与我们想实现的功能相差甚远,甚至会有意料之外的报错。这是我们不希望看到的,所以多数情况下还是推荐使用**git**这种**分布式**版本控制系统

2)如何配置git

  1. 配置**git**可以在官网进行下载:Git - 安装 Git (git-scm.com)
  2. CSDN上也有很多相关内容的博客,可以根据自己的实际需求,选择相应的版本进行下载,此处不多赘述
  3. 下载完后可进行如下配置:

  1. 初始的两行代码**git config**起到的作用是标识当前的使用用户,这在之后的提交中尤为重要,方便组内其它人员了解**何人**在何时提交了新的版本,便于维护时的**溯源**

** 语法参考:git config --global user.name "你的用户名"**

** git config --global user,email "你的邮箱"**

** 第三行代码的作用是将文本换行符CRLF** -> **LF **的一个转换

  1. 第四行代码的作用是识别中文路径,将上述理解为初始环境配置即可

3)生成你的SSH Key

** GitHub的提交中,有http协议和SSH两种,其中SSH稳定性更强,所以在拉代码的过程中多采用SSH**协议,使用协议前需生成自己的公钥,在文本框中输入下列内容即可生成自己的公钥:

  1. **ssh-keygen -t rsa -C 你的邮箱**

** 回车后输入yes然后一直回车即可,观察图片的倒数第二行可以看见给了我们生成的公钥文件路径,我们可以采用cat命令查看该文件的内容**:

  1. 参考语法:**cat 上方路径**

** ssh开头到邮箱结尾的这部分内容即是生成的公钥**了

  1. **4)公钥添加**

** 由于笔者使用的是github,此处展示github上的公钥**添加,其它平台上应该也是一致的

  1. 在**github**右上角点击头像会出现**settings**选项,点击**settings**进入设置页面
  2. 在设置页面左侧有**SSH Key**选项,点击后将刚刚获得的公钥粘贴进去后提交即可,**title**可采取**项目名_用户名**的形式命名,点击提交![](https://img-blog.csdnimg.cn/direct/d10ccb3520534b24a329feeb1c943567.png) 这样我们的公钥就与**GitHub**仓库绑定了
  3. 随后在个人界面,创造自己的**个人仓库**

  1. 进入仓库页面
  2. ![](https://img-blog.csdnimg.cn/direct/b922631b587a4ba8b0ee07f6d3e489fb.png)
  3. 此处的链接即是我们**克隆**项目时可使用的**链接**,方便我们与远端进行交互,将我们的代码提交到平台上

二、使用Git完成一次文件的下载与上传

1)了解修改流程

** pullpush是我们在工程中常用的做法,在第一次使用项目仓库的时候,我们会采取克隆的指令将仓库的代码拉到本地进行修改,这个过程涉及了两个部分的内容:对git语法的理解和对修改流程的熟悉**

** 笔者最初使用git**拉取代码时,重复了数十次才对完整的流程有了较浅的认知,在我看来,完整流程可分为如下几部分:

  1. 1.将代码克隆到本地仓库 ——获取源文件,在本地进行修改和查看
  2. 2.在本地仓库新建个人分支——与主干分支错开,避免直接修改主干分支导致的未知的错误,提交时也会在个人分支进行提交
  3. 3.对文件进行修改 ——包括但不限于**增加**文件/文件夹,**删除**文件/文件夹/文件内容,**修改**文件/文件夹/文件内容
  4. 4.对修改内容进行检视 ——检查修改的**文件**和**内容**,避免因为打错字符导致的版本**故障**

** 5.将修改内容添加到暂存区**

  1. 6.将修改内容提交——附带**message** 标明修改后的版本**特性**
  2. 7.检查提交的日志文件
  3. 8.将修改内容推送远端
  4. **修改工作**进行的区域我们称之为**工作区**,将修改内容保存后**Git**会将文件放置到**暂存区**,此时还可进行**撤销**的操作,确认无误后可提交至**本地仓库**,才算是完成了**修改**

** 在这之后我们将本地的修改内容推送远端,实现在Github**上的更新

2)了解git语句

  1. 我始终是相信实操胜过一切理论,所以在此处进行一次完整的**下载上传**操作,方便直观的了解具体的**操作流程**

** 1.git init **

** git init进行的是初始化操作,用于在本地生成一个git仓库.git目录**(隐藏文件,不要去修改其中内容),具体使用可如下:

  1. 此处解释几行语句的具体作用:
  2. **-cd path/** 引导**git**进入具体的路径下
  3. **-ls **查看当前路径下的所有文件
  4. **-git init **初始化**Git**仓库
  5. 可以看出,执行了前三行语句后,第四行ls时,我们新增了文件夹MyProject,这就是我们**git**的**本地仓库**

** 2.git clone**

** 我们可以cd** 进该仓库并clone我们github平台上的链接,来进行修改维护工作

  1. 第二行语句就是我们的**clone**语句,具体语法如下:
  2. **-git clone** 链接
  3. **clone**中会要求输入**yes**,然后一直回车即可
  4. **clone**完后**ls**,发现**本地仓库**已经有了**远端**的文件夹**First-Object**了,**cd**进文件夹

  1. **3.git checkout -b**

** git checkout -b Git中起到的作用是新建分支并且切换自动切换到新生成的分支**上去,语法如下:

  1. **-git checkout -b 新建的分支名 **新建分支后,后续的修改在分支上进行即可
  2. **4.git status** 、**git diff**

** 因为clone的是空仓库,所以需要新建文件,此处使用touch**命令:

  1. 其中**touch**起到的是新建文件的作用,类似的命令还有**mkdir**,用于新建文件夹
  2. 第二行的**vim**是修改文件内容的命令,回车后会进入修改页面,按键盘上**i键**即可修改内容,修改后按**ESC**退出修改并输入此处双引号中内容 "**:wq**"即可保存修改并回退到**git命令界面**

** 修改后我们可以输入git status**命令查看修改的具体文件,如下图:

  1. 此处**回显**提示我们修改的文件是a.txt,且文件未被**跟踪**,可以把修改后的文件**add**进暂存区
  2. **git diff**相较于**git status**,提供的是查看修改文件的内容的功能,在后文会附图
  3. **5.git addgit commit**

** git add 可以将修改后的文件添加到暂存区**,方便之后的提交

  1. 具体语法如下:
  2. **-git add path/文件名 **

** git commit的作用则是将暂存区的内容上传到本地仓库**,如下图:

  1. 具体语法如下:
  2. **-git commit path/文件名 -m "新版本的特性内容" **其中**-m**意味着携带**message**,即在提交时附带上后方双引号中的内容,执行完**git commit**,文件才相当于在本地完成了修改
  3. **5.git log**

** git log **提供的是查看日志的功能,根据git log 我们能看到在分支上的近几次提交及其内容,如下图:

  1. 其中会生成特定的**commit_id**,方便之后版本维护时的**溯源**,观察上图中的信息会发现,包含了**提交者**及其**邮箱**、**提交时间**还有最后的**message**——”Say Hello to the World“,这也是通过**git**管理版本的优越之处,通过查看日志可以了解不同提交者更新的**版本特性**,方便进行**维护修改**

** 6.git push**

** git push **提供的是推送远端的功能,通过git push 我们能将本地分支上的修改同步至服务器,从而实现同步的更新,如下图:

  1. ![](https://img-blog.csdnimg.cn/direct/1416cce6243c41a09b3afa998778c905.png)
  2. 观察上图可发现,**push**完后**GitHub仓库**中多了**a.txt**文件和我们的标识信息
  3. **git push** 的具体语法如下:
  4. **-git push origin 远端分支名**

** 可将远端分支名本地分支名设置一致,这样之后进行pull**操作时也会较为方便

  1. **push**完后为了展示**git diff**效果,对本地的**a.txt**文件进行了修改,修改后**git diff**如下图所示:

  1. 红字是**删除**部分,绿字是**增加**的部分,通过观察**diff**方便我们了解具体的修改内容,从而确定是否将这笔修改进行**提交**

** 知晓上述内容后,实现基本的拉代码——修改——上传远端的操作,应该是没有问题了。除开上述语法外还有git checkout 、git pull等语法暂未介绍,本文只作Git基础概念和语法**介绍,其它的语法将会在之后的更新中补上

标签: 学习 笔记 github

本文转载自: https://blog.csdn.net/weixin_45416179/article/details/139666893
版权归原作者 呆瓜程序员 所有, 如有侵权,请联系我们删除。

“[6.13]Git 学习笔记”的评论:

还没有评论