Git&GitHub常用命令

整理总结自《GitHub入门与实践》——(日)大塚弘记,支鹏浩.刘斌 译

Git部分


基本配置

  1. 设置使用Git时的姓名与邮箱地址
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "[email protected]"
  1. 提高命令输出可读性
$ git config --global color.ui auto

本地仓库使用

基本操作
  1. 创建准备作为本地仓库的目录,进入后进行git init初始化
$ mkdir git-tutorial
$ cd git-tutorial
$ git init 
# 下为示例显示内容
Initialized empty Git repository in /Users/hirocaster/github/github-book/git-tutorial/.git/

其中.git目录存储着管理当前目录内容所需仓库数据。在Git中我们称当前目录(如/git-tutorial)为“附属于该仓库的工作树”。文件编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。若想将文件恢复到原先状态,可以从仓库中调取之前快照,在工作树中打开。

  1. 使用git status 命令查看仓库当前状态
$ git status
  1. 使用git add 命令向暂存区中添加文件(如创建test.txt文件作为测试)
$ git add test.txt
# 添加目录下全部文件
$ git add .

4.使用git commit 命令保存仓库历史记录

$ git commit -m "create test.txt"

-m 后参数内容为此次提交说明(概述)。若直接使用git commit命令而无-m及之后参数,编辑器会自动开启,可按如下格式记录详细提交信息:

  • 第一行:用一行文字简述提交的更改内容
  • 第二行:空行
  • 第三行及以后:记述更改的原因和详细内容
  • 井号开头的行代表注释内容

此时想终止提交可留空提交信息并直接关闭编辑器。

  1. 可使用如下方式合并add与commit
$ git commit -am "合并提交"
  1. 使用git log 命令查看提交日志
$ git log
# 只显示提交信息第一行
$ git log --pretty=short
# 只显示指定目录、文件的日志
$ git log test.txt
# 显示文件改动(查看文件提交日志及提交前后差别)
$ git log -p test.txt
  1. 查看工作树和暂存区的差别
$ git diff
  1. 查看工作树和最新提交的差别
$ git diff HEAD

分支操作

9.创建、切换分支

$ git branch feature-A
$ git checkout feature-A
# 上述两条命令合并
$ git checkout -b feature-A
  1. 显示分支一览表
$ git branch
# 下为示例显示内容
* feature-A
  master
  1. 切换回上一分支
$ git checkout -
  1. 合并分支(假设feature-A与master合并)
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff feature-A

随后编辑器启动,用于录入合并提交的信息。

  1. 以图表形式查看分支
$ git log --graph
  1. 历史版本回溯
$ git reset --hard 目标时间点哈希值(git log可查看)
  1. 查看当前仓库执行过的操作日志
$ git reflog
  1. 消除冲突
    合并时出现冲突的文件内容可能如下所示:
# test.txt
<<<<<<< HEAD
     - feature-A
=======
     - feature-B
>>>>>>> feature-B

我们手动在编辑器中将其改成想要的样子,保存退出执行相应add与commit即可:

# test.txt
     - feature-A
     - feature-B

GitHub部分


基本配置

  1. 本地设置SSH Key
$ ssh-keygen -t rsa -C "[email protected]"
# 下为显示内容
Generating public/private rsa key pair.
Enter file in which to save the key 
(/Users/your_user_directory/.ssh/id_rsa):#此处键入回车
Enter passphrase (empty for no passphrase):#此处键入密码(直接回车设置为无密码)
Enter same passphrase again:#此处再次输入上步所设密码
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
fingerprint值 [email protected]
# 下为示例显示内容
The key's randomart image is:
+--[ RSA 2048 ]----+
|       .+    +    |
|     =  o  O  .   |
#下略

此时/Users/your_user_directory/.ssh目录下会生成id_rsa、id_rsa.pub两个文件,其中id_rsa是私钥(谨慎妥善保存),id_rsa.pub为公钥。在SSH连接后,根据配置还可能生成known_hosts文件,文件内容为访问过的远程服务端公钥(这里只能假定第一次访问的远程服务端是正确且安全的),当下次访问相同服务端时,SSH会核对公钥,若公钥不同,SSH会发出警告, 避免受到中间人攻击等。

  1. 向GitHub添加公开密钥
    在GitHub账户设定(Account Settings)中选择SSH Keys菜单,点击Add SSH Key,在Title栏中添加密钥名称,Key栏中填入上步骤中生成的本地id_rsa.pub文件内容,可使用如下命令快捷查看:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公开密钥的内容 [email protected]

成功添加后创建账号邮箱会收到一封“公共密钥添加完成”的邮件。

  1. 本地与GitHub进行认证和通信
$ ssh -T [email protected]
# 下为显示内容
The authenticity of host 'github.com(207.97.227.239)' can't be established.
RSA key fingerprint is fingerprint值.
Are you sure you want to continue connecting (yes/no)? #输入yes
# 出现如下结果即为成功
Hi 你的用户名 ! You've successfully authenticated, but GitHub dose not provide shell access.

远程仓库使用

基本远程操作
  1. 使用GitHub页面工具栏中New repository创建新仓库
  • Repository name:仓库名。
  • Description:仓库说明(非必填)。
  • Public、Private选择:是否公开仓库,Private可设置访问权限。
  • Initialize this repository with a README:自动初始化仓库并设置README文件,使用户可以立刻clone仓库。若想向GitHub添加手中已有Git仓库,不要勾选,直接手动push。
  • Add .gitignore:可通过下拉菜单选取自动生成的.gitignore文件内容,该文件记录了不需要加入Git仓库进行版本管理的文件格式(包含主要语言及框架),不作选择即无。
  • Add a license:添加许可协议文件,可参考主流开源许可证辨析。

GitHub仓库创建成功后,URL格式一般如下:https://github.com/user_name/repo_name,README.md文件内容会自动显示于仓库首页,一般内容包括但不限于软件概要、使用流程、许可协议等信息。另,GitHub Flavored Markdown(GFM)是GitHub在Markdown语法基础上扩充的一种语法,可广泛用于诸如README.md、Issue、WiKi、评论等GitHub功能区内容的书写表达。

  1. clone已有仓库(SSH与HTTPS链接皆可,根据不同按需使用)
$ git clone [email protected]:hirocastest/Hello-World.git
# 下为示例显示内容
Cloning into 'Hello-World'...
remote:Counting objects:3,done.
remote:Total 3 (delta 0),reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
  1. 进入clone的本地仓库,进行更改与一系列本地git操作后进行push
$ git push
# 下为示例显示内容
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:hirocastest/Hello-World.git
     46ff713..d23b909 master -> master

分支远程操作
  1. 添加远程仓库
$ git remote add origin [email protected]:hirocastest/git-tutorial.git
  1. 推送至远程仓库相应分支
$ git push -u origin master(或其他目标分支名)
  1. 查看所有分支(包括远程分支)
$ git branch -a 
# 下为示例显示内容
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/feature-D
  remotes/origin/master
  1. 获取远程分支
$ git checkout -b feature-D origin/feature-D
  1. 获取最新远程仓库分支
$ git pull origin feature-D

你可能感兴趣的:(Git&GitHub常用命令)