这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
主要内容
- Git 是什么
- Git 命令的基本使用方式及原理
- Git 使用中的一些问题
背景
- 入职后按照文档进行Git配置,但是配置后依然拉取代码有问题,缺少自己排查配置问题的能力
- 研发流程中进行一些异常操作,不符合研发规范,不清楚保护分支,MR/PR 等概念
Git 是什么
Git is a free and open source distributed version control system designed to handle everythingfrom small to very large projects with speed and efficiency.
Git 命令的基本使用方式及原理
- git config --global user.name 用户名 设置用户签名
- git config --global user.email 邮箱 设置用户签名
- git init 初始化本地库
- git status 查看本地库状态
- git add 文件名 添加到暂存区
- git commit -m "日志信息”文件名 提交到本地库
- git reflog 查看历史记录
- git reset --hard 版本号 版本穿梭
说明:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
git pull 和 git fetch的区别
一、远端跟踪分支不同
1、Git fetch:Git fetch能够直接更改远端跟踪分支。
2、git pull:git pull无法直接对远程跟踪分支操作,我们必须先切回本地分支然后创建一个新的commit提交。
二、拉取不同
1、Git fetch:Git fetch会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作。
2、git pull:git pull是从远程获取最新版本并merge到本地,会自动合并或修改当前的工作。
三、commitID不同
1、Git fetch:使用Git fetch更新代码,本地的库中master的commitID不变,还是等于1。
2、git pull:使用git pull更新代码,本地的库中master的commitID发生改变,变成了2。
Git分支操作
git merge解决冲突
1)编辑有冲突的文件,删除特殊符号,决定要使用的内容
2)添加到暂存区
3)执行提交(注意:此时使用 git commit 命令时不能带文件名)
远程仓库操作
git pull拉取代码时冲突的解决办法
方法1:
1.先将本地修改存储起来
使用git stash命令,这样本地的所有修改就都被暂时存储起来 。其中stash@{0}就是刚才保存的标记。后续可以通过此标记访问。
2.再次拉取代码
git pull
3.还原暂存的内容
git stash pop stash@{0}
4.解决冲突
在存在冲突的文件中,Updated upstream 和=====之间的内容为拉取下来的代码,=====和stashed changes之间的内容就为本地修改的代码。解决完成之后,就可以正常的提交了。
5.删除stash
使用git stash drop stash@{0}命令,如果不加stash编号,默认的就是删除最新的,即编号为0的。或者git stash clear命令,清除所有stash。
方法2:
1.git rebase 完全相信远程仓库的代码 在远程仓库的基础上更改代码。