Git的学习之道

关于版本控制

(vcs,记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统)
--本地版本控制系统(rcs)
--集中化的版本控制系统(cvcs)
--分布式版本控制系统(dvcs)

Git特性

--直接记录快照,而非差异比较
--近乎所有操作都是本地执行
--时刻保持数据完整性
--多数操作仅添加数据

文件的三种状态

--已提交(committed)
--已修改(modified)
--已暂存(staged))

基本的 Git 工作流程如下:

  >> step1 在工作目录中修改某些文件。
  >> step2 对修改后的文件进行快照,然后保存到暂存区域。
  >> step3 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

git常用指令

>> git configure [ARGUMENT]        //修改配置参数
>> git clone [url]                 //复制文件仓库到本地目录
>> git add [FILENAME]              //添加文件内容到工作树索引
>> git status                      //查看工作树的状态
>> git diff                        //查看尚未暂存的文件更新了哪些部分
>> git rm [FILENAME]               //从工作树索引中移除文件
>> git commit                      //提交,也可以-m 参数后跟提交说明的方式,跟--amend表示重新提交
>> git mv ->git rm && git add         //git改名操作相当于git删除一次然后添加一次
>> git log                             //默认不用任何参数的话,会按提交时间列出所有的更新,最近的更新排在最上面
>> git log --pretty=format:"%h - %an, %ar : %s"     //添加参数之后会有更好的观察效果
>> git reset HEAD [FILENAME]      //取消暂存文件
>> git checkout --[FILENAME]      //取消对于文件的修改
>> git stash                      //当我们未做完一件事不能commit但是要切换到另外一个工作分支的时候,可以使用

gitignore文件

--git clone下来的文件内,手动创建.gitignore文件
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/
.txt
# ignore all .txt files in the doc/ directory
doc/*/.txt

Git远程仓库使用

--查看当前的远程库
>> git remote //显示远程库名
>> git remote -v //显示远程库对应的clone地址>
-- 添加远程仓库
>> git remote add [name] [url] //指定新的远程库,并且起名
--从远程仓库抓取数据
>> git fetch [name] //抓取本地仓库没有,[name]远程仓库有的信息(需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支)
>> git pull [name] //目的是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
--推送数据到远程仓库
>> git push [remote-name] [branch-name] //将本地仓库中的数据推送到远程仓库
--远程仓库的删除和重命名
>> git remote rename [old-name] [new-name]
>> git remote rm [name]

打标签

--列显已有的标签
>> git tag //列显已有的标签
>> git tag -l [type] //列显感兴趣的标签
--新建标签
类型:轻量级的(lightweight)和含附注的(annotated)
>> git tag -a [name] -m [information] //含附注的标签
>> git tag [name] //轻量级标签
>> git show [versionNo] //查看相应版本的标签信息
--后期加注标签
>> git tag -a [versionNo] [checksum] //后期加标签
--分享标签
>> git push origin [tagname] //显示推送标签
>> git push origin --tags //推送所有的本地标签

技巧与窍门

--Git 命令别名
>> git config --global alias.[new-name] [old-name]

Git分支

--分支的新建与切换
>> git checkout -b [new-branch] => git branch [new-branch] && git checkout [new-branch]
--分支的合并
>> git checkout master
>> git merge [branch-name]
--分支的删除
>> git branch -d [branch-name]
--列举所有的分支
>> git branch
参数可选
>> -v //查看各个分支最后一个提交对象的信息
>> --merged //列出你已经(或尚未)与当前分支合并的分支
>> --no-merged //查看尚未合并的工分支

--利用分支进行开发的工作流程
master 稳定的老旧分支,也称长期分支
develop 开发或测试分支
topic 是指一个短期的,用来实现单一特性或与其相关工作的分支,也称特性分支

远程分支

--远程分支
>> git clone [url]
>> git fetch origin
>> git remote add [package-name] [url]
>> git fetch [package-name]
-- 推送本地分支
>> git push [remote-package] [branch-name]
--跟踪远程分支
>> 从远程分支checkout出来的本地分支,称其为跟踪分支,跟踪分支是一种和远程分支有直接关联的本地分支
-- 删除远程分支
>> git push origin :[branch-name]

--分支的衍合
假设两个分支master和experiment,现在要衍合experiment,就是把experiment里的变化在master中更新一遍,然后合并
>> git checkout experiment //切换experiment分支
>> git rebase master //在master中更新变化
>> git rebase master experiment //等同于上面的两条命令
>> git checkout master // 切换master分支
>> git merge experiment //合并experiment
>> git branch -d experiment //删除experiment分支
三条链a b c衍合a c
>> git rebase --onto a b c

注意:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

服务器上的Git

未完待续

参考文献:

<Git中文文献>

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

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,645评论 9 163
  • 我喜欢观察女人之间的聊天,在你来我往中看到暗流涌动的人性,挺有意思。 我的朋友苏菲最近遇上了一件烦心事,准确地说,...
    Crystal不停站阅读 533评论 0 0
  • 我最初是被黄小猫的叫唤声吸引的,那是2014年的一个初夏,刚下过雨,回家路上路过一个花坛,听到阵阵的奶猫叫唤,很细...
    flyingfish2007阅读 751评论 2 1
  • 【牧羊人和材夫的故事】 第一集 1、你是砍柴的,他是放羊的,你和他聊了一天,他的羊吃饱了,你的柴呢? 砍柴的陪不起...
    聂仁博阅读 1,045评论 0 1
  • 画男神, 其实他太帅,我感觉我画残了。 呜呜呜呜,求安慰。
    冷澈12阅读 291评论 6 5