clone 或者 init 工程后, 工程目录下都有一个. Git 的版本库. 他是隐藏的, ls -ah 才能查看
stage 是暂存区
Git.PNG
0.Git add 添加修改的文件
Git add file 添加文件 file 到暂存区
Git add . 添加全部改动的文件到暂存区
1.Git commit 提交文件到本地分支
Git commit -m '提交说明'
2.Git status 查看工作区的文件状态是否被改动
3.Git diff 查看具体的改动内容
Git diff HEAD - readme.txt
查看工作区文件和版本库最新版本的区别
4.Git log 查看从近到远的提交日志
Git log -pretty=oneline 美化显示日志
- eg:
- $ Git log --pretty=oneline
- 3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
- ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
- cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
你看到的一大串类似 3628164...882e1e0 的是 commit id(版本号), 和 SVN 不一样, Git 的 commit id 不是 1,2,3...... 递增的数字, 而是一个 SHA1 计算出来的一个非常大的数字, 用十六进制表示, 而且你看到的 commit id 和我的肯定不一样, 以你自己的为准.
5.Git reset 回退
Git reset --hard HEAD^ 回退到上一个版本
Git reset -hard commit id 回退到某一个版本 commit id 只要写前几个字符, Git 会自动查找
eg: Git reset -hard ea34578
Git 必须知道当前版本是哪个版本, 在 Git 中, 用 HEAD 表示当前版本, 也就是最新的提交 3628164...882e1e0(注意我的提交 ID 和你的肯定不一样), 上一个版本就是 HEAD^, 上上一个版本就是 HEAD^^, 当然往上 100 个版本写 100 个 ^ 比较容易数不过来, 所以写成 HEAD~100.
6.Git reflog 记录你的每一次命令
Git 提供的后悔药, 时光穿梭机
- ea34578 HEAD@{
- 0
- }: reset: moving to HEAD^
- 3628164 HEAD@{
- 1
- }: commit: append GPL
- ea34578 HEAD@{
- 2
- }: commit: add distributed
- cb926e7 HEAD@{
- 3
- }: commit (initial): wrote a readme file
有了这个我们就能拿到历史的 commit id, 来回穿梭
7.Git checkout --filename 丢弃工作区的修改
这里省略 -- 同样可以达到丢弃工作区修改的目的但是会带来问题
-- double Dash, 是 bash 的内置命令, 用来隔离 "树" 和 "命令", 加了 -- 就认为后面的是文件路径而不是命令选项
Git checkout 还有一个作用就是切换分支, 假设有个该死的文件叫 master, 你做修改后又想丢弃, 你使用了 Git checkout master(这里省略了 --), 这个时候你就悲催了, Git 执行的是切换分支而不是丢弃修改
所以丢弃文件建议不要省略 -- 这是个好习惯
8.Git rm 删除文件
Git rm filename 然后 commit 到分支, 直接在文件管理器删除不提交是无效的哦! 除非 add 添加进暂存区
如果是误删直接 checkout 就行了
9. 推拉代码 push pull
Git push 将本地分支代码推送到远端分支
Git pull 将远端分支代码拉倒本地
来源: http://www.jianshu.com/p/4f8a5190673a