Git魔术——VSCode中如何使用Git(以github作为远端存储库)


引言

有幸选到孟宁老师的《高级软件工程》这门课,孟老师上课告诉我们,工欲善其事必先利其器,作为软件工程的学生,Git不会用,那是不行的!因此,需要动手操作来学习如何使用Git,一款神奇的魔术软件!

准备工作

首先,我们需要用于VSCode这款编程神奇,然后在github上申请一个属于自己的账号,最后下载Git软件。

我们先在VSCode中创建一个文件夹,然后按住Ctrl+Shift+G,如图所示,

会发现,现在还没有一个本地的存储库,所以需要初始化一个存储库

//这一步也可以通过git init 实现,在VSCode中打开终端,然后输入
git init

 

初始化后,我们打开这个文件夹,然后查看,你会发现多了一个.git的隐藏文件,而这就是我们的存储库了!

这样我们的魔术工作就准备好了!

魔术场景一:Git本地版本库

我们在homework1的文件夹下创建一个homework1.txt,然后输入点内容,就可以将其上传到我们的github上了!

至于怎么在VSCode连上github,可以参照这样一篇博客https://blog.csdn.net/qq_42852004/article/details/90057151

//在终端中输入,git status可以查看当前工作区的状态
git status

然后我们再创建一个homework2.txt,输入一些内容,然后使用git add功能

//git add [FILES] # 把文件添加到暂存区,可以添加多个文件(这里只添加了一个文件)
git add

仔细查看,其实,这里有一个问题,第一次为什么没有把文件加入暂存区呢?

原因是,我们是在homework1这个文件夹下创建的homework2.txt,因此在高软作业这个目录下是查询不到的,因此也就不能将其添加到暂存区中!

//git commit -m "wrote a commit log infro” # 把暂存区里的文件提交到仓库
git commit -m "使用git commit功能"

提交完成后,你会发现左边工作区的暂存的更改,已经消失了!好神奇哦!然后我们也可以通过可视化操作,将这些修改推送到github上

当我们打开自己的github时候,此时已经多了一个txt文件!

//git log # 查看之前的提交记录,便于回到过去
git log

//git reset *****的头几个字符 # 回退到某一个版本
git reset ......

当我们使用回退功能时,会发现产生了差异,左边是回退后的文件,右边是回退前的文件,在VSCode中,我们可以清楚的看到这样的对比。

//git reflog # 可以查看当前版本之后的提交记录,便于从过去回到未来 //git reset *****的头几个字符 # 回退
git reflog git reset ......

这些就是Git在本地的一些操作,是不是很简单,但又很神器呢,那我们进入下一个魔术吧。

魔术场景二:Git远程版本库

我们先在这里进行一个说明,先用一张图来理一下git fetchgit pull的概念:

可以简单的概括为:

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

下面我们来实践一下!

我们现在github里对homework1.txt进行修改,修改如下

我们将使用git pull功能,从github上将修改的内容拉到本地

git pull

当我们使用了git pull功能后,我们发现,txt里的代码修改。

我们再次对github上对homework1.txt进行修改

我们将使用git fetch功能,从github上将修改的内容拉到本地

git fetch

当我们使用了git fetch功能后,我们发现,txt里的代码没有修改。我们可以通过使用下面的代码,展示出差异:

git log -p FETCH_HEAD

显示差异后,我们可以通过git merge来将差异合并,解决冲突,从而使得,本地的代码与github上的代码同步。

git merge

这样,本地代码与github上的代码就同步啦!

由此也可以看出:git pull = git fetch + git merge

我们在本地进行了修改,又需要怎么把代码上传到github上呢?

//git push 可以将本地存储库的代码上传到github上
git push

我们再打开github上看看我们的文件,是不是已经改变了?

魔术场景三:团队项目的分叉合

 

 

 

在实际的工作中,都是团队开发,那么在一个团队中又是怎么操作的呢?

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

  • 1.克隆或同步最新的代码到本地存储库中;
  • 2.为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制;
  • 3.在该分支上完成单一功能模块或代码模块的开发工作;
  • 4.最后将该分支合并到住分支上。

下面我们就来试一试吧!

git checkout -b testbranch         //创建testbranch分支
git branch                         //查看所有分支

然后我们在testbranch分支上进行多次操作,然后提交到暂存区。

然后我们切换回主分支(master分支)

git checkout master

VSCode会提示我们主分支需要更新

我们可以通过merge来合并差异,将testbranch的内容融入master分支中。

git merge --no-ff testbranch

然后提交到github上,可以啦!

魔术场景四:Git Rebase

那主分支,也就是master分支要修改其他分支怎么办呢?别急,我们接着往下看:

我们在master分支做出如下修改:

我们切回到testbranch分支,发现还是我们修改前的代码:

我们可以通过这样的操作,将所有分支都和master分支进行同步,然后就会发现,testbranch分支里的代码已经被修改了。

git rebase master

魔术场景五:Fork + Pull request

为了解决开源社区松散团队的协作问题,Github提供了Fork+ Pull request的协作开发工作流程。

当你想更正别人仓库里的Bug或者向别人仓库里贡献代码时,要走Fork+ Pull request的协作开发工作流程:

  • 1 先 fork(分叉) 别人的仓库,相当于拷贝一份;
  • 2 做一些 bug fix或其他的代码贡献;
  • 3 发起 Pull request 给原仓库;
  • 4 原仓库的所有者 review Pull request,如果没有问题的话,就会 merge Pull request 到原仓库中。

而这就是Git的一些简单又实用的方法了!Git是不是很神奇呢?

参考文献

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

2.https://blog.csdn.net/qq_42852004/article/details/90057151

3.https://www.cnblogs.com/runnerjack/p/9342362.html

4.https://blog.csdn.net/nrsc272420199/article/details/85555911

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM