Git基本理论
Git本地有三个工作区域:工作目录(Working Directory),暂存区(Stage/Index),资源库(Repository或Git Directory),还有远程的git仓库(Remove Directory)
Workspace:工作区,就是平时存放项目代码的地方
Index/Stage:暂存区,用于临时存放你的改动,事实上它是一个文件,保存即将提交的列表信息
local Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本
Remote Repository:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
文件操作
文件的四种状态
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 status [文件名]
#查看所有文件状态
git status
#添加所有文件到暂存区
git add .
#提交暂存区中的内容到本地仓库 -m:提交的信息
git commit -m "信息"
忽略文件
在主目录下建立“.gitignore”文件
文件规则
- 所有空行或者以
#开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以(
/)开头防止递归。 - 匹配模式可以以(
/)结尾指定目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(
!)取反。
命令操作
git rm
工作目录中删除指定的文件
如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f
git mv
移动指定文件 改名 git mv file_from file_to
撤消操作
commit --amend 重新提交之前commit的文件
git reset HEAD … 撤销提交到暂存区的文件
撤销commit
git reset --soft HEAD^ ^为撤销上次提交
git reset --soft HEAD~2 为撤销上两次提交
--mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作(默认)
--soft 不删除工作空间改动代码,撤销commit,不撤销git add
--hard 删除工作空间改动代码,撤销commit,撤销git add
分支管理
git branch testing 分支创建
git checkout testing 切换分支
git push origin 分支名 --force 强制将分支推送到分支