一、四个工作区域
Workspace: 工作区,就是你平时存放项目代码的地方
Index/Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository: 本地仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。
其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
备注:工作区时写好的代码经过“git add .” 后,即会进入暂存区。
二、工作流程
1、工作区:修改文件、新增文件处于这个区。 2、暂存区:执行git add后,将工作区的内容保存到暂存区 3、本地仓库区:执行git commit后,将暂存区的内容保存到仓库区 4、远程仓库:执行git push后,将本地仓库区的内容保存到服务器
三、文件的四种状态
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处,
如果它被修改, 而变为Modified.
如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过,
返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified
下面的图解释了这四种状态的转变: 新建文件—>Untracked
使用add命令将新建的文件加入到暂存区—>Staged
使用commit命令将暂存区的文件提交到本地仓库—>Unmodified
如果对Unmodified状态的文件进行修改—> modified
如果对Unmodified状态的文件进行remove操作—>Untracked
四、常用git命令
一、基本环境
1.1、查看git版本
git --version
1.2、查看仓库的远端地址
git remote -v
1.3、查看所有文件状态
git status
二、checkout
2.1、检出本地已经存在的分支
git checkout [本地已存在的分支名]
例如:git checkout release
2.2、基于指定分支(可以是远端分支)创建本地新分支,并立即切换过去
git checkout -b [新分支名] [已存在的分支名]
例如:git checkout -b master2 remotes/mega/master
2.3、清除本地没有git add的修改
git checkout .
三、branch
3.1、显示本地所有分支名称
git branch
3.2、显示本地和远端所有分支名称
git branch -a
3.3、显示本地和远端所有分支名称,及各分支的最后提交
git branch -av
3.4、基于本地当前节点,创建本地新分支
git branch [本地新分支名]
3.5、删除本地分支
git branch -d [本地分支名]
3.6、强制删除本地分支
git branch -D [本地分支名]
四、pull
4.1、变基式拉取
git pull --rebase
五、reset
5.1、可以指定退回某一次提交的版本,【工作区的修改、暂存区的内容、及由 reset 所导致的新的文件差异,都会被放进工作区】
git reset [提交id]
git reset --mixed [提交id]
5.2、可以指定退回某一次提交的版本,【保留工作区和暂存区,由 reset 所导致的新的文件差异会被放进暂存区】
git reset --soft [提交id]
5.3、可以指定退回某一次提交的版本,【同时清空工作区和暂存区】
git reset --hard [提交id]
六、stash
6.1、将本地未提交、但已add的修改 临时保存起来
git stash save [暂存本地的名称]
6.2、查看本地的临时保存记录
git stash list
6.3、将本地的临时保存都提出来
git stash pop
七、rm
7.1、删除暂存区或本地仓库中的文件,但不删除工作区里的文件(即add后的内容可以用下面的命令删除,但若重新add仍然会进暂存区)
git rm --cached [文件路径]
7.2、删除暂存区或本地仓库中的文件夹,及其内部的所有内容,但不删除工作区
git rm -r --cached [文件夹路径]
|