Git初次使用心得

这是我从机械跨考到软件的第一次使用完整使用git的一次流程,虽然以前也接触过,但从未自己真正走完整个开发流程,经过这次的模拟使用,感觉受益匪浅。

由于我自己是刚刚选上孟老师的课,前两次课都没能去听课,文中不规范操作还请老师见谅。

本文主要参考了孟宁老师的这篇博客:

https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg 

在使用git之前,我首先根据孟老师的推荐,使用了vscode作为工具,并安装配置了git,做好准备工作之后,就可以在vscode中使用git了。

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

1.git init  # 初始化一个本地版本库

 

初始化成功。

2.git status # 查看当前工作区的状态

 

由于此时本地库中并没有add文件到暂存区,所以查看状态时显示如上。

3.git add [files] # 把文件添加到暂存区(Index)

 

此时我们再使用 git status 命令查看当前工作区状态

 

显示当前有新的改变等待提交,也就是我们刚刚add到暂存区的 test.txt文件。

4.git commit -m “wrote a commit log infro” # 把暂存区里的文件提交到仓库

 

这里第一次提交显示失败,是因为我们没有设置默认的账号邮箱和姓名,我们按照提示设置之后:

 

再次进行提交,显示提交成功。

 

5. git log # 查看当前HEAD之前的提交记录,便于回到过去

 

此时我们的提交记录中只有一个记录,为了方便之后的命令体验,我们又再次commit了一个新的文件到本地仓库。

6.git reset -hard HEAD^^/HEAD~100/commit-id/commit-id的头几个字符 # 回退

此时,我们的日志中有两次提交记录:

 

我们可以使用

git reset --hard HEAD^ # HEAD表示当前版本,HEAD^表示上个版本,HEAD^^表示上上个版本

git reset –hard ed4eb282628f64789abd527836e518fc12926f7c  # 这串字符是commit-id

来使提交回退

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

 

我们使用get reset –hard HEAD^ 回退之后,查看当前HEAD之前的提交记录已经不能找到回退之前提交的内容了,因此我们需要使用git reflog查看HEAD之后的提交记录,便于回到未来。

 

此时使用 git reset –hard commit-id/commit-id的头几个字符就可以回到未来

 

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

这里我找到了本科时团队所做的一个二手书共享平台项目,从Github官网clone下来。

 

此时查看我们的文件夹下也出现了clone下的文件夹:

 

此时我们仍可以使用场景一下的各种指令对clone下来的文件进行操作, git add,git commit等命令将BookShare这个项目上传到本地仓库:

 

我们重新clone下来项目文件夹:

 

查看clone之后默认的远程存储库名称为origin,和更详细的远程存储库信息。

Vscode版本库中已经pull和push两个个操作简化位一个“同步”操作,使用同步操作后,我们需要登录github的账号和密码进行验证:

 

同步成功之后,我们也看到我们的github上的远程仓库也新增了我们在本地新建的文件:

 

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

在开发团队项目时,通常每个团队都是负责某个功能模块进行开发,因此为了项目可以并发进行,我们需要为自己的工作创建一个分支,这个分支只负责单一功能模块:

1.git checkout -b mybranch # 创建并转到mybranch分支下

git branch # 查看当前分支

 

2.在该分支上进行开发工作之后,多次执行add并commit

 

3.先切换回master分支下,将远程origin/master同步最新到本地存储库(因为此时团队其他成员或许已经将master分支进行了改动,需要需要先同步更新),再合并mybranch到master分支,最后推送到origin/master之后即完成了一项开发工作。

 

此时,我们的远程仓库也已经更新完成:

场景四:Git Rebase

当我们在自己的分支mybranch下完成了一些开发工作之后,为了让log记录更加详细从而方便将来更容易作为退回的参考,我们可以用git rebase重新整理一下提交记录(但是不能对任何已经提交到远程仓库的commit进行修改)

假如我们已经从远程仓库clone了一个项目,并且已经完成了自己的一些工作A,B,C,但是再提交至远程仓库时,我们要求A,B在本地存在过,但并不出现在远程网络图中,此时就需要用到git rebase命令。流程如下图所示:

 

我们先转换到mybranch分支下,将开发完成的A,B,C文件进行add,commit:

 

这是我们需要使用git rebase指令对我们的提交做处理

 

我们根据提示,使用drop移除提交,使用reword继续提交但是编辑提交信息,修改完成后保存并退出,并重新修改C的提交信息:

 

这是我们可以用git log查看提交信息,发现A,B已经成功移除了提交,C也修改了提交信息:

 

之后,我们便重复场景三,切换回master分支,同步远程仓库,合并mybranch分支,查看git log:

 

发现成功,于是push我们的本体仓库到远程仓库

 

 

 

至此,场景一到场景四都模拟完成。

 

posted @ 2020-10-07 17:58  EndArthur  阅读(162)  评论(0编辑  收藏  举报