对于Git使用的初体验

Git使用心得

在学习了孟宁老师教学的这门高级软件工程的对于Git的讲解后,让我对Git有了较深入的了解,也学习到了Git这个分布式版本控制工具的一些基本使用方法。

以下体验来自于孟宁老师的参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

 

Git的简要介绍

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

先来理解下 Git 工作区、暂存区和版本库概念:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

 

 

 

 

任务场景一,

1.1首先我们需要注册自己的邮箱和名字配置:

git config --global user.email."739350995@qq.com"

git config --global user.name"yaojinfu"

1.2Git的初始化

 

 

 

1.3目前状态库的查看

代表目前还没有任何文件提交到 暂存库和本地库

 

1.4使用 git add 命令添加文件到暂存库

 

 

 jierjiadan 和shuangzhiaishang两个文件已经被添加到暂存库

 

1.5使用git commit命令将暂存库的东西添加到本地库

 

 

 

 

1.6利用git log 查看之前的状态

 

 

 

1.7可以通过如reflog命令可以查看当前 HEAD 之后(时间更晚)的 提交记录,从而可以通过git reset —hard回到未来。

 

可以用以下几个命令查看之前

git reset —hard HEAD^^

git reset —hard HEAD~100

 

 

 

 

 

 

任务场景二:Git远程版本库的基本用法

如果您已经在Gitee.com或者Github.com等网站上创建了Git版本库,可以通过git clone命令,将版本库克隆到本地完成本地版本库的初始化。

git clone命令的用法如下

 

2.1先建立远程库的关联

 

 

 

 

 

 2.2需要输入登录

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.3使用git clone命令,已经添加过了

 

2.4使用git remote 命令

 

 

在该使用场景中,在命令环境下同步操作大致有如下两条命令:

git pull

git push

同步完成后,不管是在本地仓库还是在远程仓库提交代码,都能再次执行同步操作而不会产生分叉或冲突。

在本地版本库基本用法的基础上,只需要用推送(git push)和拉取(git pull)就完成本地仓库和远程仓库的同步。但是其中涉及了抓取(fetch)、合并(merge),以及分支(branch)、提交项(commits)的概念,要进一步深入学习Git、灵活使用Git,就需要理解Git 背后的设计理念,乃至Git仓库的存储方式作为基础。

2.5s数据的拉取和推送

git pull

 

git push

 

 

 

数据已经推送到了github库上

 

 

任务场景三:团队项目中的分叉合并

团队项目的每一个开发者都采用的工作流程大致如下:

 

  1. 克隆或同步最新的代码到本地存储库;

  2. 为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制;

  3. 在该分支上完成某单一功能模块或代码模块的开发工作;

  4. 最后,将该分支合并到主分支。

3.1建立分支,使用git checkout -b yaojinfubranch 建立, git branch检查在哪个分支上

 

 

3.2git checkout yaojinfubrach 切换到分支,并修改分支,在分支yaojinfubrach中建立了一个newyaojinfufile.txt文件

 

 

 

 

3.3git checkoutmaster 切换回到主支,先用git pull将远程库更新到本地库,使用 git meger合并yaojinfubrach分支,再使用push将合并后的推送Github上面

 

 

 

 

 

 

 

显示已经推送到了GIthub,

 

 

 

 

  如果要保留mybranch分支为一段独立的分支线段,则需要使用--no-ff参数关闭"快进式合并"(fast-farward merge),Git命令如下:

  

git merge --no-ff [文件名]

 

  使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。合并后大致如下示意图。

  

 

 

 任务场景四:Git Rebase  

场景四实际就是在场景三团队项目工作流程中增加一步Git Rebase,即在mybranch分支上完成自己的工作之后,为了让 log 记录将来更容易回顾参考,用 git rebase 重新整理一下提交记录。注意不要通过rebase对任何已经提交到远程仓库中的commit进行修改。方便我们查看修改记录等。

1 git rebase -i  [startpoint]  [endpoint],编辑区间start - end
如果不指定end,将默认为当前分支的HEAD


git log查看当前状态

 

使用git rebase -i HEAD^进行修改最后一次comimit的记录,选择i进行编辑管理,

将scecondbranch 删除,按ESC返回。

 

 

git log命令再次查看后。scecondbranch已经没了

 

 

 

 

总结五:

经过孟宁老师对于Git的讲解后,我对分布式系统有了愈来愈深的了解,深刻体会到了Git在版本管理中的强大之处,对规范软件开发流程有了清楚认识!

 



 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2020-10-20 19:15  姚金甫  阅读(152)  评论(0编辑  收藏  举报