因为使用 hexo 结合 github 做博客,为了更好的利用 github,学习了廖雪峰的 Git 教程
在此基础上,根据自己的学习情况进行精简,方便日后复习查找

# 创建版本库

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

# 版本控制

# 提交修改

  1. learngit 目录下编写一个 readme.txt , 内容随意,如:
Git is a version control system.
Git is free software.
  1. 添加文件,使 git 可以追踪它
$ git add readme.txt
  1. 提交到仓库, -m 后跟的是这次提交的说明
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
  1. 修改 readme.txt 为:
Git is a distributed version control system.
Git is free software.
  1. 可以使用 git status 查看状态:
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
	modified:   readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
  1. 使用 git diff 查看修改内容:
$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
  1. 提交修改
$ git add readme.txt
$ git commit -m "add distributed"
[master e475afc] add distributed
 1 file changed, 1 insertion(+), 1 deletion(-)

# 版本回退

  1. git log 查看提交记录
$ git log
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800
    add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800
   wrote a readme file
  1. Git 中 HEAD 表示当前版本,上一个版本就是 HEAD^ ,依次类推,回退命令如下:
$ git reset --hard HEAD^
HEAD is now at eaadf4e wrote a readme file

# 撤销回退

  1. 如果不知道回退版本的 commit id ,可用 git reflog 查看
$ git reflog
eaadf4e HEAD@{1}: reset: moving to HEAD^
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
  1. 回退命令
$ git reset --hard e475a
HEAD is now at 83b0afe append GPL

e475a 对应上面的回退的版本的 commit id 前几位,git 会自动去匹配

# 工作区和暂存区

https://www.liaoxuefeng.com/wiki/896043488029600/897271968352576

# 撤销修改

  1. 修改后若未 git add ,查看 git status
$ git status
On branch master
Your branch is behind 'origin/master' by 3 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   readme.md
no changes added to commit (use "git add" and/or "git commit -a")

提示中已说明可以通过 git restore <file> 放弃工作区的修改

  1. 如果已经进行过 git add ,那么需要多一步撤销暂存区的修改:
$ git restore --staged readme.md
$ git restore readme.md

# 删除文件

$ rm test.txt
$ git rm test.txt
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt

# 远程仓库

# 绑定 github 账号

  1. 鼠标右键或者菜单搜索打开 Git Bash (鼠标右键为 Git Bash Here 在此路径打开,不影响以下操作)
    设置 user.nameuser.email 的配置信息,分别输入后回车:
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub注册邮箱"
  1. 绑定后生成 ssh 密钥 文件:
ssh-keygen -t rsa -C "你的GitHub注册邮箱"

默认不需要设置密码
生成 ssh 文件后, git 会直接给出 .ssh 文件夹所在路径, WIN10 一般在 C:\Users\用户名\.ssh

  1. 打开 .ssh 文件夹找到 id_rsa.pub ,复制里面的全部内容

  2. 新建 ssh key
    打开 GitHub ,点击右上角个人头像 --> Setting --> SSH and GPG keys --> New SSH key
    title 任意填写,将你复制的内容粘贴至 Key 中,点击 add SSH Key

  3. Git Bash 中输入 ssh git@github.com 检测公钥设置是否成功
    如若出现 Hi 你的用户名!You've successfully authenticated…… 的说明即为成功

# 添加远程仓库

  1. 登陆 GitHub ,通过 Create a new repo 创建一个新仓库 learngit

  2. 在本地的 learngit 仓库下运行命令:

注意修改命令中的 your_github_account 为自己的 github账户

$ git remote add origin git@github.com:your_github_account/learngit.git

远程库的名字就是 origin ,这是 Git 默认的叫法,也可以改成别的

  1. 推送本地内容
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

由于远程库是空的,我们第一次推送 master 分支时,加上了 -u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。

# 删除远程仓库

解除本地仓库与远程仓库的关联

$ git remote remove
usage: git remote remove <name>

# 查看远程仓库

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:moehz/learngit.git
  Push  URL: git@github.com:moehz/learngit.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

# 从远程库克隆

  1. 先新建一个仓库 gitskills , 新建时勾选 勾选Initialize this repository with a README ,这样 GitHub 会自动为我们创建一个 README.md 文件。

  2. 克隆远程仓库

注意修改命令中的 your_github_account 为自己的 github账户

$ git clone git@github.com:your_github_account/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

# 分支管理

不做赘述,参考
https://www.liaoxuefeng.com/wiki/896043488029600/896954848507552

# 标签管理

不做赘述,参考
https://www.liaoxuefeng.com/wiki/896043488029600/900788941487552

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

木 白 微信支付

微信支付

木 白 支付宝

支付宝

木 白 贝宝

贝宝