GIT 学习笔记 1 - HOW TO GIT

Git 的基本用法

设置姓名和地址

$ git config --global user.name "Your Name"
$ git config --global user.email "your_email@email.com"
  • 可以设置多用用户,就不要用--global,具体用法以后在研究。

提高可读性

$ git config --global color.ui auto

Mac OSX 上的vim设置

$ git config --global core.editor /usr/bin/vim -f
  • 如不设置会报错:"There was a problom with the editor 'vi'."

设置 SSH Key

$ ssh-keygen -t rsa -C "your_email@email.com"
$ cat ~/.ssh/id_rsa.pub
# 把id_rsa.pub内容添加到github.com
# 然后测试
$ ssh -T git@github.com

初始化仓库

$ mkdir git-tutorial
$ cd git-tutorial
$ git init

查看仓库的状态

$ git status

十分常用,务必牢记!

向暂存区中添加文件

$ git add <file>
$ git status   # 查看发生的变化

保存仓库的历史记录

$ git commit -m "First commit"

git add 和 git commit 可以合拼成如下命令:

$ git commit -am "Your commit"
  • -m 参数后加“提交信息”
  • 不加参数可以记述详细提交信息,格式如下:

第一行简述内容
第二行空行
第三行以后,记述更改的原因和详细内容

查看提交日志

$ git log
$ git log --pretty-short  # 只显示简述
$ git log <path|file>     # 只显示指定目录或文件
$ git log -p              # 显示提交前后差异
$ git log -p <file>       # 只显示改文件的差异

查看更改前后的差别

$ git diff
$ git diff HEAD           # 查看工作树和最新提交的差别
  • 养成良好习惯:在执行git commit 之前先执行 git diff HEAD 查看本次提交与上次提交的差别。
  • HEAD 时指向当前分支中最新一次提交的指针。

显示分支一览表

$ git branch
\* master
   feature-A
  • 带‘*’号表示当前分支

创建、切换分支

$ git checkout -b <branch_name>

也可以分开成两个命令:

$ git branch <branch_name>      # 创建分支
$ git checkout <branch_name>    # 切换分支
$ git checkout -                # 切换回上一个分支

合并分支

$ git merge --no-ff <branch_name>
  • 为了在历史记录中明确记录下本次分支合并,需要创建合并提交,合并时加上参数--no-ff。

以图表形式查看分支

$ git log --graph
  • 可以以图片形式输出提交日志,非常直观,务必牢记

回溯历史版本

$ git reset
$ git reset --hard <HASH>
  • 要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用到git reset --hard
  • 只要提供目标时间点的哈希值。

推进历史状态

$ git reflog
$ git reset --hard <HASH>
  • git reflog 查看当前仓库执行过得操作日志
  • 即便开发者错误执行了git 的操作,基本也可以利用git reflog来恢复到原先的状态。

消除冲突

README.md

# git-toturial

<<<<<<<< HEAD
    - feature-A
========
    - fix-B
>>>>>>>> fix-B
  • =========以上部分是当前HEAD的内容,以下部分是要合并的fix-B分支的内容。

修改提交信息

$ git commit --amend

压缩历史

$ git rebase -i
$ git rebase -i HEAD~2  # 最新的两次历史
  • pick改成fixup,原来的pick部分就会从历史中抹去。
  • 一般用于拼写错误等小修改。

推送至远程仓库

在github上新建一个仓库。仓库名最好与本地仓库保持一致。

  • 创建时不要勾选README选项,因为github自动生成的README文件与本地仓库失去了整合性。

添加远程仓库

$ git remote add origin git@github.com:<username>/<repository_name>.git
  • 执行上述命令后,git会自动将远程仓库的名称设置成origin

推送至master分支

$ git push -u origin master
  • -u 参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。
  • 添加了这个参数,将来运行git pull从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦。

推送至master以外的分支

$ git checkout <branch_name>
$ git push -u origin <branch_name>
  • 这样就可以把分支push给远程仓库并保持分支名称不变。

从远程仓库获取

$ git clone git@github.com:<username>/<repository_name>.git

查看当前分支的相关信息

$ git branch -a
  • -a 参数可以同时显示本地仓库和远程仓库的分支信息。

获取远程的分支

$ git checkout -b <branch_name> origin/<branch_name>
  • -b 参数后是本地仓库中新建分支的名称。
  • 再后面是获取来源的分支名称。

获取最新的远程仓库分支

$ git pull origin <branch_name>
  • 这样就可以将本地<brach_name>的分支更新到最新状态。

备注

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

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,626评论 9 163
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,668评论 1 17
  • 1、可能有人会说,当然是采购厉害!现在是买方市场,不管三七二十一,、先砍他 一刀,不行就买别人的,所以那些销售都拼...
    劲祥阅读 2,465评论 0 0
  • 这雨算是除旧的吧,下雨啥都阻下了;在被窝里躺了半天尸。过一天泡面生活,听了一下午歌。给妈妈打了电话。 我已经很努力...
    司马蒙逊阅读 119评论 0 1
  • 睡不着,哈儿。 今天,你又没有理我,我又开始慌了,心情和上几次你不理我的时候是一样的。 不会又有啥子事情要发生哈!...
    xiao钱钱阅读 275评论 0 0