git简明教程

git是目前很强大且应用最广泛的版本控制系统。本文对git中最常用的操作命令做了一些总结。

配置ssh

使用http方式访问远程仓库时,pull、push这些操作都需要输入用户名和密码,很繁琐,使用SSH 公钥来进行授权会很方便。

在git配置SSH步骤如下:

生成ssh key

在terminal中输入以下:

ssh-keygen -t rsa -C "email@address.com"

会提示你输入密码,这个密码用来设置访问key的密码,可以为空。
之后在~.ssh这个目录会生成id_rsa和is_rsa.pub两个文件;

添加公钥到你的帐户,以github为例:

首先打开is_rsa.pub,拷贝所有信息;拷贝的时候最好使用cat,然后cmd + c或者pbcopy命令。用文本编辑器打开可能会产生多余的字符,导致校验错误。

登陆github帐户,点击头像进入profile setting -> 点击 SSH and GPG Keys -> 点击 New SSH key ,填写title和key。

测试你的ssh key是否正常使用:

ssh -T name@github.com

配置git

初始化git目录

git init

在你需要初始化的目录下输入init命令,即可生成.git目录,目录中有HEAD, config, description三个文件和branches, hooks, info, objects, refs五个文件夹。一个仓库便初始化完成了。

克隆已有的仓库

git clone

当你在github或者gitlab等平台手动创建仓库后,系统会再服务器上自动初始化完成仓库。之后调用clone命令就可以将远程的仓库克隆一份在本地。我们常说git是分布式版本控制,其分布式体现在去中心化。虽然日常使用中都有一个中心仓库,但每一个克隆下来的仓库都是一个完整的镜像,而每个仓库的地位都是平等的。

设置远程仓库地址

git remote set-url origin git@github.com:someaccount/someproject.git

如果本地init的仓库需要推送到新的远程仓库,或者要改变当前仓库的远程url,使用上述命令。

查看当前的远程地址:
git remote -v

config设置

git config --system   配置全局属性           
git config --global   配置当前用户属性      
git config --local    配置当前版本库,缺省值   
git config -l 查看所有属性
git config user.name <username>
git config user.email  <email>
git config core.editor  vim
git config core.color   auto

初始化完成仓库以后,我们常用的就是设置下自己的名字和邮箱等。使用git config -l 查看所有的属性,也可以直接对某个属性设置值。

git的使用

分支操作

git branch 将本地的分支打印出来
git branch -r 打印远程所有分支
git branch -a 将本地和远程所有分支打印出来
git branch -D branchName 删除branchName分支
git checkout branchName 切换到branchName分支
git checkout -b branchName 在当前分支基础上新建一个branchName分支

最常见的操作就是切换分支了,上述命令可以方便地切换或者新建分支。

提交操作

git status 查看当前状态
git add . 把工作空间中所有修改(包括新建和删除)的文件添加到索引库中
git commit 把索引中所有的修改提交到本地
git commit --amend 以追加形式提交
git fetch 将远程仓库拉取到本地镜像中
git pull  将远程仓库拉取到本地镜像并且合并到本地分支中 git pull = git fetch  + git merge
git pull --rebase 以rebase方式拉去仓库
git push origin branchName 将当前分支推送到远程仓库中

git的提交分为几个阶段:

  1. 加入索引:使用git add 命令将修改的文件加入到git的索引中,即受到版本控制了。
  2. 将索引内容添加到仓库中:使用git commit命令将索引中的内容添加到本地仓库,这条命令会产生一次提交记录,并且生成commit id。这条记录可以用来追踪历史的改动记录。
  3. 将本地仓库内容推送到远程:使用git push命令,将当前的分支上所有改动内容推送到远程仓库中。

合并操作

git merge branchName 将branchName分支合并到当前分支
git merge --squash branchName 将branchName中的所有commit合并为一个,并应用到当前分支
git cherry-pick commitId 将commitId对应的提交应用到当前分支
git rebase branchName:把你的当前分支里的每个提交(commit)回退,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把当前分支更新到branchName分支,最后把之前的补丁应用到当前分支上。

git可以方便地开新分支开发,完成后合并到主干分支。涉及到两个分支之间的合并操作主要有merge、cherry-pick、rebase三个操作。

回退操作

git reset commitId 如果想回到当前分支历史上任意一个commit,可以使用reset
git reset --hard commitId 与不加hard相比,不加hard虽然git上回退,但所有文件的修改都还保留;加hard连文件都会退掉。
git revert 撤销某次commit,但会将这次撤销也作为一次commit,即做一次反向修改。

reset和revert的区别是,reset是直接会退到历史版本,且删除此版本之后的所有修改;而revert是将某次commit做一个反向修改,并产生一个新的提交。

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

推荐阅读更多精彩内容

  • Git简明教程 1. git四大域 git四大域:工作目录,暂存区,仓库,远程仓库。git对文件的操作都是在四大域...
    lavor阅读 11,048评论 27 435
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,617评论 9 163
  • 国庆过后,风刮的有种想穿棉袄的冲动,不知各位的多肉还安好? 今天馆长就要给大家介绍一种在风中,雨中,冬天中都可以给...
    我是阿甘呀阅读 224评论 0 1
  • 你什么时候觉得自己很孤独? --插不上话,融不进别人圈子的是时候。 --一个人出门发现忘记戴耳机的时候。 --睡午...
    荒芜寂静阅读 169评论 3 1
  • 我可没有这个意思,你居然能这么理解,你反观下自己吧!@ 对于修行的人,这句话可称为怼人的“万能金句” 也是我听到的...
    大白咚阅读 163评论 0 0