名词解释
1.工作区(Working Directory) : 就是你在电脑里能看到的目录,比如我的GitHub文件夹目录
2.版本库(Repository): 在工作区有一个隐藏目录.git,这个就是Git的版本库
3.暂存区: 在版本库中存在一个成为Stage的暂存区,它是专门存储修改和添加的区域。一旦提交后,如果你又没有对工作区做任何修改,那么暂存区就是干净的
管理修改(需要案例证明)
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
Git不会提交没有放到暂存区的修改
这里我画了一个图方便大家理解;

git流程.png

bg2015120901.png
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

git_three_rigon.png
工作区(working diretory) 用于修改文件
缓存区(stage) 是用来暂时存放工作区中修改的内容
提交历史(commit history) 提交代码的历史记录
1.安装:GitLens
2.快捷键打开终端:ctrl+`
3.cd 项目文件下;如cd gitlab/learngit
4.命令行:创建版本库,版本提交,版本回退,管理修改,撤销修改,删除文件
0、创建版本库(选择一个合适的地方,创建一个空目录gitlab/learngit。进入gitlab/learngit文件夹中)
$ cd gitlab/learngit
$ git init // 通过git init命令把这个目录变成Git可以管理的仓库
或者直接拉取克隆版本库项目
$ git clone 链接,类似[email protected]:yourname/test.git的
1、版本提交
git add 文件名或文件夹名称或者.代表所有
git commit -m "这次的提交描述备注"
git status 查看提交修改的文件
git branch 查看当前分支
git branch 创建分支
git checkout 切换分支
git merge (不是当前的分支)合并某分支到当前分支
git branch -d 删除分支
$ git push origin master 上传本地指定分支到远程仓库
$ git pull [branch] 取回远程仓库的变化,并与本地分支合并
2、版本回退
回退到上一个版本(可以多次使用)
$ git reset --hard HEAD^
回退到上两个版本
$ git reset --hard HEAD^^
git log查看提交历史,然后git reset 回退到指定版本 。这也是每次commit -m" "中写内容的重要性,说不定什么时候就拯救了你写了好几天的代码。hard后面跟的版本号没必要全部写出来,git会自动去补全匹配。
$ git log
$ git reset --hard
3、管理修改
我们来一个操作,第一次修改 -> git add -> 第二次修改 -> git commit
然后git status查看状态,咦,怎么第二次的修改没有被提交?
Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别。
那怎么提交第二次修改呢?你可以继续git add再git commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了:
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
4、撤销修改
$ git checkout -- readme.txt
令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。
5、删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
**bug分支**
情景:undong.txt 工作还没做完(暂存区有很多add文件,这时还没有commit),这时接收到一个必须在两小时内完成的bug文件(和之前的工作无关)
1 这时就要保存工作现场 git stash
2 添加新分支 git branch fixbug
3 切换到这个分支 git checkout fixbug
4 git add bug文件
5 提交 git commit
6 删除该分支(一般情况应该合并)
查看分支现场 git
7 修复之前的分支 git stash pop