《GitHub入门与实践》学习笔记(windows)-第4章 通过实际操作学习Git

版权声明:问:是谁的心呐???答:我的~~ https://blog.csdn.net/u011436427/article/details/88732798

文章目录

下面的一到三都是本地操作哦

下面的四到五是从首次到再次开发的过程哦

一、基本操作

1.git init——初始化仓库,目的:得到本地的工作树和仓库

(1)mkdir和git init初始化仓库

在这里插入图片描述

(2)工作树就是.git文件夹,仓库就是mkdir的文件夹

2.git status——查看仓库的状态:检查是否git add了

(a)git status的说明
在这里插入图片描述
(b)eg:
在这里插入图片描述
在这里插入图片描述

3.git add——向暂存区(叫Stage或者Index)中添加文件

注:没有git add的话,用git status查看,就会出现untracked files

注:在git add之前,用git diff head查看本次提交与之前提交的差别(head是最新提交的意思)

在这里插入图片描述
在这里插入图片描述

4.git commit——保存仓库的历史记录

注:git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。

(1)git commit -m “xxxx”操作

在这里插入图片描述

(2)直接输入git commit

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)中止提交

如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编辑器,随后提交就会被中止。

(4)查看提交后的状态

在这里插入图片描述

5.git log——查看提交日志

注:查看的永远是git commit 或者git commit -m的内容

(1)直接git log

git log命令可以查看以往仓库中提交的日志。包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。
在这里插入图片描述
说明:
(a) commit 栏旁边显示的“9f129b……”是指向这个提交的哈希值。 Git 的其他命令中,在指向提交时会用到这个哈希值。
(b)Author 栏中显示我们给 Git 设置的用户名和邮箱地址。 Date 栏中显示提交执行的日期和时间。再往下就是该提交的提交信息。

(2)git log --pretty=short 只显示提交信息的第一行
在这里插入图片描述

(3)git log README.md 只显示指定目录、文件的日志

在这里插入图片描述

(4)git log -p README.md 显示文件的改动

在这里插入图片描述

6.git diff——查看更改前后的差别

注:查看工作树、暂存区、最新提交之间的差别。

(1)前提:在README.md文件中写 # Git教程
在这里插入图片描述

(2)查看工作树和暂存区的差别

在这里插入图片描述
在这里插入图片描述

(3)git diff head查看工作树和最新提交的差别

注:在执行git commit之前可以用git diff HEAD命令查看本次提交与上次提交有什么差别,确认完毕后再提交

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、分支操作

(1)分支的解释
在这里插入图片描述
(2)分支可以同时高效地进行并行开发
在这里插入图片描述
在这里插入图片描述

1.git branch——显示分支一览表

在这里插入图片描述

2.git checkout -b——创建、切换分支

(1)切换到 feature-A 分支并进行提交(add 和commit操作)

(a)创建名为 feature-A 的分支。
在这里插入图片描述
(b)
在这里插入图片描述

(c)一定按照下面的步骤来,才会不影响master分支的README.md文件
在这里插入图片描述
注:上面所谓的 “才会有下面的结果”:指的是:在master分支查看,在feature-A分支里编辑的README.md,发现并未改变master分支的README.md文件的内容

(2)git checkout master切换到 master 分支

在这里插入图片描述
在这里插入图片描述

2.特性分支

(1)特性分支的定义
特性分支顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支。
在日常开发中,往往会创建数个特性分支,同时在此之外再保留一个随时可以发布软件的稳定分支。
稳定分支的角色通常由 master 分支担当。
在这里插入图片描述
(2)特性分支的好处
在这里插入图片描述

3.主干分支

在这里插入图片描述

4.git merge——合并分支

(1)首先切换到 master 分支
在这里插入图片描述
(2)然后合并 feature-A 分支。
为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上 --no-ff参数。
在这里插入图片描述
在这里插入图片描述

5.git log --graph——以图表形式查看分支

在这里插入图片描述

三、更改提交的操作

1.git reset——回溯历史版本

(1)Git 的另一特征便是可以灵活操作历史版本。借助分散仓库的优势,可以在不影响其他仓库的前提下对历史版本进行操作。

(2)要让仓库的 HEAD、暂存区、当前工作树回溯到指定状态,需要用到 git rest --hard命令。只要提供目标时间点的哈希值 A,就可以完全恢复至该时间点的状态。

(3)首先要确定回溯的目标是:feature-A

在这里插入图片描述

(3)创建 fix-B 分支:从git check -b ->git commit 一套操作

(a)操作流程如下
在这里插入图片描述
(b)得到的当前状态如下:
在这里插入图片描述

(4)推进至 feature-A 分支合并后的状态

(a)首先恢复到 feature-A 分支合并后的状态。不妨称这一操作为“推进历史”。

(b)用git reflog命令在日志中找出回溯历史之前的哈希值

(c)用git reset --hard命令恢复到回溯历史前的状态

(d)操作如下:
在这里插入图片描述
在这里插入图片描述

说明:
(i)只要不进行 Git 的 GC(Garbage Collection,垃圾回收),就可以通过日志随意调取近期的历史状态;

(ii)即便开发者错误执行了 Git 操作,基本也都可以利用 git reflog命令恢复到原先的状态,所以请各位读者务必牢记本部分。

(iii)从上面数第四行表示 feature-A 特性分支合并后的状态,对应哈希值为 83b0b94A。利用git rest --hard命令,可将 HEAD、暂存区、工作树恢复到这个时间点的状态。

(e)恢复历史后的状态如下:
在这里插入图片描述

2.消除冲突:README.md文件发生冲突,该咋办

(1)现在只要合并 fix-B 分支,就可以得到我们想要的状态。

在这里插入图片描述

(2)用Vim编辑器打开README.md文件并解决冲突

在这里插入图片描述

(3)解决完毕后,需要git add 和git commit提交

在这里插入图片描述

3.修改提交信息

(1)修改上一条提交commit信息:用 git commit --amend命令。

在这里插入图片描述
在这里插入图片描述
(2)执行 git log --graph命令查看提交日志中的相应内容
下面的结果我省略了。。。
在这里插入图片描述
在这里插入图片描述

4.修正拼写错误,然后压缩历史

(1)在合并特性分支之前,如果发现已提交的内容中有些许拼写错误等,不妨提交一个修改,然后将这个修改包含到前一个提交之中,压缩成一个历史记录。

(2)创建 feature-C 分支

在这里插入图片描述
并用git add和git commit -m “Add feature C”进行提交

(3)修正拼写错误

请各位自行修正 README.md 文件的内容,修正后的差别如下所示。
在这里插入图片描述
说明:
错字漏字等失误称作 typo, 所以我们将提交信息记为 “Fix typo”

(4)使用压缩历史的原因是:
实际上,我们不希望在历史记录中看到这类提交,因为健全的历史记录并不需要它们。
如果能在最初提交之前就发现并修正这些错误,也就不会出现这类提交了。

(5)压缩历史:git rebase -i

(a)将 " Fix typo"修正的内容与之前一次的“Fix tyoe”提交合并,在历史记录中合并为一次完美的提交。

(b)当前分支的两个最新历史记录:git rebase -i HEAD~2

用上述方式执行 git rebase命令,可以选定当前分支中包含 HEAD(最新提交) 在内的两个最新历史记录为对象,并在编辑器中打开。
在这里插入图片描述
我们将 6fba227 的 Fix typo 的历史记录压缩到 7a34294 的 Add feature-C里。
->操作过程为:将 6fba227 左侧的 pick 部分删除,改写为 fixup。
在这里插入图片描述
在这里插入图片描述

最后用git log --graph查看,证明已经更改。
这样一来, Fix typo 就从历史中被抹去,也就相当于 Add feature-C中从来没有出现过拼写错误。这算是一种良性的历史改写。
在这里插入图片描述

(6)合并至 master 分支

在这里插入图片描述

四、推送至远程仓库github——首次建立

1.先在github上面新建一个仓库

(1)
在这里插入图片描述

(2)注意在github上面新建一个仓库为前提,clone到本地or推送至远程仓库,README.md文件的选择不同

(第三章第二大节内容)在github上面新建一个仓库,clone到本地时,需要github上选择要readme;
(当前的内容)在github上面新建一个仓库,推送至远程仓库,不需要github上选择要readme;

2.添加远程仓库:git remote add origin

(1)origin特指:github仓库
(2)
在这里插入图片描述

3.推送至远程仓库:git push

(1)推送至 master 分支

在master分支下操作,执行git push -u origin master

在这里插入图片描述
说明:
(a)像这样执行 git push命令,当前分支的内容就会被推送给远程仓库origin 的 master 分支。

(b) -u参数: 添加了这个参数,将来运行 git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。

(c)执行该操作后,当前本地仓库 master 分支的内容将会被推送到GitHub 的远程仓库中。在 GitHub 上也可以确认远程 master 分支的内容和本地 master 分支相同。

(2)推送至 master 以外的分支

(a)git checkout后直接git push

在这里插入图片描述

(b)内容的话,必须是git commit后,才可git push到github上

五、从远程仓库获取——再次开发

(1)本节中我们从实际开发者的角度出发,在另一个目录下新建一个本地仓库,学习从远程仓库获取内容的相关操作。这就相当于我们刚刚执行过 push 操作的目标仓库又有了另一名新开发者来共同开发。

1.获取远程仓库:git clone github仓库地址

(1)首先我们换到其他目录下,将 GitHub 上的仓库 clone 到本地。注意不要与之前操作的仓库在同一目录下
在这里插入图片描述

(2)显示本地仓库和远程仓库的分支信息:git branch -a

在这里插入图片描述

2.获取远程的 feature-D 分支

(1) 将 feature-D 分支获取至本地仓库:git checkout -b 本地仓库分支名 远程仓库分支名

在这里插入图片描述

(2)向本地的 feature-D 分支提交更改

(a)现在假定我们是另一名开发者,要做一个新的提交。README.md 文件中添加一行文字,查看更改
在这里插入图片描述
(b)利用git add 和git commit -m提交

(3)推送 feature-D 分支

在这里插入图片描述

(4)获取最新的远程仓库分支:git pull

(a)这时我们就可以使用 git pull 命令,将本地的 feature-D 分支更新到最新状态。 当前分支为 feature-D 分支。
在这里插入图片描述
(b)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/88732798