Loading

Git入门初体验

Git是目前世界上最先进的分布式版本控制系统(没有之一),下文通过完成一道练习题对git的基本操作进行演练,题目为“在Github上新建一个版本库,并实现如下commit网络结点示意图,要求A和B在本地存在过,但并不出现在远程网络图中”。

一、创建并克隆版本库

首先,登录github(没有账号的先注册一个),然后创建一个新的Repository,命名为LearnGit,同时添加一个readme文件,如下图:

结果如下:

接着我们将版本库克隆到本地,在终端中输入以下命令:

git clone https://github.com/xjchen996/LearnGit.git

如下图:

然后我们可以在本地看到多了一个LearnGit文件夹,里面有一个.git文件夹和readme.md文件:

在终端cd进入LearnGit,输入以下命令可查看当前工作区状态:

git status

二、创建本地分支

执行以下命令,创建一个名为localbranch的本地分支(同时切换到该分支):

git checkout -b localbranch

输入git branch可查看当前分支情况

三、在不同分支上分别进行开发工作

首先,在github新增一个from main文件并多次修改和merge以符合网络图要求,由于都是在可视化界面进行操作,这里不做展示。

接着,在本地localbranch上进行add和commit操作,先创建一个from localbranch.txt文件,添加些许内容后执行如下命令将该文件添加到暂存区:

git add '.\from localbranch.txt'

接着执行如下命令将暂存区文件提交到仓库:

git commit -m "A"

之后对文件修改并重复上面的操作两次,三次的commit日志分别为"A","B","c",如下图:

输入git log可查看HEAD之前(git reflog查看HEAD之后)的commit记录,每次commit都会生成一个40位的唯一ID:

执行如下命令可移动HEAD指向指定的commit记录:

git reset --hard HEAD^^/HEAD~100/commit-id/commit-id的头几个字符

如图所示:

最后将HEAD切换回"C":

四、Rebase(将"A","B"删除)

为了将刚刚提交的"A","B"两个commit记录移除,我们在终端输入以下命令:

git rebase -i HEAD^^^

这时会打开命令行文本编辑器大致如下:

按i键进入插入编辑模式,将头两行删除,结果如下:

接着按Esc回到一般命令模式,输入:wq保存退出,终端会显示如下消息:

这时我们需解决冲突,再将文件加入暂存区(git add "filename"),再执行以下命令:

git rebase --continue

这时又会进入文本编辑器,我们将第三次的commit日志"C"修改为"ABC",如下图:

保存退出即完成了rebase,输入git log可看到之前的三次commit记录已转换为一次commit记录"ABC":

五、将本地分支合并到github上

首先,切换到本地main分支,将远端分支pull下来,将localbranch分支merge到main分支(使用--no-ff参数关闭"快进式合并"),最后push到github上,完成。
命令如下:

git checkout main
git pull
git merge --no-ff localbranch
git push

Github上最终的项目文件如下图:

下图是最终远程的网络图,符合预期。

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

posted @ 2020-10-20 22:35  景彡  阅读(163)  评论(0)    收藏  举报