Git 学习笔记

前言:一直知道分布式版本控制系统git,但是无奈从来没有用过,有幸,最近公司开始改用git,故,利用上班空余时间,系统的学习了一下,以下便是我对git命令的一些总结。

来源https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

INSTALL 安装

本人用的正是号称最烂开发平台的windows操作系统,默认环境为windows (默默攒钱买Mac。。。。。)

下载网址:https://git-for-windows.github.io

安装完成之后,Git里面会有三个应用,分别是,GUI、CMD、Bash
打开Git Bash 完成基础设置

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

设置完成后 会在用户主目录下面的一个隐藏文件.gitconfig里发现所设置的情况

CREATE 创建

$ mkidr <catalogue name> ——————创建空目录
$ pwd ——————显示当前目录
$ git init ——————创建一个新的本地版本库
$ ls -ah ——————查看隐藏目录

创建目录时请确保目录名不包含中文

创建SSH Key

$ ssh-keygen -t rsa -C “youremail@example.com

设置完成后 会在用户主目录找到.ssh目录, [id_rsa]是私钥,[id_rsa.pub]是公钥

注册一个github帐号,将你的公钥添加进去,你就获得了一个Git远程仓库了

$ git remote add origin git@server-name:path/repo-name.git——————关联一个远程库
$ git push -u origin master ——————推送master分支的所有内容
$ git push origin master ——————推送最新修改
$ git clone <address> ——————从远程版本库克隆

address支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

LOCAL CHANGES 本地更改

$ git add . ——————将所有当前更改添加到下一个更改
$ git add -p <file> —————— 在文件到下一个提交中添加一些更改
$ git add -f <file> ——————强制添加
$ git commit -m "<explain>" ——————把文件提交到仓库
$ git commit -a ——————提交跟踪文件中的所有本地更改
$ git commit . ———————提交之前更改
$ git commit --amend ——————提交最后一次更改
$ git status ——————查看仓库当前状态
$ git diff ——————追踪文件更改
$ git diff HEAD -- <file> ——————查看工作区和版本库里面最新版本的区别
$ git rm <file> ——————删除文件

COMMIT HISTORY 提交历史

$ git log ——————显示最近到最远的提交日志
$ git log --pretty=oneline ——————一列显示日志信息
$ git log --pretty=oneline --abbrev-commit ——————一列显示日志信息 缩写
$ git log -p <file> —————— 显示更改特定文件的日志信息
$ git blame <file> —————— 显示在特定文件中谁更改了什么
$ git reflog ——————查看命令历史
$ git log --graph ——————查看分支合并图

UNDO 撤销

$ git reset --hard HEAD ——————回退到当前版本
$ git reset --hard HEAD^ ——————回退到上个版本
$ git reset --hard HEAD^^ ——————回退到上个个版本
$ git reset --hard HEAD~100 ——————回退到上100个版本
$ git reset --hard <commit> ——————回退到指定版本
$ git reset HEAD <file> ——————撤销暂存区的修改,重新放回工作区
$ git reset <commit>——————回退到指定版本并保存所有变化
$ git reset --keep <commit> ——————回退指定版本并保留未提交的本地更改
$ git checkout -- <file> —————— 丢弃本地更改
$ git checkout HEAD <file> —————— 丢弃特定文件中的本地更改
$ git revert <commit> ——————恢复更改

BRANCHES & TAGS 分支和标签

$ git branch ——————查看分支
$ git branch -av ——————查看全部的分支列表
$ git branch <name> ——————创建分支
$ git checkout <name> ——————切换分支
$ git checkout -b <name> ——————创建+切换分支
$ git checkout --track <remote/branch> —————— 基于远程分支创建一个新的分支
$ git branch -d <name> ——————删除分支
$ git branch -D <name>——————强行删除分支
$ git merge <name> ——————合并某分支到当前分支,fast forward模式,无分支历史记录
$ git merge --no-ff -m "explain" <name> ——————普通模式合并,合并后有历史记录
$ git tag <tag-name> —————— 打一个新标签
$ git tag ——————查看所有标签
$ git tag -a <tagname> -m "explain" ————指定标签信息
$ git tag -s <tagname> -m "explain" ——————用PGP标签签名
采用PGP签名,需要安装GnuPg,至于如何使用和配置gpg,请移步:http://www.williamlong.info/archives/3439.html
$ git stash ——————隐藏当前工作现场
$ git stash list ——————查看工作现场
$ git stash apply ——————恢复工作区 不删除stash
$ git stash pop ——————恢复工作区 删除stash

UPDATE & PUBLISH 更新和发布

$ git remote -v —————— 显示远程库详细信息
$ git remote show <remote> —————— 显示有关远程的信息
$ git remote rm origin ——————删除远程库
$ git fetch <remote> —————— 下载所有远程更改但是不与当前版本合并
$ git pull <remote> <branch> —————— 抓取远程库的新提交
$ git push <remote/branch> —————— 从本地推送
$ git checkout -b branch-name origin/branch-name ——————在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致
$ git branch --set-upstream branch-name origin/branch-name ——————建立本地分支和远程分支的关联
$ git push --tags —————— 推送标签
$ git push origin <tagname> ——————推送一个本地标签
$ git push origin --tags ——————推送全部未推送的本地标签
$ git push origin :refs/tags/<tagname> ——————删除一个远程标签

OTHER 其他

$ cat <file> ——————查看文件内容
$ git config --global color.ui true ——————让Git显示颜色

设置忽略特殊文件 .gitignore

配置文件地址:https://github.com/github/gitignore

$ git check-ignore -v <file>——————检查对应文件.gitignore配置规则

偷懒好大法

$ git config --global alisa.<别名> <命令名> ——————配置别名

常见别名设置:

1.$ git config --global alias.st status
2.$ git config --global alias.co checkout
3.$ git config --global alias.ci commit
4.$ git config --global alias.br branch
5.$ git config --global alias.unstage 'reset HEAD'
6.$ git config --global alias.last 'log -1'
7.$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

说明:--global命令是对当前用户起作用,如果不加,就只针对当前仓库起作用
每个仓库的Git配置文件都放在.git/config中

总结 :

熟记命令,多敲多练,该偷懒时,就偷懒,哈哈

OK 好好学习,天天向上,加油!!!

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

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,456评论 1 26
  • Git教程 一、Git简介 1.1. Git的诞生1.2.集中式的vs分布式 二、安装Git 三、创建版本库 四、...
    曹渊说创业阅读 935评论 0 2
  • git学习笔记 声明 本文是本人学习Git过程中所做的笔记,以便日后查阅,文中多有错漏之处,不建议用作学习材料,文...
    sayonara_yoyo阅读 673评论 0 1
  • 有人说,用小米的都是屌丝,三年前,我拥有了第一台小米手机,那时网上炒得火热,性价比、支持国产、玩机体验、饥饿营销,...
    拂尘记阅读 443评论 1 1
  • 闭上眼睛,在脑海里边开始回忆我们的最开始见面的画面。 那天你从校车上下来,呼喊我的全名,我转头,一个阳光健壮的男生...
    夏天有雨cjy阅读 214评论 0 0