1.git的四个工作区 git有4个工作区,就是写代码的地方,本地仓库,本地仓库里面包含一个暂存区,远程仓库,假如工作区有一个main.c会先传到暂存区,然后传到本地仓库,形成一个版本,如果又对main.c修改了,又提交一个版本,从工作区到暂存区到本地仓库,就会又形成一个版本,所以在本地仓库会形成多个版本,最后再把各个版本传到远程仓库中
①Workspace: 工作区,就是你平时存放项目代码的地方 ②Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息 ③Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本 ④Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据 交换  2.git工作的一般流程 ①在工作目录中添加,修改文件 ②将需要进行版本管理的文件放入暂存区 ③将暂存区的文件提交到git仓库
3.文件的四种状态 ①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
4.git基本命令
创建本地仓库
①创建一个目录  ②使用git init 命令将其变为一个可以通过git管理的仓库  ③使用git add filename 添加文件到暂存区  ④使用git status 查看仓库状态  ⑤使用 git commit -m “版本描述信息” 提交版本到仓库  ⑥使用git log查看提交的历史记录  ⑦使用git reflog 查看对仓库的操作日志  ⑧使用git diff HEAD 比较当前内容与最后一次提交的版本的差异,如下在main.c中添加了一行内容,显示添加的一行前面有‘+’号标识。如果内容相同则该命令不显示输出结果。HEAD也可以省略默认就是与最近一次比较  ⑨使用git checkout filename 放弃对工作区代码的修改  ⑩使用git reset HEAD filename 从暂存区撤销  ⑩①使用git rm filename 删除一个文件,此时提交到暂存区,需要commit后才在版本库中删除  ⑩②使用git reset --hard HEAD^ 回退版本  5.git分支的操作命令
在进行多个并行作业时,通常会用到分支
①查看分支: git branch  ②创建分支: git branch 分支名  ③切换分支: git checkout 分支名  ④创建并切换到该分支: git checkout -b 分支名  ⑤删除分支,不能删除当前所处分支,切换到其它分支再删除: git branch -d 分支名  ⑥合并某个分支到当前分支: git merge 分支名 ,合并时可能产生冲突,需要解决冲突。有时需要禁止快速合并,可执行:git merge --no-ff -m ‘描述’ 分支名  ⑦历史记录一行显示 : git log --pretty=oneline  ⑧以图表形式显示分支:git log --graph  ⑨保护现场 git stash,当前工作区有代码修改了,是不能切换到其他分支,可以先保存现场,再切换  ⑩列出所有保存的现场信息 git stash list ⑩①取出某次的现场信息,继续工作 :git stash pop “stash@{1}” ,默认是最近一次,如果有多个现场,也可以加上编号"stash@{1}"指定获取某一个。不同分支的现场,应该回到对应分支再获取,否则会自动合并现场到当前分支的工作区  6.远程仓库操作
①1. 生成通信密钥:ssh-keygen -t rsa -C “su@126.com” ,生成的公钥在/home/stu/.ssh/下,如下图  ②测试与github或者gitee(码云)有没有连通:测试github 的命令 :ssh -T git@github.com  测试gitee 也就是码云的命令 : ③克隆项目:git clone 项目地址 ④提交分支到远程仓库:git push origin 分支名 ⑤提交分支到远程仓库,并跟踪分支 :git push -u origin 分支名 ⑥拉取远程服务器上的分支更新到本地 :git pull origin 分支名
|