iterm2+Git使用

前言: 最近在实习,写文章的频率下来了很多,开几篇文章写写在实习中学到的东西吧。

一、Git的使用

git的主要功能

  1. 版本控制:想要记录历史版本以备可能会需要回溯到某个版本的可能,避免手动为每一个历史版本做一个副本,git会帮助你记录历史版本。

  2. 合作开发:可以同时多个人分别自己开发,最后能合到一起。

  3. 分布式?:每个人都有完整的版本库,同时开发的人可以互相推送分支然后合并成新版本(实际似乎不是这样)。

git的基本概念

git仓库

开始使用git需要在要管理的目录下初始化一个git仓库。

git init  #初始化git仓库

会在当前目录下自动生成.git文件夹(里面的内容以后在了解),记录历史版本、提交、分支、用户配置等。

工作区、暂存区和版本库

  • 工作区:正在修改的,尚未加入暂存区的文件在工作区。

  • 暂存区:准备提交到版本库的文件存在暂存区。

  • 版本库:当所有工作区的修改都进入暂存区,commit提交后成为一个版本。

git add foo  #将文件foo加入暂存区git status  #查看工作目录状态git commit -m "desc"  #将暂存区文件提交并附上描述

有了上面三个概念就有了版本控制。

工作区的修改可以从暂存区或版本库中的记录恢复,也可以加入暂存区。

git checkout -- foo  #将工作区的foo修改作废,恢复至暂存区或版本库中的版本

暂存区的文件可以恢复到工作区也可以回退成版本库中的版本。

git reset HEAD foo  #将HEAD指针所指向版本库中的foo文件恢复到暂存区。该操作影响暂存区,不影响工作区内容。

也可以使工作区回到指定版本。

git reset --hard HEAD^  #工作区恢复到HEAD的前一个提交,工作区的修改全部丢失。

分支

在一个commit之后像树分叉一样两个分支独立生长。 开发者可以拥有自己的工作分支,随时提交到自己的分支而不影响主分支。开发完成后再进行合并,解决冲突(如果你的分支和主分支上同时修改了相同的文件)后,主分支上也有你的工作了。

以下流水账。

基本操作

创建版本库

** git init ** git add some.file $ git commit -m "description"

版本回退

** git status ** git reflog $ git reset --hard commit_id

撤销修改

从工作区撤销修改

$ git checkout -- filename

可以撤销工作区文件的修改,回退到暂存区,如果未进入暂存区,则回退到版本库。如果被追踪的文件被删除同样可以找回。

从暂存区撤销修改

$ git reset HEAD filename

所有撤销修改仅限于影响被追踪的文件

删除文件

让git不再记录文件,使用

$ git rm filename

文件将从版本库中删除。

远程仓库

关联远程仓库和从远程克隆

** git remote add origin git@server-name:path/repo-name.git ** git clone git@github.com:foo/bar.git

分支管理

一个分支是一串提交串成的时间线。分支可以从某个点分化成不同分支各自发展。不同的分支间可以合并。

创建、切换与合并

** git branch name ** git checkout name ** git checkout -b name ** git merge name $ git branch -d name

  • merge分支可能会产生冲突,需手动解决。

  • 更重要的是生产环境中一般不允许merge,而是提交pull request。

  • 问题:fast-forward模式是如何丢失分支信息的

保存现场

$ git stash

可以将工作区和暂存区的修改保存起来,此时可以切换分支进行开发。切换回来想恢复现场,则使用

$ git pop

更多stash

** git stash list ** git stash apply $ git stash drop

feature分支

通常在开发新特性时都会用到。命名以feature开头。强制删除分支的命令是

$ git branch -D name

fork 和 pull request

  • GitHub类网站的一个功能。想向别人的项目提交代码却没有权限,可以先fork别人的代码,自己修改并提交,然后向项目管理者发起pull request,申请把你的代码合并到他的分支里。

  • 生产过程中也需要用pull request而不是merge来提交代码。

自定义git

颜色、name和email

** git config --global color.ui true ** git config --global user.name "Your Name" $ git config --global user.email "email@example.com"

.gitignore

忽略掉不想track的文件如密码配置等,使其不在git status时提示。GitHub上推荐的各种工程.gitignore文件

规则

官方文档

新加入的规则不会忽视已经track的文件,status仍会提示,此时应untrack这些文件。

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

设置别名

设置alias可以让使用更方便。

** git config --global alias.co checkout ** git config --global alias.ci commit $ git config --global alias.br branch

那如何取消设置呢

config文件

仓库的配置

每个仓库的.git/config

用户的配置

~/.gitconfig

问题

git是支持分布式的,但现实中似乎还是使用了一个中心服务器。开发时先pull下来再开新分支开发然后push,所以比SVN好在哪。(commit是本地的,push和pull时需要网络;SVN可以修改文件但没网不能提交)

为什么要有暂存区,如果只是好看可以修改完然后提交所有。

分支好难说。

merge的fast-forward方式和noff方式对分支合并前后的影响。

.git文件夹下的内容。

二、zsh+iterm2 中Git快捷键

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

推荐阅读更多精彩内容