git 使用

git 是现在比较流行的版本控制工具。跟传统的 CVS、Subversion 一类的集中式版本控制工具不同,它不需要服务器段软件,就可以做版本控制,换句话说就是处处皆仓库,你可以断开网络独立对对应分支做操作。同时git拥有合并追踪(merge tracing)能力。

git 配置

一般在新系统中,我们需要先配置自己的工作环境,整体来说就是用户名和电子邮件地址:

git config --global user.name "Zhen Lei"
git config --global user.email leizhen8080@gmail.com

主要使用过程

git 日常使用的精髓: “一提交,二拉取,三推送”commit pull and push
接下来主要结合命令和GUI(窗口)工具介绍

检出仓库

执行如下命令可以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远程的服务器仓库,你的命令就是ssh地址或者https地址:

git clone username@host:/path/to/repository

SourceTree 界面操作 clone


设置sshkey.png

工作流

操作上面的 clone 之后,就有了本地仓库,本地仓库由 git 维护的三棵“树”组成。
第一个是你的工作目录,它持有实际文件;第二个是暂存区(Index),它像是一个缓存区域,临时保存你的改动;最后是本地仓库

git 工作流

每个项目都有一个 Git 目录,一般工作目录都存在当前Git项目的 .git 目录中,它是用来保存元数据和对象数据库的地方。
从项目中选择某个版本进行工作时,用来进行后续的工作叫工作目录,这些文件实际上都是Gi目录中的压缩数据对象库中提取出来的。
日常的文件和内容都是在工作目录中进行。

基本的 Git 工作流如下

  1. 在工作目录中修改某些文件。
  2. 对修改后的文件进行快找,然后保存到暂存区域。
  3. 提交更新,将保存在暂存区域的文件快照存储到Git目录中。

添加和提交

你可以提出更改(把他们添加到暂存区),使用如下命令:

git add <filename>
git add *

这是 git 基本工作流程的第一步;
使用如下命令以提交实际改动:

git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没有到你的远程仓库。

SourceTree 界面展示:


SourceTree界面分布.png

拉取远程分支

从远程仓库获取信息并同步至本地仓库,并且自动执行合并操作

git pull origin master

推送改动

执行如下命令,将当前所有改动提交到远程仓库:
习惯上将本地仓库同步至远程仓库:一般推送(push)之前要先拉去(pull)一次,确保没有冲突,保持一致。

git push origin master

活用查看状态

要确定当前的状态,使用git status命令

git status

上面的三个流程都是正常情况下进行的操作,实际上,日常工作中,经常会碰到处理冲突和合并分支的情况。

分支

通过下面命令创建分支:

git checkout -b feature_x

然后可以通过下面命令切换到主分支:

git checkout master

注意:在切换分支前,必须要验证本地修改
git status

合并分支

一般先通过更新远程分支,如果远程分支由改动,就需要合并到自己本地中

git pull 更新本地仓库至最新改动
geit merge <branch> 合并 branch 分支到当前分支

处理冲突

如果本地修改某个文件 a.txt,同时远程也对该文件进行修改,那么在进行上面的合并分支操作是就会发生confilcts。
这个时候就需要处理 冲突confilct,修改好冲突后继续使用“一提交,二拉取,三推送”操作

查看日志

如果想了解日志内容:

git log
git log --author=bob
git log --author=bob -- pretty=oneline
git log --name-status

gitignore 的使用方法

.gitignore 文件的创建

在git仓库下创建一个.gitignore文件,但是win环境中,无法命名.开头的文件,所以需要通过git环境,按照Linux的方式来创建

  1. 打开gitbash
  2. 输入 touch .gitignore,就生成了".gitignore"文件
  3. 输入 vim .gitignore启动编辑器

gitignore使用

有些时候,我们必须把某些工作放到 Git 工作目录中,但又不能commit上,比如.idea/下的文件,每次提交都会有修改。

为解决这个问题,就是通过.gitignore文件让Git自动忽略这些文件。Git已经十分强大,甚至不需要我们自己编写该文件,GitHub中有各种模板,然后根据自己需求,更改一下模板就好了,对应的地址为 https://github.com/github/gitignore .

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件(这个暂时没有接触到);
  2. 忽略编译生成的中间文件、可执行文件(如java产生的.class文件);
  3. 忽略带特殊信息的文件(如数据库的配置)。

忽略文件的写法:

  • 若test文件下所有内容:
    test/
  • 若test下有test1、test2且不track test3
    test/test1
    test/test2
    !test/test3

Git 中文件忽略形式

  1. 共享式忽略
    新建 .gitignore 文件,房子啊工程目录任意位置均可。.gitignore 文件可以忽略自己,同时忽略的内容只针对未跟踪文件有效,对已经加入版本库的文件无效。

  2. 独享式忽略
    针对具体版本库:.git/info/exclude 针对本地全局 git config --global core.exclude ~/.gitignore

忽略的语法规则(类似于正则)

(#) 表示注释

(*) 表示任意多个字符

(?) 表示一个字符

([abc]) 代表可选字符范围

Git忽略规则不生效怎么办

如果在项目开发的过程中,突然想忽略某个文件,但修改.gitignore后发现并没有成功

原因在于:这些文件已经被纳入了版本管理中,所以修改.gitignore后是无效的

解决方法:把本地的缓存删除(改为track状态),然后再commit

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git 设置别名

git 中有很多命令使用频率较高,而且经常会输错,这个时候启用别名 Alias就可以起到很好的效果
以 git status 为例
git config --global alias.st status
然后就可以查看效果了

git st
On branch dev
nothing to commit, working tree clean

同时checkout,commit,等命令都可以通过简写来完成

git config --global alias.co commit

配置文件

配置 Git 的时候,加上 --global配置的是全局参数,对当前计算机所有的Git仓库都适用。
如果不加就只针对当前的仓库起作用,每个仓库Git配置文件都放在./git/config文件中。
如果配置不想在用了,就通过

git config --unset alias.co

本文参考至 维基百科 git,git简明教程,git教程

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

推荐阅读更多精彩内容

  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,948评论 3 27
  • 创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所...
    景岳阅读 753评论 0 3
  • 这是我在学习Git的过程中所做的读书笔记的相关总结,希望能对刚刚接触Git或Github的小伙伴们带来一点点帮助,...
    sonack阅读 2,489评论 9 56
  • 文/A 幸运点 床前明月光,入碗一抷长。 对饮红颜醉,寒凉玉兔伤。 注解:《平水韵》七阳平声。 ...
    A幸运点阅读 326评论 6 7
  • 坦然面对工作中的同事关系。 “同”“事”在一起的核心价值是: 支持彼此实现梦想,因此…… “梦想”是第一位: 知道...
    徐珂_0a21阅读 94评论 0 0