Git
作为一个工具软件来讲,一般都会有默认的配置文件来保存基础的配置信息,Git软件的配置文件位置为:Git****安装路径:/etc/gitconfig**
指令获取软件的配置信息
git config -l
配置用户名和邮箱
git config --global user.name test
git config --global user.email test@atguigu.com
执行指定的指令,创建文件版本库
git init
版本库创建成功后,会在目录中创建.git目录,用于管理当前版本库
查看版本库状态
git status
新建a.txt且未提交到版本库中,此时a.txt显示为未追踪untracked文件
向git添加文件
git add file
这里file须带扩展名
将a.txt提交后在查看git status, 此时a.txt显示已追踪,状态为cached file(暂存状态)
将已提交文件纳入到版本库中
git commit -m "提交信息" [文件名]
提交后,Git会对当前的操作进行Hash计算,通过计算后的值将数据保存下来,保存的位置为版本库.git文件目录的objects中
-m 表示提交时的信息(message),是必须输入的。用于描述不同版本之间的差别信息
如果未指定文件名,则commit的是暂存区的文件(也就是之前add的文件)
-i
:这是git commit
命令的一个选项,表示交互式提交。使用-i
选项可以启动交互式提交模式,让您逐个确认要提交的文件变化。
将之前a.txt提交后再查看git status
通过指令查看当前提交
git show
修改版本库文件查看变化
修改此前的a.txt,此时查看git staus,发现a.txt 文件处于modified状态
可以把这一次的修改提交到版本库中
融合add和commit(只对被Git跟踪并且修改过的文件有效)
文件commit的顺序应该先add后commit(每次commit都应该遵循),
但可以融合add和commit(只对被Git跟踪并且修改过的文件有效)
git commit -a -m "提交信息"
查看版本库文件历史日志
git log
--graph
命令用于显示提交历史的图形化展示,可以清晰地展示分支、合并等信息
日志简化
git log --oneline
这样生成的哈希值是完整的前6位
删除文件
把本地目录的a.txt删除,查看git status
此时Git软件会识别出来,版本库中有一份文件和当前用于临时操作文件的暂存区内的文件状态不一致:版本库中文件还在,但是操作区内的文件已经没有了。
所以软件提供了两个选择:一个是将版本库中的文件也进行(提交)删除操作。另外一个就是从版本库中恢复文件。
从版本库中恢复已删除文件
git restore 文件名
此时文件已正确恢复到本地目录。
将版本库中的文件(本地目录已删除)也进行删除操作
先删除本地目录的a.txt文件
再次commit文件(本地目录已删除)视为从版本库删除文件
git commit -a -m "deleted file"
此时查看日志文件
恢复历史文件
上一步从版本库删除的是最后一个版本,但是之前版本的文件其实还是存在的。所以如果我们 能将文件恢复到某一个版本,那么那个版本的文件就依然存在。
表示你要将当前分支的指针移动到该提交。这可以用来撤销之前的提交或者回退到特定的提交状态。
git reset --hard hash值
git reset
git reset --soft <commit>:这个命令会将 HEAD 指针移动到指定的提交,但是保留暂存区和工作目录的修改。这意味着之后可以重新提交这些修改。
git reset --mixed <commit>:这个命令会将 HEAD 指针移动到指定的提交,并重置暂存区,但是保留工作目录的修改。这样,之前暂存的修改会变成未暂存的修改。
git reset --hard <commit>:这个命令会将 HEAD 指针移动到指定的提交,重置暂存区和工作目录,丢弃所有未提交的修改。这样会使工作目录完全匹配指定提交的状态。
创建分支
默认情况下,Git软件就存在分支的概念,而且就是一个分支,称之为master分支,也称之为主干分支。如果仅仅是一个分支,在某些情况并不能满足实际的需求,那么就需要创建多个不同的分支。
新创建的分支中会包含当前所在分支中的所有文件和文件夹。
git branch 分支名
查看分支
git branch -v
切换分支
git checkout 分支名称
此时新创建b.txt文件,add并且commit
但把分支切换成master,因为对应版本信息不一样,所以 b.txt文件不存在
创建分支并切换到该分支
git checkout -b <branch_name>
删除分支
# git branch -d 分支名称
虽然分支删除了,分支修改的文件仍然存在于 Git 数据库中,你可以通过其他分支或提交 ID 访问到这些文件
合并分支
在master创建master.txt并commit,创建并切换到b2分支,在b2分支创建branch.txt并commit
切换回master,此时master只有master.txt
合并
# git merge 要合并的分支名称
git merge new_branch
此时master有branch.txt了
合并冲突分支
master清空所有内容,新建a.txt, 新建分支c1,c2。 分别将a.txt内容修改成c1,c2
先将master的a.txt(空)和c1合并,成功合并
将master和c2合并
手动对master的a.txt进行修正为c1c2, 重新提交后查看日志