GitHub笔记记录

基础操作

0、本地安装git ---Mac中自带有git,所以不用自己安装

1、设置git的名字和邮箱(配置git的参数)

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

# 这里设置的姓名和邮箱是在提交的时候用到的,是公开

3、去 githun官网 中注册github账号

4、要是自己本地的能够方便的链接github的代码库,需要进行SSH认证,

  • 首先获取SSHKey
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

邮箱处输入创建github账号的邮箱,敲回车会出现下面的文字
# Generating public/private rsa key pair...
# Enter file in which to save the key(/Users/bihairui/.ssh/id_rsa): (这里敲回车)
如果之前已经获取过,会出现下面的
# /Users/bihairui/.ssh/id_rsa already exists.
# Overwrite (y/n)? y
# 已经存在,问是否重写,输入"y",按回车
在下面输入两次相同的密码就可以
# Enter passphrase (empty for no passphrase): 
# Enter same passphrase again: 
  • 查看你的public key
$ cat ~/.ssh/id_rsa.pub

# (这个就是public key)ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
  • 添加 ssh 到github中
    id_rsa.pub 中的所有内容,粘贴到下面网址的 key 框中。title自定
    添加SSH

  • 测试是否认证成功

$ ssh -T git@github.com
# 出现下面提示就是成功了
# Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

这样就添加好了SSH认证,以后用认证过的电脑就可以push文件到github中了

常用命令

git 创建

要使用git,首先要在需要git管理的目录下创建git仓库

$ git init
# Initialized empty Git repository in .....

查看git状态

$ git status
$ git status -s #git状态的简短输出命令

几种状态介绍
1、刚刚commit后的状态
# On branch master
# nothing to commit, working directory clean
2、在目录新添加了文件,还没有add
# On branch master
# Initial commit
#Untracked files:
#  (use "git add <file>..." to include in what will be committed)
# nothing added to commit but untracked files present (use "git add" to track)
3、执行git add . 后
# On branch master
# Changes to be committed:
#  (use "git reset HEAD <file>..." to unstage)
4、我们看到当执行 git add .命令后,在查看状态会有一个提示命令
$ git reset HEAD <file> 
# 这个命令就是撤销暂存某个文件,<file>替换成文件名就可以了

添加到暂存区

$ git add .   # (注意后面的  空格 + . )
# 如果需要添加单一的文件
$ git add readme.md

保存到本地仓库,并记录提交

$ git commit -m "message"
# message
# 156 files changed, 7809 insertions(+) 

添加暂存,提交一起完成
如果只是对之前的文件进行修改,并没有添加新的,可以直接用
$ git commit -a -m "message"
这一条命令代替  git add . 和 git commit -m "message"
如果有新文件添加,就不能这样用了

查看提交日志

$ git log
# commit c9e7440600a12b48a8bc04fce401ea1937065bcb(哈希值)
# Author: xxxx <xxxx@163.com>
# Date:   Mon Nov 23 21:39:48 2015 +0800
#    First commit (这个是提交的message)
# 按回车能够打印更多log
# 按q,退出状态
$ git log --oneline # 简短日志
# ad43a3d hahaha
# 5dd8db2 hahah
# 14153a2 hahaha

$ git log --oneline --graph
# 查看什么时候出现过分支

$ git log --pretty=short
# 执行此语句,会打印简单日志

$ git reflog
# 当reset到之前的一个状态,git log只能打印以此处为终点的日志
# git reflog 能打印所有的操作日志
# 只要不进行 git 的 GC(Garbage Collection 垃圾回收),就能恢复到任意状态

$ git log --decorate
# 这个命令能够打印出带有标签的日志

查看更改前后的差别

$ git diff    (只有在修改文件,但是还没有add的时候,才有作用)
# git diff 是区分本地工作库和暂存区的文件不同
$ git diff HEAD   #查看工作树和最新状态的区别

好建议:在 git commit 之前先执行以下 git diff HEAD 查看以下有什么区别

移除git控制的文件

$ git rm 
# git rm 删除本地的文件和版本库的文件

添加标签

$ git tag -a "1.1.0" -m "This is a tag"
# 添加版本和描述的标签

$ git log --decorate
# 这个命令能够打印出带有标签的日志

$ git tag
# 列出所有tag

$ git tag [tag]
# 新建一个tag在当前commit

$ git tag [tag] [commit]
# 新建一个tag在指定commit

$ git show [tag]
# 查看tag信息

$ git push [remote] [tag]
# 提交指定tag

$ git push [remote] --tags
# 提交所有tag

$ git checkout -b [branch] [tag]
# 新建一个分支,指向某个tag

分支的操作

因为 git 是分散式的,开发过程中会有过个分支。在这类的开发中,往往同时存在多个最新代码状态。从master分支中创建多个其他分支,进行开发。master是git默认的分支,基本上所有的开发都是一个这个分支为中心进行开发的。

不同分支可以完成不同的作业,完成以后再和master分支合并,利用分支可以提高开发效率

特性分支 顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支,在日常开发中,往往会创建数个特性分支,同时在此之外,在保留一个随时可以发布软件的稳定分支,稳定分支的角色通常由mastre分支担任。

我们之前创建了feature-A分支,这一分支主要实现feature-A ,除feature-A的功能之外,不进行任何作业。即使开发中发现bug,也需要再创建新分支,在新分支中修正。

完成feature-A的功能以后,在合并到master分支中

查看分支状态

$ git branch
#  * master  只有master一个分支

创建分支,并转到分支

$ git branch 分支名字   #创建分支
$ git checkout 分支名字    #切换到分支
$ git checkout master    #切换到master分支

一句话搞定上面两个命令
$ git checkout -b 分支名称 # 创建b分支,并切换到b

当切换到其他分支的时候,所有的 add commit 操作都是在这个分支里进行的。当前的文件也是在次分支的状态。这个时候如果切换到master分支,在master分支中修改文件,在feature-A 分支文件中是看不到的。但是需要注意的时,有可能会产生冲突。

切换到上一分支(快速切换)

$ git check -

合并分支

一般合并分支,首先要切换到master分支,然后在master分支中合并想要合并的分支

$ git merge --no-ff feature-A
# --no-ff:不使用fast-forward方式合并,保留分支的commit历史
# --squash:使用squash方式合并,把多次分支commit历史压缩为一次

合并的时候如果出现冲突,就解决冲突。删除==== >>>>>>>> <<<<<<<
这样的标记,然后执行 git add .git commit 就可以了。


更改提交操作

回滚历史版本

$ git reset --hard 哈希值(前七位即可)
# 哈希值可以用个git log 和 git reflog获取

修改上一个提交信息

$ git commit --amend

书的58-63页,后面的目前还不知道什么时候使用,暂且不看,等以后用到再看,暂且几下
git rebase -i 压缩历史

推送到远程仓库

上面所有的操作都是在本地仓库中进行的操作
接下来扩展到远程仓库

  • 首先在github中 新创建 一个仓库。然后拿到仓库的地址
  • 通过该地址,为本地仓库添加远程仓库

查看远程仓库

$ git remote
# 查看远程仓库
# origin
$ git remote -v
# 查看所有远程仓库
# origin    git@github.com:github/git-reference.git (fetch)
# origin    git@github.com:github/git-reference.git (push)

添加远程仓库

$ git remote add origin 远程仓库地址

移除远程仓库

$ git remote rm origin

推送至远程仓库

$ git push -u origin master   # 推送主分支
$ git push -u origin feature-A   # 推送feature-A分支到同一个仓库
推送远程仓库以后,在提交新的代码皆可以直接使用
$ git push

从仓库中获取

$ git clone 仓库地址
$ git pull 从仓库中拿到最新的代码

修改远程地址

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

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,642评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,651评论 4 54
  • CSS Sprite(雪碧图|精灵图)指什么? 有什么作用CSS Sprite指的是包含许多不同的图标、按钮或图形...
    coolheadedY阅读 298评论 1 2
  • 良辰美景大多数时只是一场泡沫的幻影。我曾天真的以为喜欢一个人就是把她当做自己的全世界,可是有一天发现我错...
    lwt我明白爱阅读 351评论 4 0
  • 奈何 奈何 今日雨滂沱 滂沱雨比相思意 意比相思雨更多 奈何 奈何 今日雨滂沱 这雨一直漂落在那年的夜里 可曾记
    月陵无声阅读 284评论 0 3