毋庸置疑,Git 是目前最流行、最好用的版本控制系统,在它的基础上,催生出了 GitHub 和 GitLab 两个当前最流行的代码托管平台。

配置
1 | git config —-global user.name ‘your_name’ |
创建 Git Repo
把已有代码纳入到 git 管理.
git init1
2
3
4
5
6
7
8
9ls -al
git init
git add .
git add -u 更新内容替换暂存区
git rm filename
git status
git commit -m ‘message’
git log新建项目直接用 git 管理.
git init your_project
git 命令

上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。
- git add files 把当前文件放入暂存区域。
- git commit 给暂存区域生成快照并提交。
- git reset – files 用来撤销最后一次 git add files,你也可以用 git reset 撤销所有暂存区域文件。
- git checkout – files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。
你可以用git reset -p,git checkout -p, orgit add -p进入交互模式。

- git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行。git commit.
- git commit files 进行一次包含最后一次提交加上工作目录中文件快照的提交。并且文件被添加到暂存区域。
- git checkout HEAD – files 回滚到复制最后一次提交。
git init
git add/rm
1 |
|
git status
git commit


1 | # 暂存区内容做提交 |
git mv
文件重命名
1 | git mv readme readme.md |
git log
- git log –all 查看所有分支的历史
- git log –all –graph 查看图形化的 log 地址
- git log –oneline 查看单行的简洁历史。
- git log –oneline -n4 查看最近的四条简洁历史。
- git log –oneline –all -n4 –graph 查看所有分支最近 4 条单行的图形化历史。
- git help –web log 跳转到 git log 的帮助文档网页
Notes: enter q to exit.
git config --system --list
1 | alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset' |
1 | git lg |
git 自带了图形界面工具gitk. 在 repo folder 下面运行gitk。效果如下:
1 | gitk |
git checkout



1 |
|
git branch
1 | # 查看所有分支 |
git cat-file
1 | find .git/objects -type f |
git rebase
1 | # change old commit message |
git diff

1 | # 比较工作区和暂存区区别。 |
git reset

reset 命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。
- 如果不给选项,那么当前分支指向到那个提交。
- 如果用–hard 选项,那么工作目录也更新,
- 如果用–soft 选项,那么都不变。

如果没有给出提交点的版本号,那么默认用 HEAD。这样,分支指向不变,但是索引会回滚到最后一次提交,如果用–hard 选项,工作目录也同样。
1 | 取消暂存区所有内容,跟HEAD保持一致 |

如果给了文件名(或者 -p 选项), 那么工作效果和带文件名的 checkout 差不多,除了索引被更新。
git cherry-pick

cherry-pick 命令”复制”一个提交节点并在当前分支做一次完全一样的新提交。