Git初次使用与心得
跨考进科软,通过孟宁老师的高级软件工程第一次了解到git这个分布式版本控制系统,并在老师的课堂讲授和课下的实际操作中慢慢熟悉使用git,下面这篇博文将简单介绍下git的几种使用场景。
参考文献来自于孟宁老师的博文:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg
在使用git之前,我们选择使用vscode工具,首次下载vscode后发现vscode里并没有自动安装好git,这时我们只好到官网下载git并安装,还需要通过命令行配置用户名和邮箱,方便后续场景的演练
做好以下准备工作后,我们就可以正式开始接下来的场景演练了。
场景一:Git本地版本库的基本用法
首先打开vscode,在D盘新建一个文件夹GitGaoruan作为我们的工作目录
然后我们点击crtl+shift+G,点击初始化存储库,初始化一个本地版本库
这时我们可以在文件夹中看到出现了.git文件,其实第一次使用时并没有出现隐藏的.git文件夹,点击了显示隐藏的项目后才出现- -
我们还可以在命令行中使用 git init初始化版本库
使用git status可以查看当前工作区状态
此时我们工作目录下是空文件状态
我们新建一个readme.txt文件,在vscode中可以通过ctrl+shift+G观察到与上一个版本发生的变化,以绿色U标记表示还没有添加到版本库进行跟踪
我们点击+号或者使用git add readme.txt会发现后缀的U变为A,表示已经将read.txt变成一个将要提交的变更
我们还可以通过对应的 - 号按钮取消暂存更改,对应的命令行形式下使用git reset HEAD readme.txt, 而 git checkout -- readme.txt命令是用于撤销对文件所作的更改,即从本地版本库中恢复文件,注意二者的区别。
之后我们可以使用git commit -m "add readme"将文件从暂存区提交到仓库
我们在txt文件中添加了‘abc’,使用git status查看当前状态,此时的修改还未提交到仓库
我们还可以通过git diff readme.txt查看两次文件的差异,之后我们就可以提交到仓库了
通过git log可以查看过去的提交记录,并使用git reset --hard HEAD^回到上一个版本
我们还可以通过git reflog查看当前HEAD提交后的记录,并使用git reset --hard 版本号恢复,查看文本发现已经回复到添加过abc的那一个版本。
场景二:Git远程版本库的基本用法
我们还可以通过在gitee或者github上创建一个新的版本库,通过git clone命令将版本库克隆到本地完成本地版本库的初始化
我们可以看到在本地已经有了远程的版本库文件,即此时已经克隆成功。通过git remote可以看到git clone后默认的远程存储库名称为origin
在本地新增加123.txt文本文档后使用git add和git commit命令在本地仓库中更新,最后再使用git push命令将其同步到远端仓库
我们可以在github上查看到仓库已经和本地仓库保持一致
场景三:团队项目中的分叉合并
首先我们使用git checkout -b 分支名称 创建一个新的分支,并通过git branch查看分支情况,当前所在的分支会用*标注
我们可以看到当我们在本地创建了一个新的分支testbranch后系统已自动切换到分支testbranch上,我们在分支testbranch上新建一个test.txt文本文档,并编辑内容“summerafei”
通过cat test.txt可以查看我们在文档中书写的内容
我们在testbranch分支上的操作已经完成,现在我们切换到主分支main上
我们目前在主分支main上,通过查看文件夹我们并没有发现刚才在testbranch上添加的文档可以确认这一点
接下来我们就要进行分支合并操作了,我们使用git merge命令将分支testbranch合并,注意合并前我们先要切换到主分支上,有两种分支合并,我们使用的也是默认使用的快进式合并(fast-farward merge)
如果要保留testbranch分支为一段独立的分支线段,则需要使用--no-ff参数关闭"快进式合并"(fast-farward merge),合并完成后查看文件夹可以发现当前main分支已经和testbranch分支保持一致。
最后我们需要将同步后的本地仓库通过push再同步到远程仓库
可以在github上验证已经push完成。
场景四:Git Rebase
rebase操作可以把几次提交整合成一次提交,使得开发者的提交整洁干净,让log记录将来更容易回顾参考。注意不要通过rebase对任何已经提交到远程仓库中的commit进行修改。
我们在命令行上输入git log可以看到有三次历史提交记录
使用git rebase -i HEAD^^,可以重新整理HEAD之前的2个commit节点
然后将new change前面的pick修改成squash,这样的话可以将最近的两个commit整理合并,然后输入:wq退出
此时已经将后两次commit整理合并完成,通过git log可以查看
不管做了怎样的编辑操作,退出文本编辑器后,想撤销git rebase操作的话,可以执行如下命令git rebase --abort。