e.txt
index e69de29..013b5bc 100644
— a/readme.txt
+++ b/readme.txt
@@ -0,0 +1,2 @@
+Git is a distributed version control system.
+Git is free software.
\ No newline at end of file
* `git log`
查看版本信息
$ git log
commit 9e0ae1d02df7fb97f1cd87ac788c560c11eb9a05
Author: huangmubin huangmubin@qq.com
Date: Tue Sep 27 14:40:48 2016 +0800
append GPL
commit d6d680248f2363bb0b89bb0efe0231c9050fe950
Author: huangmubin huangmubin@qq.com
Date: Tue Sep 27 14:39:28 2016 +0800
add distributed
commit 7cb70b215334d329a2eaee9be1d67c0581c5800d
Author: huangmubin huangmubin@qq.com
Date: Tue Sep 27 14:28:48 2016 +0800
wrote a readme file
* `git log --pretty=oneline`
简化信息 成 commit id + commit
$ git log –pretty=oneline
9e0ae1d02df7fb97f1cd87ac788c560c11eb9a05 append GPL
d6d680248f2363bb0b89bb0efe0231c9050fe950 add distributed
7cb70b215334d329a2eaee9be1d67c0581c5800d wrote a readme file
* `git log --graph --pretty=oneline --abbrev-commit`
用图表显示
$ git log –graph –pretty=oneline –abbrev-commit
- 55f1da8 merge with no-ff
|\
| * 4264eb0 add
|/ - 0257385 Merge branch ‘name’
|\
| * e6a5fe2 name - | cb9c8c4 mast
- | 07b9c74 test
|/ - 196ccf1 remove
- 441b100 YES
- 0645d41 git3
- a6ffc9a 2
- 0cab1e6 git tracks changed
- a6c4963 understand how stage works
- 9e0ae1d append GPL
- d6d6802 add distributed
- 7cb70b2 wrote a readme file
* `git reflog`
检查自己做过的所有 Git 操作。
输出为
版本id 顺序: 操作: commit
$ git reflog
9e0ae1d HEAD@{0}: reset: moving to 9e0ae1d02df7f
d6d6802 HEAD@{1}: reset: moving to HEAD^
9e0ae1d HEAD@{2}: commit: append GPL
d6d6802 HEAD@{3}: commit: add distributed
7cb70b2 HEAD@{4}: commit (initial): wrote a readme file
# 分支
* `git branch`
查看分支数量
$ git branch
- dev
master
* `git branch <name>` 创建新分支
* `git checkout <name>` 切换到分支
git checkout dev
Switched to branch ‘dev’
* `git checkout -b <name>` 创建新分支并切换
git checkout -b dev
Switched to a new branch ‘dev’
* `git merge <branch>` 把某个分支的内容合并到当前分支
$ git merge dev
Updating 196ccf1..07b9c74
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
* `git merge <branch>` 把某个分支的内容合并到当前分支
$ git merge –no-ff -m “merge with no-ff” dev
Merge made by the ‘recursive’ strategy.
readme.txt | 3 +++
1 file changed, 3 insertions(+)
* `git branch -d <branch>` 删除某个分支
$ git branch -d dev
Deleted branch dev (was 07b9c74).
* `git branch -D <branch>` 强行删除某一个分支
- 查看分支:git branch
- 创建分支:git branch
- 切换分支:git checkout
- 创建+切换分支:git checkout -b
- 合并某分支到当前分支:git merge
- 删除分支:git branch -d
- 强行删除:git branch -D
# Bug 分支
* `git stash`
把当前工作区的所有东西都临时存储起来并返回原始状态。
$ git stash
Saved working directory and index state WIP on master: 55f1da8 merge with no-ff
HEAD is now at 55f1da8 merge with no-ff
* `git stash list`
查看被储存起来的列表
$ git stash list
stash@{0}: WIP on master: 55f1da8 merge with no-ff
* `git stash apply stash@{0}`
恢复某一个保存点,并且不删除它。
* `git stash drop stash@{0}`
删除一个保存点
* `git stach pop stash@{0}`
恢复并删除某个保存点
# 标签
* `git tag` 查看所有标签
* `git tag <tag name>` 新增标签
* `git tag <tag name> <commit id>` 给某个一提交打上标签
* `git show <tag name>` 显示标签信息
* `git tag -a <tag name> -m <tagCommit> <commit id>` 创建带文字说明的标签
* `git tag -d <tag name>` 删除标签
# 远程提交
## SSH Key 秘钥
1. 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C “youremail@example.com”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2. 到远程仓库中设置 id_rsa.pub 文件里的内容。作为 SSH Key
## 关联远程仓库
$ git remote add origin git@github.com:michaelliao/learngit.git
## 推送 master 分支的所有内容
/// 第一次
git push -u origin master
/// 之后
git push origin master
michaelliao 是仓库名称
## 克隆一个仓库
$ git clone git@github.com:michaelliao/gitskills.git
“`
参考资料
廖雪峰: 史上最浅显易懂的 Git 教程 (当真是业界良心……)