git核心理论
git本地有三个工作区域:工作目录(working directory)、暂存区(stage/index)、资源库(repository)或git directory。如果加上远程git 仓库(remote directory)就分为四个工作区域,文件再四个区域的转换关系如下:
remote directory
git push git pull
history
git commit git reset
stage
git add files git checkout
working directory
workspace:工作区就是平时存放项目代码的地方
index/state:暂存区,用于临时存放你的改动,事实上只是一个文件,保存即将提交到文件列表信息。
repository:仓库区(本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本。
remote :远程仓库,托管代码服务器,可以简单的认为是你项目组中一台电脑用于远程数据交换。
本地的三个区域确切的说应该是git仓库中HEAD指向的版本。
工作流程:
- 再工作目录中添加,修改文件
- 将需要进行版本管理的文件放入暂存区域;git add .
- 将暂存区的文件提交到git 仓库。git commit
因此,git管理文件有三种状态:已修改(modify),已暂存(staged),已提交(committed)
git 文件操作:
版本控制就是对文件进行版本控制,要对文件进行修改提交等操作,首先要知道文件当前的状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没有提交上。
- 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。
git config --list //查看配置
git init //初始化仓库
git add . //添加暂存区
git commit -m //提交暂存区的文件到本地仓库 -m 提交消息。
文件忽略:
git 分支
git branch -r //列出所有分支
git branch [branch-name] //新建一个分支,但仍然停留再当前分支
git checkout -b [brach] upstream/dev //新建一个和远程分支平行的branch并切换到该分支。
git merge [branch] //合并指定分支到当前分支
git branch -d branch-name //删除分支
git push origin --delete branch-name //删除远程分支
git log
git log 查看提交日志,多次提交分别做了啥事情
git log --oneline //简化log到一行
git log -p //详细
git checkout 把握git状态 git status reset
git chechout -- filename 取消当前的改变,
如果加入到索引区,如果想返回之前状态。
git reset HEAD <file> ,退出索引区。
再 git checkout -- filename 就取消修改。
git diff --cached 将加入到索引区的文件进行diff比较。