一个用GIT写作的故事

特别声明:图片均来自网络,水印是公众号自动添加,如有侵权,请告知删除.本人原创会特别声明

某天,一位IT码农MM想写一部小说, 基于码农的特性,MM想起了GIT.

GIT包括了工作区/暂存区/版本库如下 (暂存区是版本库的一部分,由于其特殊性单列出来)

在这里插入图片描述

MM想刚好,我左手工作区码字,右手暂存区存草稿,自己看精彩了再提交,美滋滋~~

"git init" 初始化了一个git工作空间就干起来了·

MM满怀"东临碣石,以观沧海"的豪情噼里啪啦的码字,满足感不亚于码代码,不亦乐乎,git也贼溜

"git status"     //看看自己修改了哪些文件

"git add 小说" //把草稿提交到暂存区

"git commit -m "小说1.0版本"" //把小说提交到版本库

刚开始都是包含热情,慢慢的就觉得词穷, MM对自己当前的码字并不满意,尤其是对某次提交,于是MM要还原

"git revert <commit id>" //执行了某次提交的反向操作,但注意可能有冲突,为什么有冲突呢,这种问题就交给大家了

还有时候工作区的码字实在看不下去,想着快刀斩乱麻,于是用草稿(暂存区)的内容替换了当前的工作区的内容

"git checkout <commit id> -- 小说" //从某个提交撤销文件修改,暂存区也会被覆盖, 不指定commit id将从暂存区撤销文件修改

但是MM有时会哭,因为checkout操作不当会将她辛辛苦苦改动的内容全部清除

后来写着写着真烦了,她还会想着全部退回去原来的某个时间点(某个提交)重新开始,git就有时间倒流的功能.
众所周知,git版本库有一个HEAD指向当前的提交,正常情况是正常往前走的时间轴,但是你的reset黑魔法可以利用它时光倒流,不过,注意倒流回去的时间点与"现在"的历史可能会丢失

"git reset --hard HEAD^/HEAD~1" //让HEAD指向上一次提交,暂存区/工作空间的内容与HEAD指向内容一致

"git reset --mixed HEAD^/HEAD~1" //让HEAD指向上一次提交,暂存区与HEAD指向内容一致

"git reset --soft HEAD^/HEAD~1" //让HEAD指向上一次提交

注意: reset可能会让你的修改内容丢失,对于原先在版本库里的提交也有可能丢失,因为历史被改变了,果然是黑魔法

开始总是曲折的,也是容易放弃的, 度过了这段时期, MM感觉越来越顺手拈来, 终于不小心把一个参考的小说也加到暂存区里,这咋整,总不能让人知道自己在参考(抄袭)吧, MM很淡定的敲下了,“小Case”

"git rm --cached <file>" //revert add 操作

MM伸了一个懒腰,心满意足的查看自己码下的满满的提交以及某些章节的改动

"git log [--graph]" //查看所有的提交,"--graph"可以图示不同分支的提交

"git log <file>"     //查看文件相关的提交

"git log -p <file>" //查看文件在提交过程中的修改内容

接着就是给当前写好的小说来一个标签,“残酷游戏(Game Is Touch)(GIT)”

"git tag -a <tag name> -m <comment>" //在当前HEAD上打一个标签

自从第一版发布以来,好评不断, 各路豪杰分别表示要加入她一起创造世界,MM心动了,于是她决定把小说提交到最著名的同性交友社区GitHub

"git remote add orign <git hub url>" //绑定仓库的github地址到默认的origin

"git push origin master"                     //将本地提交到github

人多的江湖总是复杂,由于将小说公开给多人协同编辑,大量问题随着而来,这些问题的本质都是"冲突",每次从github更新后总是会跟本地冲突

"git pull" //从远端同步代码,git pull == git fetch + git merge

merge总是容易存在冲突, 如何解决冲突?

MM觉得与其老是解决冲突,不如自己开一个分支,好好写自己的狗血故事,再将自己的故事合并到大的世界中去取悦(恶心)他人

"git branch -a" //查看本地以及远程分支

"git checkout -b <new branch> <based branch>" //基于based branch新建一个分支开始MM的故事

故事写完了,MM可以切换回主线master,将故事注入(合并)到世界中,现实世界总是有冲突的,那就解决吧. 路漫漫而修远兮…

"git checkout master" //切换到master分支

"git merge <MM分支>" //merge,容易有conflict,需要个人解决,然后再次提交

从此MM快乐地跟别人生活在一起(我是说一起写故事)

你以为故事会这么简单?

单是解决冲突就很头疼,还有时候发现主线有坑要切换回主线去填呢?这时刚好在分支中开发得很开心又不想提交在怎么办?

"git stash save "save message"" //将改动缓存起来

"git stash show"                          //现实缓存的内容

"git stash apply stash@{num}"   //将改动检出

上述只是一个场景以及解决方式,后面有就机会讨论更多的场景.

欲知后事如何,请听下回分解

如有兴趣,请打开链接求关注
https://mp.weixin.qq.com/s?__biz=MzAwNjI2NTg4Mw==&tempkey=MTA2Ml9uUE9wZWhMMkRFL2hDcDdVZ2RVaDZCVDlzaDNhRi05eDRQLUVNNktrbVVER05jNEtlYkxaajY0aXI5NmZXaVlJQjkyUHNrQmN1RHRLUExWbnQ1QnczNVI3VmZ6MHJNeXh4MmFreFZpU3ZMdXpXTjUzSTRuS0Y4MzlVcmljRU5odGhTcE1rMXdlUnVibUdUTjFwVVFUdFk0Tml5cC1DMFRrQ0s3N0h3fn4%3D&chksm=1b114c752c66c563a93d05cc8a48e7e9060a4dffab4ea0cdab1ebdce5028e13c31bce3557513#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值