以下笔记总结与廖雪峰的课程,感谢大佬,传送门:www.liaoxuefeng.com
集中式 PK 分布式
- 集中式版本库存放于中央服务器,分布式则每个人的电脑上都有完整的版本库
- 分布式安全性更高,因为参与者都有完整的版本库,任何一个坏了都可以从别人那里复制
- 集中式要求参与者必须联网,网速慢的时候很捉急,分布式则不需要
- 分布式有个类似中央服务器的电脑,但仅仅是用来交换大家的修改
如何安装git?
- 用
git
检查系统是否安装 - 在Mac OS X上安装Git:安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/
- 安装完成后,需输入如下命令配置账号:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
- 注意,加了--global就意味着你电脑上的所有项目都是用这个账户
创建版本库repository
- 创建版本库
$ mkdir 文件名$ cd 文件名$ pwd //查看工作区复制代码
- 通过
git init
初始化这个版本库,将这个文件目录变成可以管理的仓库
提交文件到仓库
如果在本地工作区建了一个文件,比如通过vim 文件名
建一个文件,如何提交到本地仓库呢?
git add .或者文件名
.表示提交全部,文件名则只提交指定的git commit -m 日志
如何掌握仓库状态?
git status
命令可以实时显示仓库状态,比如:
$ git statusOn branch masterChanges not staged for commit: (use "git add..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: readme.txtno changes added to commit (use "git add" and/or "git commit -a")复制代码
上面的结果告诉我们readme.txt被修改过了,但还没有准备提交的修改。
git diff 文件名
命令可查看具体修改了什么
$ git diff readme.txt diff --git a/readme.txt b/readme.txtindex 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.复制代码
从上面的命令输出看到,我们在第一行添加了一个distributed单词。
再使用git add
和git commit -m
后,使用git status
即可查看提交后的仓库状态,如果所有修改的文件都被提交了,则可看见下方状态:
$ git statusOn branch masternothing to commit, working tree clean复制代码
如何回顾自己提交过的信息?查看每次提交的内容?
使用git log
命令可打印从最近到最远的提交日志,如果嫌提交信息太庞杂,可加上--pretty=oneline
参数,日志则会以行的形式展示:
$ git log --pretty=oneline1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPLe475afc93c209a690c39c13a46716e8fa000c366 add distributedeaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file复制代码
//最开始的一串数字是版本号
如何把某个文件退回历史版本?
- 使用
git reset
命令让文件回退版本 - 使用参数
--hard HEAD^
回退到上一个版本 HEAD
后面有几个^
代表回退几个版本- 也可以用
HEAD~数字
指定回退到具体版本
回退到历史版本后怎么再回来?
使用git reset --hard 版本号
即可回到具体版本,但是,执行回退时的窗口一定不能关闭,否则就找不到未来的版本号了。
到了某个版本,如何查看版本内容?cat 指定文件
即可查看该文件内容。
万一手贱关闭了窗口或者电脑咋整? git reflog
拯救你
!!!!关于工作区--暂存区--版本库--add--commit:git diff 是只比较比较工作区和暂存区(最后一次add)的区别,git diff --cached 是只比较暂存区和版本库的区别,git diff HEAD -- filename 是只比较工作区和版本库(最后一次commit)的区别。
如何撤销修改?
- 情况一:只在工作区修改了,并未add及commit,可用
git checkout -- filename
指令撤销 - 情况二:在工作区修改了,并add到了暂存区,可用
git reset HEAD <file>
把暂存区的修改撤销掉,但是此时工作区仍然是修改了的,再使用情况一的方法即可完全撤销修改。 - 既add又commit了,那就参考上面退回历史版本
如何删除文件?
当你要删除文件的时候,可以采用命令:rm test.txt
这个时候(也就是说这个时候只执行了rm test.txt)有两种情况
- 第一种情况:的确要把test.txt删掉,那么可以执行
git rm test.txt git commit -m "remove test.txt" 然后文件就被删掉了复制代码
- 第二种情况:删错文件了,不应该删test.txt,注意这时只执行了rm test.txt,还没 有提交,所以可以执行git checkout test.txt将文件恢复。
并不是说执行完git commit -m "remove test.txt"后还能用checkout恢复,commit之后版本库里的文件也没了,自然没办法用checkout恢复,而是要用其他的办法。