Git 的正确使用姿势与最佳实践|青训营笔记

89 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。

主要内容

  1. Git 是什么
  1. Git 命令的基本使用方式及原理
  1. Git 使用中的一些问题

背景

  1. 入职后按照文档进行Git配置,但是配置后依然拉取代码有问题,缺少自己排查配置问题的能力
  2. 研发流程中进行一些异常操作,不符合研发规范,不清楚保护分支,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 完全相信远程仓库的代码 在远程仓库的基础上更改代码。