版本控制及git常用基本命令

title: 版本控制及git常用基本命令
date: 2015-12-04 11:40:04
tags: [git, version control, 版本控制]


(此文章适合听说过git,大概知道git是什么东东,但是又不会git命令的童鞋阅读。
时间充裕的童鞋可以到codecademy跟着教程一步步走)

Git是一个分布式的版本管理(Version Control)工具。

版本管理这个概念很多童鞋可能不是很清楚,但其实在代码创作的过程中很可能已经使用过了一些传统的方法,比如我初中高中的时候创作博客模板的时候,对同一个模板想做一些不同的调整,同时又担心调整后原来的功能啊显示啊的会受到影响,那时候还不知道github之类的东东,于是机智地

  1. 创建了很多文件夹来放不同的模板
  1. 不停的备份
  2. 如果调整后正常运行和显示,那就使用最新的版本
  3. 如果调整后不能正常运行同时又找不出问题所在,就是用备份的上一个版本来重新创作

以上对应到版本控制系统分别是:

  1. 创建分支(branch)
  1. 提交代码(commit)
  2. 合并分支(merge)
  3. 版本回滚(checkout)

关于git的概念及使用流程这里不详细讨论,暂时只讨论一些最基本的常用的git命令

  • git init 初始化一个git仓库,生成.git隐藏文件
  • git status 查看git仓库的状态,将会返回当前分支, 文件状态等信息,可以使用-s参数查看只有文件状态的简洁版信息
  • git clone <repo location> <repo name> 将远程分支克隆到本地,<repo name>参数可选,为本地repo命名,若省略,则本地repo与远程同名
  • git add <file name> 将文件变为staged状态,也就是告诉git哪些新的文件和修改过的文件是之后要提交的;文件名支持正则表达式
  • git rm <file name> 将文件删除同时告诉git从git仓库中删除文件,可以使用 --cached 参数实现只从git仓库中删除而不删除本地文件
  • git diff <file name> 查看git仓库文件与本地文件的区别
  • git commit -m "some comment" 将修改提交到git仓库
  • git show HEAD 显示HEAD版本的相关信息,包括authordatecommentdiff
  • git log 查看提交记录,包括提交的时间、作者、评论
  • git reset SHA 将本地git仓库回退到某个版本,其中SHA为版本log中commit后的一长串字符的前7位字符
  • git reset HEAD <file name> 将本地git仓库中的某个文件重置为git仓库的HEAD版本
  • git checkout HEAD 使用git仓库中的文件覆盖当前的整个working copy,可以在修改了某些文件但想舍弃这些修改的时候使用这个命令

需要注意reset是针对本地的git仓库,也就是你每次commit后,文件就会保存到的仓库。
checkout是针对本地的工作副本,也就是你直接编辑的那些文件,会被overwrite

  • git branch 查看分支信息,使用-r参数查看远程分支信息
  • git branch <branch name> 添加新的分支
  • git branch -d <branch name> 删除分支
  • git checkout <branch name> 切换分支,可以使用-b参数,创建新分支并切换到新分支
  • git fetch 获取远程origin/master分支最新版本,需要手动与本地文件merge
  • git pull 获取远程的最新版本并与本地merge

需要注意 git fetchgit pull 的不同,通常如果本地文件有改动,则应该先fetch在 git merge origin/master

  • git stash 将本地的工作副本暂时存起来
  • git pop 将存起来的工作副本放出来…

git stashgit pop 通常在git pullgit merge的时候如果有冲突(conflict)的时候使用,pop之后有冲突的工作副本会变成如下的样子,冲突的resolve就是选取最终的内容,然后删除多余的内容,包括<<< ===>>>这些行也要删除,让代码看起来和正常的代码一样。

//git pop之后的冲突文件看起来长这样:
 <<<<<<< their code
 var a = 123;
 =======
 var a = 456;
 >>>>>>> my code
//冲突解决后,看起来应该长这样:
 var a = 123;
  • git merge <branch name> 合并分支,将指定分支与当前分支合并

origin/master分支为远程主分支

  • git push origin <branch name> 把分支推送到远程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容