月度归档: 2017年3月
git学习笔记
设想你现在位于 alpha/
目录下,这里有一个文本文件 number.txt
,里面的内容只有一个词:“first”。
现在执行 git init
将这个 alpha 文件夹初始化为 Git 仓库。
执行 git add number.txt
会将 number.txt
添加到 Git 的索引(index)中。这个索引记录了所有 Git 保持追踪的文件,现在它有了一个映射记录 number.txt -> first
,同时 add
命令还会把一个包含了 first
字符串的二进制对象加入 Git 的对象数据库里。
现在执行 git commit -m first
。这条命令会做三件事情。首先在对象数据库内创建一个树对象,用以记录 alpha
目录下的文件列表,这个对象有一个指针指向前面 git add
命令创建的 first
二进制对象;第二,这条命令还会创建一个 commit 对象用以代表刚刚提交的版本,它包含一个指针指向刚刚的树对象;第三,master 分支也会指向这个新创建的 commit 对象。
现在执行 git clone . ../beta
。它会创建一个新目录 beta 并将其初始化为 Git 仓库,然后把 alpha 仓库的对象数据库中所有对象拷贝给 beta 的对象数据库,将 beta 的 master 分支像 alpha 的 master 一样指向相应的对象。它还根据 first
提交的内容配置索引,并根据索引更新目录下的文件——也就是 number.txt
。
现在切换到 beta 目录,修改 number.txt
的内容为“second”,执行 git add number.txt
和 git commit -m second
,新创建的提交对象 second(译注:姑且称之为 second)会有一个指向父提交(first)的指针,表示 second 继承自 first,而 master 分支则指向 second 提交。
回到 alpha 目录,执行 git remote add beta ../beta
,将 beta 仓库设为远程仓库。然后执行 git pull beta master
。
在这条命令背后,它其实会执行 git fetch beta master
,从 beta 仓库中找到 second 提交的相关对象拷贝到 alpha 仓库;把 alpha 中关于 beta 的 master 分支记录指向这个 second 提交;更新 FETCH_HEAD
指向刚刚从 beta 仓库拉取的 master 分支,还是这个 second 提交。
此外,pull
命令还会执行 git merge FETCH_HEAD
。从 FETCH_HEAD
得知最近拉取的分支是 beta 仓库的 master 分支,据此拿到相应的对象,也就是 second 提交对象。此时 alpha 的 master 分支指着 first 提交,正好是 second 的祖先提交,于是对于 merge 命令来说只需要将 master 分支指向 second 提交即可。接下来 merge
命令还会更新索引以匹配 second 提交的内容,并且相应更新工作目录中的文件。
现在执行 git branch red
,创建一个名为“red”、指向 second 提交的新分支。
然后执行 git checkout red
。在 checkout 之前,HEAD
指向 master 分支,执行命令之后它就指向了 red 分支,使得 red 成为当前分支。
接下来把 number.txt
的内容修改为 “third”,执行 git add numbers.txt
和 run git commit -m third
。
之后再执行 git push beta red
,这条命令会把 alpha 仓库内跟 third 提交相关的对象拷贝至 beta 仓库,并且将(alpha 仓库内记录的)beta 仓库 red 分支指向 third 提交。就酱。
—————————-
事实上只有理解后台的动作,才能在命令中游刃有余。下面个人总结的,请大家抛砖。
git工作流设计
写给三十岁以上的程序员
本人80年生,这一般是个适合开始的,也是个容易总结的年份,总结就是一种创新,所以我的话就多。
中国IT圈,是有传统特色的,你会找到江湖的味道。那么,混不好的话你就可能挨几刀或者走火入魔。
做技术的你真的需要职业规划,个人战略,运气,勤劳,魄力,以及聆听自己的心声。
切记一,江湖上的传说都留给别人吧,富二代,财团,那些争夺虚名的胜利者。
切记二,心静了,也不能滥学,不然你会被半浅不深的技术淹死,半熟不热的噎死,千万别“以苦做舟”,没兴趣,不快乐的话,快点闪人,时间和精力有限,别等开进了胡同倒不出车。—-入魔的
我的一个同学R,做开发工作5年时,就嘴上总挂着转行,不想搞开发。心理的呼唤,没有理,况他也不忍失掉机会成本,因为不做技术,去新行业又拿不到高薪,由奢入俭难,然后先干着,一晃几年又过去了,嘴上又挂着转行,但这时可能就是被外界种种逼的。—-挨刀的
如果你没有保持对新技术的敏感
如果你没有对技术掌握的成就感,好奇心
如果你没有自己家里的开发环境和实验“码田“
如果你没有技术微博和一箱子的书和案头的手册
如果你没有最想深入了解的技术方向
如果你没有无数个深夜面着电脑搞这搞那儿,忘记吃饭和睡觉
如果你没有承担40岁后失业勇气
如果有,全有。
亲,那么恭喜你,我们进阶吧。
IT带来的不是多少个职位和行业,而是一个时代。虽然你30岁多了,但是你是这个时代的建设者和亲历见证者,你有权要求发声音,也应该有了担当来发声音。
一,认清大环境
中国的IT业还不是个完全市场导向的,因为这是共产主义国家。
传统行业的信息化和新行业相比,后者才是IT圈新贵们蛰伏的乐土,但是急功近利。
程序员想搞科研去大学,研究所,少在老板面前晃悠,等你真去了说不定,他主动找上你,在你眼前晃悠了。但我劝大家,IT只是工具和手段,应用科学需求量总是比理论高,就是个金字塔型的下端之于上端。
二,认清生存元素
好的IT公司是应该有自己的擅长的领域并且能留人。就像天龙八部里的少林,藏经阁里的扫地僧。
那些领域更适合你
三,认清自己的风格
你是哪类程序员,喜欢静,宅,喜欢看百家讲坛多过于娱乐频道。
白天求生存,夜晚求发展
人们从他的身上感觉到一股力量。
以上是几年前写的,现在我在一个不以技术为主的,以业务实体更看重的公司(甲方是国企),这样的确是比较稳定的,对技术人员也很尊重,(一个有老程序员较多的公司坏不了多少),我放弃许多挑战自己的骨气和机会,只为稳定,也不知对不对,希望这观点别太深的影响你的判断。