Git(Mac OSX下)
一、创建版本库
版本库又名仓库,英文名rspository,可以理解成一个目录,然后这个目录里的所有文件都可以被Git管理起来。
1.创建一个空目录:
$ mkdir learngit
/*进入learngit目录*/
$ cd learngit
/*显示当前目录*/
$ pwd
/Users/work/learngit
注:'$ ...'表示命令,'$ '不用手动输入,没用'$ '标注的都是"结果"
2.通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/work/learngit/.git/
Git就把仓库建好了,还告诉你是一个空的仓库。此时当前目录下会多出一个隐藏的.git目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了,用ls -ah命令就可以看见。
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
0.0懒得详细写了,可以去http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000廖雪峰的网站学习,这边我就记录些常用的命令吧。
添加文件:
$ git add <file>
提交:
$ git commit -m "<descr>"
-m "xxx"用来添加备注信息的(虽然可不加,但强烈建议添加备注,作为一个程序员这是最基础的)
查看历史纪录:
$ git log
可能你就觉得输出信息太多 眼花缭乱,可以加上--pretty=oneline参数:
$ git log --pretty=oneline
那串十六进制表示的就是commit_id
在git中HEAD表示当前版本,HEAD^表示上一个版本,上上一个就是HEAD^^,以此类推,还有一种写法就是HEAD~n,n表示往上n个版本
回退到上一个版本:
$ git reset --hard HEAD^
可能你已经不记得是上哪个版本了,也可以使用这个命令回退版本:
$ git reset --hard <commit_id>
注:<commit_id>不一定要写全,一般写前7位就没问题了
如果你已经回退到<commit_id>的版本了,可又后悔了 并且命令窗口也关闭了!此时git log是找不到之前的commit_id的,怎么办?
$ git reflog查看命令历史,你就又能找到未来那个commit_id了
查看文件内容:
$ cat <file>
查看工作区状态:
$ git status
如果git status告诉你有文件被修改过,用git diff可以查看修改内容:
$ git diff <file>
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
$ git checkout -- <file>
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
$ git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:
$ rm <file>
此时工作区和版本库就不一致了,$ git status命令会立刻告诉你哪些文件被删除了,现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令$ git rm <file>删掉,并且
$ git commit -m "<descr>"
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- <file>
$ git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。