git常用命令及git分支
git常用命令
设置用户签名
bash
//设置用户签名
git config --global user.name <用户名>
git config --global user.email <邮箱>
初始化本地库
bash
//初始化本地库 文件目录是:/g/git-space/git-demo
git init
![](https://img-blog.csdnimg.cn/direct/025bd60bd19e4430baf9adbe6ea062e9.png)
查看本地库状态
bash
//查看本地库状态
git status
![](https://img-blog.csdnimg.cn/direct/08fd2d53902a4294b9d392dfc06e4ea8.png)
这里在工作区创建了一个xx.txt的文件,查看状态时文件名变红,说明文件未添加到暂存区
将文件添加到暂存区
bash
//将文件添加到暂存区
git add <file>
![](https://img-blog.csdnimg.cn/direct/9471bb1f7f2747eb8633d472bdbe4f6a.png)
从暂存区删除文件(但是工作区不会删除):
bash
git rm --cached <files>
提交到本地库
bash
//提交到本地库
git commit -m "日志信息" <files>
![](https://img-blog.csdnimg.cn/direct/23254d5f3f4e445ea9dee75f5749c2e7.png)
查看历史记录
bash
//查看历史记录
1.git reflog
2.git log
![](https://img-blog.csdnimg.cn/direct/8a9899d4ecb5463db64936fa19d4f2cc.png)
版本穿梭
git reset --hard <版本号(精简)>
git分支
什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
分支的好处
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支的操作
查看分支
git branch -v
![](https://i-blog.csdnimg.cn/direct/89e365d2c13143ffa79e0ed63b651bda.png)
创建分支
git branch 分支名
![](https://i-blog.csdnimg.cn/direct/cb249d1f3aa04f63b8a01df9912aaae3.png)
切换分支
git checkout 分支名
![](https://i-blog.csdnimg.cn/direct/57aa261169854a32a9599d8fba8e4972.png)
在hot-fix分支上修改文件并且提交
![](https://i-blog.csdnimg.cn/direct/a4aa4ffd1c1344548374d9c33da36d01.png)
删除分支
bash
git checkout -b 分支名 //切换并创建分支
git branch -d 分支名 //删除分支,需要做检查
git branch -D 分支名 //删除分支,不需要做检查
合并分支
将hot-fix合并到master
首先回到master分支
![](https://i-blog.csdnimg.cn/direct/2a62a9e5f6734f31bef7a696d21971aa.png)
执行命令
git merge hot-fix
![](https://i-blog.csdnimg.cn/direct/b66d91b96edf44a7bbd7c11d1cb9a3b7.png)
合并冲突
冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
修改master中的xx.txt,然后提交
![](https://i-blog.csdnimg.cn/direct/a1c3a77c146e429ba0d776018d73613c.png)
切换分支hot-fix
![](https://i-blog.csdnimg.cn/direct/3c68587ded284ef082f02c843030b446.png)
在分支hot-fix上修改xx.txt,然后回到master
![](https://i-blog.csdnimg.cn/direct/92b35d15094946968533a9886679de8f.png)
此时合并hot-fix会产生冲突
![](https://i-blog.csdnimg.cn/direct/7c144a1aaaaa46598b24c8c0ba609876.png)
打开xx.txt
![](https://i-blog.csdnimg.cn/direct/01c55a369ea14281834d961052133e9a.png)
手动修改包括符号在内的多余内容
![](https://i-blog.csdnimg.cn/direct/ae88cc3e18c84053a1764a28b360790b.png)
重新添加到暂存区
![](https://i-blog.csdnimg.cn/direct/3a497891ee4f4fd58ba6bf652b78f1ab.png)
重新提交(注意此时提交不要加文件名)
![](https://i-blog.csdnimg.cn/direct/025c5797ba4e49c29ee5753ae11d262d.png)
查看结果
![](https://i-blog.csdnimg.cn/direct/bcecb2db83164ea88c82ba6f04bf7d20.png)
注意在hot-fix分支上还是原来的内容并未修改
![](https://i-blog.csdnimg.cn/direct/2c4d332ae1474b6ba00ca11c1c056c6e.png)