GitHub笔记记录

作者: Biharry | 来源:发表于2017-04-27 14:59 被阅读24次

基础操作

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 从仓库中拿到最新的代码

相关文章

网友评论

    本文标题:GitHub笔记记录

    本文链接:https://www.haomeiwen.com/subject/ouzgzttx.html