目录
1.初识Git
1.基础知识
2.centos中下载
2.基本操作
1.创建本地仓库
2.配置本地仓库
3.版本库、工作区、暂存区
4.添加文件
5.add和commit对git文件的作用
6.修改文件
7.版本回退
8.撤销修改
9.删除文件
3.分支操作
1.HEAD与分支
2.创建分支
3.删除分支
4.合并冲突
5.分支管理
6.分支决策
Git:是一种版本控制器,用于记录每一次修改以及版本迭代的一个管理系统
作用:可以控制电脑上所有格式的文档,对于开发人员而言最重要的就是可以管理项目中的源代码文档
sudo yum install git -y
想要Git进行管理,必须将文件放在Git仓库中进行管理
git init:在当前文件中创建一个Git仓库
此时我们会发现文件中有一个隐藏文件.git,其用于追踪管理文件
1.配置用户名称:git config user.name "(这里写用户名字)"
2.配置用户email地址:git config user.email"(这里写用户地址)"
3.查看当前所有的配置属性:git config -l
4.重置配置:git config --unset XXX(属性)
在当前主机下,本地仓库可以开辟多个
5.所有本地仓库的配置项:本地仓库git config --global XXX(属性) YYY(配置信息)
6.--global创建的属性,不能通过普通的重置,得使用git config --global --unset XXX(属性)
1.如果直接新建一个文档在本地仓库下,那么此时git并没有对该文档进行管理
2.真正管理文件的仓库其实是.git这个隐藏文件。此外不能对.git进行手动修改
3..git为版本库,也叫做仓库
4.生成的这个文档其实在工作区
5.index为暂存区,也是索引。存储的是修改对象的索引
6.objects:对象库,存储git对象。修改的工作区内容会写入到对象库的一个git对象。用于维护所有文件的版本
7.master:存储修改对象的索引
add:将工作区的修改文件添加到暂存区。这里的修改文件指的是:增删改的文件
commit:将index的文件存入到master中,此刻才能说文件被放入了版本库中进行管理
git add . :工作区所有文件添加到暂存区
git add (指定文件) :工作区指定文件添加到暂存区
git commit -m "(本次添加的细节)"
git log:查看由近到远的提交记录细节 [git log --pretty=oneline]
1.add之后的内容都在index中
2.cat .git/HEAD后,我们能查看到HEAD指向的是master
3.master存放的是最新的commit的id
4.objects中存放了很多的对象
5.git cat-file -p commit的id:查看objects中的对象
git status:查看哪些文件进行修改
git diff 文件名:查看文件修改的是情况(-为原版,+为改版)
git reset [--soft | --mixed | --head] [HEAD]:本质是将版本库的版本进行回退
--soft:只回退版本库
--mixed:回退版本库和暂存区
--head:回退所有内容
git reflog:查看每次本地提交命令
1.配合git log --pretty=oneline查看得到commitID,使用git reset [--soft | --mixed | --head] [HEAD]
2.git reset [--soft | --mixed | --head] [HEAD]可以回退,但是需要得到commitID
1.版本回退的速度其实很快
2.其原理其实是因为HEAD指向的master中有commitID,只需要在回退版本时将master的commitID修改即可
3.git reset还可以回退到当前版本,用于撤销修改。默认时--mixed,^表示回退一个版本
撤销有不同的策略:
1.只有工作区修改了
1.手动撤销 --- 不推荐
2.git checkout -- [文件名]
2.工作区和暂存区修改了
1.git reset --head 文件名 HEAD
2.git reset 文件名,就变成了条件1
3.所有区都修改了
git reset --head HEAD
1.push操作可把版本库内容发送给远程仓库
2.想要实现条件3撤销修改操作,需要在commit之后没有进行push操作
3.条件3修改是为了不影响远程仓库
方法1:rm删除文件后,还想要add和commit将文件更新
方法2:git rm 文件,实际该操作包含rm和add两步,最后我们commit即可
HEAD指向的master,master记录最新的commitID。通过对master的结构中的parent能够回溯到之前的版本中去
git branch:查看分支
git branch 创建分支的名称:创建分支
1.HEAD可以指向其他分支,被HEAD指向的分支才是当前工作的分支
2.此时我们会发现,HEAD文件中有一个master和一个新建的分支。并且这个新建分支指向的也是当前的工作分支
git checkout 分支名称:切换分支(HEAD指向新分支)
git merge 分支名称:合并分支
删除分支的条件就是:必须在其他的分支上对非当前分支上进行删除
git branch -d 分支名:删除指定分支,指的是合并后的删除
多条分支对同一个文件进行操作后,使得文件的内容都不一样,那么此时如果进行git merge合并操作,那么就会报错说明当前的内容合并冲突了,需要我们自己手动进行筛选自己想要的内容。
一旦冲突修复完毕,需要重新对文件进行提交。
git log --graph --abbrev-commit:可视化分支结构
git merge合并的通常为Fast forward模式。该模式无法判断是merge进来的文件还是正常提交的文件
git merge --no--ff -m "提交信息" 分支:不使用Fast forward模式
1.master分支:在任何环境下都是稳定的环境,它在项目实现中作为最终出现的结果。其他分支不稳定需要经过公司的一系列测试最终将稳定的代码合并到master中去。其他分支的编写真好符合分组开发的要求。
2.bug分支:master分支稳定也不能百分百得到保证,它也会出现bug。我们不能在master中直接对文件进行修改。当然所有业务开发的文件都可以创建bug分支对文件进行修改为保证可靠性。
git stash:将工作区的内容进行存储,保存到/refs中。
git stash list:查看保存
git stash pop:撤回stash
1.如果其他文件正在开发,master出bug了,那么将其他开发文件git stash保存,此时的文件变回原来的内容。随后创造bug分支,将所有的修改改完合并到master中。最后将其他开发git stash pop,撤回stash继续开发。
2.若想继续将master和其他文件进行合并,不建议直接在master中合并,我们要在其他文件中合并,就算合并有bug也可以慢慢改
未merge的分支的删除操作:
1.首先说明不能使用git branch -d,因为文件被保护无法删除
2.可以使用git branch -D强制删除