17

左小白还想着如何解决分支合并冲突问题,一到公司就被经理叫到会议室,“卧槽,不会出什么事吧,我也就代码没有提交啊”,小白当时害怕极了。

“是这样的,说下昨晚开会客户的决策……没什么重要事,不要紧张兮兮的”,经理看出来我很紧张,停了下继续说:“客户觉得我们效率低,担心完不成,希望安排人去现场支持,看得出小白是个很努力的人,想安排你去支援,可以吗?”

“是去哪里?”

“深圳。”

“这么远啊?”

“不要担忧,飞机住宿都是可以报销的,你先去,后面陆续安排其他同事去”,嘀嘀咕咕说了很多。

“好吧!”

其实左小白内心是拒绝的。

“什么时间去啊?”

“今天是周五,你马上买机票,下周一就过去”。

18

回到座位,左小白下载了航旅纵横 APP,看了周一去深圳的航班,6 点一班,15 点一班,那只能买 6 点了,意味着早上 4 点要起床去机场,这么早,怎么去机场还是问题,滴滴?想想就很难受。

周六还去公司加班了,周日睡了一天,吵闹的 4 点闹钟开始起床,试试滴滴,还真有人接单。40 分钟车程到了机场,匆匆忙忙过了安检。

到了深圳就开干,一刻没歇,冲突的问题还得解决,上次命令git merge进行合并报错如下:

$ git merge dev
Auto-merging config.xml
CONFLICT (content): Merge conflict in config.xml
Automatic merge failed; fix conflicts and then commit the result.

左小白先用命令 git status 查看状态:

git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      config.xml

no changes added to commit (use "git add" and/or "git commit -a")

打开 config.xml 文件:

<<<<<<< HEAD:config.xml
<div id="footer">
contact : email.support@github.com</div>
=======
<div id="footer">
 please contact us at support@github.com
</div>
>>>>>>> dev:config.xml

卧槽,好复杂,不想看了!却默默打开了搜索引擎,搜索关键字“Git”、“分支”、“冲突”,原来这表示 <<<<<<<======= 部分指 master 分支所在的位置,=======>>>>>>>部分指dev 分支所在的位置 。为了解决冲突,必须选择使用由 ======= 分割的两部分中的一个,或者也可以自行合并这些内容。

当解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决,最后git commit来提交,搞定。

19

还有 5 分钟就要迟到了,急忙往公司赶,准备上楼时看到一位高挑妹纸疾风而过,好漂亮啊,小白愣住了,这不就是小白心中的女神啊,这是哪个公司啊,小白心想。妈妈呀,要迟到了,电梯怎么还不来,爬楼吧,最后还是迟到了 3 秒,都怪那个妹纸,要找她算帐!

回到工位,又看到了那妹纸,还做她旁边?“难道她是我们公司,没见过啊?”

下午 3 时,小白为一个 bug,正没有头绪,焦头烂额,突然被一个人敲了下肩,小白气不打一处来,要发火了,只见那妹纸对她笑着说:“请问下,我git add已经提交了,我还要改点代码,如果再 add 是不是会成两条提交记录啊”

“嗯,是的”,左小白很确定地说。

“一次 bug 修复我只想有一个提交记录,有办法吗”

“这么强迫症,难道你是处女座?”

“这都被你猜到了”,妹纸有点急了。

“你可以使用命令git reset HEAD^从本地仓库撤销到工作区,这样就可以继续修改,之前提交的那条记录会没有的。”

"本地仓库?工作区?"妹纸一脸懵逼。

“工作区:你现在修改区域;通过命令git add把代码放到暂存区,使用命令git commit提交代码并不是真的提上来了,而是放在本地仓库,git push才真的提交到远程仓库,我这样简单解释“工作区”、“暂存区”、“本地仓库”、“远程仓库”四个概念可以理解吗?”我问妹纸。

“让我消化下……也就是说 Git 是不受网络影响,随时随地可以提交代码,反正也是先提交到本地仓库”。

“可以啊,都能延伸了啊”我给妹纸竖了大拇指。

“话虽如此,可我还是不敢撤销,万一操作坏了!”

好吧,左小白手把手帮妹纸操作一遍,妹纸投来敬仰的眼光,左小白内心乐开了花。

20

晚上 10 点,终于可以下班了。

“我请你吃夜宵吧,今天帮我一个大忙”,妹纸向左小白说。

“好啊。”

“我今天第一次来,周围还不熟悉……”

“没事,离我们不远有家串串店很好吃,我们去吃吧,哦,你可以吃辣吗?”

“可以啊,我可无辣不欢。”

路程大概 10 分钟,左小白 20 多年来还很少单独跟妹纸相处,不禁有些紧张起来,为了不尴尬,左小白找着话题尬聊起来。

“哎呀,我居然还不知道你的名字呢。”

“右小爱。”

“我左小白,我们名字似乎有点般配啊,哈哈”

……

“小爱,你是我们公司吗,怎么没见过你啊?”

“不是,我来苏州无为科技有限公司。”

“我是无锡思锐科技有限公司的,无锡知道吗,就是旁边的城市。”

“知道的,这个项目缺人,我刚毕业,啥不会,公司让我来凑数的。”

“没有啦,看你代码很溜,还以为你工作好几年了呢。”

吃串串时,两人你一句我一句瞎聊着,右小爱就是深圳人,高考没考好,就选了苏州大学,目前实习。

21

"小白,我git add加到暂存区,我想撤销怎么搞?就是从暂存区撤销到工作区怎么搞?"小爱问到。

“命令git reset HEAD <file>

“果然可以。”

“小白,经理说这个 bug 不用改了,我工作区修改的代码可以不要了,难道要把我修改的代码再改回去?”

“不用,命令git checkout <file>即可。”

过了一会,小爱很开心地对小白说:“你真厉害。”

“小爱,看你写了一天代码,有什么成果啊?”

“解了 5 个 bug 了。”

“你可以看你写了多少代码的。”

“这么神奇?怎么看啊?”

“ git diff --shortstat "@{0 day ago}"查看今天你写了多少行代码。"

“牛啊,小白!你知道这么多,都是怎么学的?”

“我之前有看过吴小龙同学写的博客,公号吴小龙同学 后台回复 Git 可以获取 Git 完整资料。”

“好的,我这就去公号 吴小龙同学 后台回复 Git 获取资料。”

Git 奇技淫巧_java

“牛逼,还有 Git 思维导图,我平时用到的命令都有,啧啧,原来你教我都是来自吴小龙同学啊。”

“嘿嘿。”

22

有了小爱“陪伴”时光好像过的格外的快,转眼三个月过去了,左小白和右小爱从一开始都不知道对方名字,到慢慢熟悉,到后面直接称兄道弟,可小爱实习期到了,小爱当然是要在深圳留在她爸妈身边的,因此她要先回苏州,办理离职。

“小白,你今后打算啊。”

“不知道啊,可能要留在无锡吧。”

小爱没有继续说话,这一天都没有跟左小白说句话。

自从小爱回去了,左小白整天提不起精神来,总感觉是缺少了什么,不行,左小白喜欢上右小爱了。

第三天右小爱回到了深圳,小白想向小爱表白,但是又很担心,万一不答应,不要最后兄弟都没得做,在这种纠结中,小白发烧了。

Git 奇技淫巧_java_02Git 奇技淫巧_java_03Git 奇技淫巧_java_04Git 奇技淫巧_java_05Git 奇技淫巧_java_06Git 奇技淫巧_java_07

很明显感觉她有些不高兴。

Git 奇技淫巧_java_08

小白急了,豁出去吧。

Git 奇技淫巧_java_09

要晕,要晕,小白假装晕了过去。

Git 奇技淫巧_java_10

只见小爱轻轻地点点了头。

Git 奇技淫巧_java_11

小爱狠狠捶了小白胸口一下。

第二天,左小白提了离职申请,从此左小白和右小爱过上了没羞没臊的幸福生活。