Git使用心得体会

  很早之前就听说过Git这个工具,本科阶段做的东西大多都是单人完成的,一直没有使用过Git,通过孟宁老师的课学习了Git的使用和原理,感觉受益匪浅,以下是Git使用的一些心得体会。

参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

一、Git的安装

  VS Code下载地址:https://code.visualstudio.com/     最新版VSCode实测是不包含Git的,需要单独安装Git

  Git下载地址:https://git-scm.com/downloads

二、Git的五大使用场景

场景一:Git 本地版本库的基本用法

打开VS Code ,点击图标      或者使用快捷键Ctrl+Shift+G进入源代码管理如下图

 

 

1.git init — 初始化存储库

初次使用需要初始化存储库,可点击初始化存储库按钮或者使用Git命令 git init,来初始化存储库

 

 2.git status — 查看Git本地版本库当前 workspace 的状态。

3.git add — 用于将更改的文件暂存

首先新建一个README.md文件,如下图所示

 进入源代码管理,可以看到有一项README.md文件的更改记录,如下图所示

 点击该项后方的加号或者执行git add命令,即可将该更改暂存,如下图所示

    

4.git commit — 把暂存区里的文件提交到仓库

执行git commit -m “message”,message通常写本次提交的内容,会记录到日志文件中,第一次使用提示需要配置user.email和user.name

 

使用git config --global user.email和git config --global user.name配置user.email和user.name,之后重新执行git commit -m命令

 

可以看到暂存的更改已经被提交到仓库

 

5.git log — 查看当前HEAD之前的提交记录

 执行git log 命令可以看到控制台打印出了之前README.md的提交记录

6.git reset — 命令用于回退版本,可以指定退回某一次提交的版本。

git reset 有三个参数

①--mixed 默认参数,用于重置暂存区的文件到上一次commit,工作区保持不变。如下图所示暂存test2.md更改然后执行git reset --mixed,暂存操作被撤销。

    

②--soft 用于回退到某个版本

当前工作区状态如下:暂存区暂存了test2.md,上一次commit提交了test.md更改,此时执行git reset --soft HEAD^命令,可以看到暂存区的记录没有变化,并且将上一次commit提交的test.md撤回到了暂存区。

     

③--hard 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

通过git log可以看到上一次commit提交了test.md文件的修改,此时暂存区暂存了test2.md的修改,如下图所示

    

 执行git reset --hard HEAD^命令

 

 可以看到暂存区内容和上次提交的内容都被撤销删除,而且日志里的提交记录也被清除

     

7.git reflog — 查看当前HEAD之后的提交记录,便于回到未来

 

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

1.git clone — 将Github或者Gitee上的版本库克隆到本地以完成本地版本库的初始化

2.git remote — 列出已存在的远程仓库

git remote -v可以显示详细信息

使用git clone之后默认添加了名称为origin的远程仓库,也可以使用git remote add命令进行添加

 3.git pull — 从其他存储库抓取并合并到当前存储库中

为了测试这个命令,我首先登录Github,并新建了testpull.md文件,此时远程仓库和本地仓库的内容存在差异,如图所示

        

 执行git pull命令

 

远程存储库中的testpull.md被抓取合并到当前存储库中,如下图所示(git fetch和git merge两条命令组合使用可以达到相同效果)

 

3.git push — 将本地存储库的数据对象更新到远程存储库

为测试git push命令,先在本地存储库删除testpull.md并提交,此时远程存储库比本地存储库多了一个testpull.md文件。

 

执行git push命令

 

远程存储库的文件也被删除

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

  实际项目中往往是多人团队开发项目,多人团队的工作时间线常常是并行的,团队中的每个人都向远程版本库 push,难免会发生分叉现象,该场景使用Git解决项目开发过程中的分叉现象。

1.同步最新代码到本地存储库

2.创建一个分支

git checkout -b mybranch 命令可以创建并切换到新的分支;或者可以使用git branch mybranch命令创建一个分支,再使用git checkout mybranch切换到新的分支。

使用git branch命令可以查看当前分支情况,如图所示当前有main和mybranch两个分支并且此时位于mybranch分支上。

3.在该分支上完成某一单一模块

创建一个testbranch文件,并将其暂存、提交,如图所示。

     

4.合并分支并推送到远程存储库

使用git checkou main命令切换回main分支

 使用git pull命令同步最新存储库到本地

使用git merge命令合并分支

  git merger命令默认合并方式是“快进式合并”(fast-farward merge),这样合并分支和主分支会合并到一条时间线中,如下图所示。为了保证版本演进路径的清晰我们往往想要得到如图--no--ff所示的分支结构,这时可以使用git merger --no-ff命令进行合并。

          

使用git merge --no-ff mybranch合并分支

 

 使用git push命令推送到远程存储库,登录Github查看远程存储库中新增了testbranch文件,如下图所示

     

 

场景四:Git Rebase

  在git中每一次提交要在commit log message中描述清楚,但在开发过程中,中间有些提交可能是有错误的,后期又进行了更改,因此为了让log记录在以后更容易回顾参考,在push之前需要整理一下commit记录,使用git rebase命令便可以完成这个工作。

为了测试,我首先提交了ABC三个版本

使用git rebase -i HEAD~3命令,表示弹出交互式界面让用户编辑,HEAD~3表示HEAD之前的三个commit节点。

 执行命令后弹出编辑界面如下

 

此时删除B版本(先按 i 切换到插入模式,删除 pick e1f3ffd B 这一行,然后输入:wq保存退出),如果想撤销git rebase操作,可以执行git rebase --abort。

保存编辑。由于前面提交的ABC三个版本都修改了testRebase文件,所以产生冲突,如下图所示,可以根据提示选择保留哪个更改。

解决冲突后需要将修改后的文件存入暂存区(git add),然后执行git rebase --contiune

 

再次使用git log查看提交日志,可以发现B版本已经不存在了。

 最后,像场景三一样合并分支,然后推送到远程仓库即可,如下图所示。

    

 

posted @ 2020-10-11 13:46  k&x  阅读(265)  评论(0编辑  收藏  举报