穿越过去和未来!
                1 前言
Git一款强大且应用广泛的分布式版本控制软件。
本手册参考的是莫烦教学和Git-Tutrial。笔者边学习边做笔记加深印象,也方便以后查阅。
2 基本操作
                - 查看提交(
commit)记录:- 详细:
git log。 - 简洁:
git log --oneline。 
 - 详细:
 - 查看文件状态:
- 详细:
git status。 - 简洁:
git status -s。 
 - 详细:
 - 添加修改:
- 对所有文件:
add .。 - 对单个文件:
add file_name。 
 - 对所有文件:
 - 提交修改:
git commit -m "comments"。 - 添加并提交修改:
git commit -am "comments"。(仅对已被添加到管理库的文件有效) - 查看文件的不同:
$ git diff:查看这次还没add(unstaged)的修改部分。$ git diff --cached:如果已经add了这次修改,文件变成了可提交状态(staged),我们可以在diff中添加参数--cached来查看修改。$ git diff head:查看add过(staged)和没add(unstaged)的修改。
 - 将本地记录发布:
git push。 
3 回到从前
3.1 针对整个版本库
- 把这次的修改加入添加到上次的
commit中,而不产生新的commit(但版本号会改变):- 不修改
comment:git commit --amend -no-edit。 - 修改
comment:git commit --amend -m "commets"。 
 - 不修改
 - 把经过
add后(staged)文件回退到add之前(modified):git reset file_name。 - 版本跳跃:
- 当前版本的第前n个版本:
- 每个上角标代表回退一个版本:
git reset --hard HEAD^。 - 回退n个版本:
git reset --hard HEAD~n。(当n取0时可回退到当前版本最初的unmodified状态) 
 - 每个上角标代表回退一个版本:
 - 指定版本号的版本:
git reset --hard HEAD 3f33f33。- 通过
git log获取当前版本及之前的版本号。 - 通过
git reflog获取HEAD的指向记录,包含了所有版本的版本号。 
 - 通过
 - 指定
HEAD记录的版本:git reset --hard HEAD@{1}。(需先在git reflog中找到所求版本的HEAD记录) 
 - 当前版本的第前n个版本:
 
3.2 针对单个文件
回退单个文件到指定版本号:git checkout 3f33f33 -- file。
4 分支管理
- 新建分支:
- 新建不切换到该分支:
git branch branch_name。 - 新建且切换到该分支:
git checkout -b branch_name。 
 - 新建不切换到该分支:
 - 删除指定分支:
git branch -d branch_name - 查看所有分支:
git branch。(*号表示当前所处分支) - 切换分支:
git checkout branch_name。(HEAD指向该分支) - 合并分支:
merge:- fast-forward:
git merge branch_name。 - no-fast-forward:
git merge --no-ff "comments" branch_name。 
- fast-forward:
 rebase:git rebase branch_name。
 merge冲突:通过人工修改来解决冲突,之后可使用git commit -am "comments"添加并提交。rebase冲突:通过人工修改来解决冲突,之后可使用git add file_name和git rebase --continue添加并提交。- 临时修改:
- 暂存修改:
git stash。 - 其他任务:一般新建分支来完成其他任务,然后合并。
 - 恢复暂存:
- 查看缓存:
git stash list。 - 恢复缓存:
git stash pop。 
 - 查看缓存:
 
 - 暂存修改: