likes
comments
collection
share

Git 入门

作者站长头像
站长
· 阅读数 32

概述

git —— 分布式版本控制工具,与集中式版本控制工具(SVN、CVS)对应

git 在项目开发中用于团队内的多人协同开发项目版本控制


Git 基础

注意: 默认已经安装Git并且配置好了环境

Git工作流程

Git 入门

涉及命令:

  • clone - 克隆: 从远程仓库(如Gitee、Github)复制代码到本地仓库(如自己的电脑)
  • checkout - 检出: 从本地仓库检出一个仓库分支然后进行修订
  • add - 添加: 提交前先将代码提交到暂存区
  • commit - 提交: 提交代码到本地仓库, 本地仓库中保存有修改的各个历史版本
  • fetch - 抓取: 从远程仓库抓取到本地仓库, 不能进行任何合并操作
  • pull - 拉取: 将远程仓库拉取到本地仓库, 自动进行合并(merge),然后将其放回到工作区, 这个操作相当于fetch + merge
  • push - 推送: 代码修改完成后,将代码推送到远程仓库, 与团队成员共享代码

Git 基础操作

1、创建本地仓库

在需要推送到远程仓库的目录(项目的本地Git仓库),右键 -> 选择Git Bash进入Git Bash窗口

Git 入门

git init - 初始化:执行该命令将当前文件夹初始化为一个git仓库,初始化成功后该文件夹下会出现一个 .git 子文件夹

Git 入门

Git 入门 可以看到出现了.git文件夹

2、Git工作目录下文件的状态

Git 入门

  • git add [file | .] : 该指令让文件从工作区进入暂存区,第三个参数可以是指定文件或者.(当前文件夹下全部文件)
  • git commit -m "content": 该指令让文件从暂存区进入本地仓库,需要写入描述内容

可以看到,不论是提交到仓库还是从仓库拉取文件到本地,都要经过暂存区。 在Git工作目录下对文件的增删改,都存在上面一些状态,这些修改过程中的状态会随着执行git命令而变化


3、常用Git指令

3.1、查看修改的状态(status)

  • git status

3.2、查看提交日志(log)

  • git log --[options]

options可选值:

  • --all: 显示所有分支
  • --pretty-online:将提交信息显示为一行
  • abbrev-commit: 使输出的commitId更简洁
  • graph: 以图的形式显示

3.3、设置别名

有些时候一些常用指令太长了,为了提高效率,我们使用别名来表示他们

语法: alias 别名='语句'

  • 示例: alias _log = '--pretty=online --all --graph --abbrev-commit'
  • 此后options全选时查看日志就可以使用: git _log

3.4、版本回退

  • git reset --[options] commitID, options常用hard

该命令用于将git仓库还原到之前使用某个命令时的版本

  • git reflog 显示之前所有操作,可以以此获取某一步的commitID,然后使用git reset --hard commitID指定恢复

3.5、设置git忽略文件列表

让git指令不对指定的文件们起作用,方法是创建一个一个名为.gitignore的文件,然后vi .gitignore编辑,写入希望忽略的文件的列表

  • touch .gitignore
  • vi .gitignore -> 进入vi编辑器后,请记得Linux中学习的方法

Git分支

我们进行项目协作开发时,总是有许多分支,其中主线分支master一般是项目的稳定版是项目的主线,而开发分支develop是开发版,开发者在开发过程中总是会把项目从开发主线上分离出来进行BUG修改或是调试、开发新的功能,待测试完毕没有问题后再将自己的分支合并到主线分支master上。

分支在协同开发中有着极其重要的作用

开发中常用分支的说明

  • master 生产分支: 线上分支,也是主分支,中小规模项目作为线上运行的应用对应的分支
  • develop 开发分支: 由master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在这个版本进行开发。可以理解为这个分支上的是测试版本,当在这个分支测试完毕后,需要合并到master分支上线
  • feature/xxx: 由develop分支创建的分支,是同期并行开发但不同期上线时创建的分支,分支上的研发任务完成后需要合并到develop分支
  • hotfix/xxx: master分支派生的分支,一般作为线上bug修复使用,修复完成后合并到master、develop等分支
  • test: 代码测试分支
  • pre: 预上线分支

相关Git指令:

  • git branch: 查看本地分支
  • git branch 分支名: 新建本地分支
  • git checkout 分支名: 切换分支
  • git checkout -b 分支名: 如果目标分支不存在,则先创建再切换
  • git merge 分支名: 将选中的分支上的提交合并到当前的分支
  • git branch -[d/D] 分支名: 当optiond: 删除分支时需要做各种检查, 为D: 强制删除分支,不进行任何检查

Git冲突

在两个分支上,如果同时修改了同一文件的同一行,就会出现冲突(merge)

产生冲突的代码块会被<<<<<<< HEAD>>>>>>> dev包裹,如下

<<<<<<< HEAD
此处为产生冲突的代码
>>>>>>> dev

在vscode中,产生冲突的代码的背景会被设置为醒目的黄色

这个时候就需要手动解决冲突,在编译器里可以解决冲突后通过图形化界面提交到仓库,而在Git Bash里,我们一般通过以下顺序解决冲突

  • 1、处理文件中有冲突的地方: 指的是在提交的文件中找到产生冲突的代码块,将其修改至不会产生冲突
  • 2、冲突解决后将文件提交至暂存区(git add .)、提交到仓库(git commit -m 'content')

合并的快进模式

Git远程仓库

推送本地项目到远程仓库

配置SSH密钥和在Gitee创建仓库的步骤省略,这里只写涉及Git操作的部分

  • 先去远程仓库(如gitee)获取远程仓库地址

Git 入门

  • 进入你的本地项目根目录,空白处右键打开git bash
// 登录账户
git config --global user.email "xx"
git config --global user.name "xx"

//开始推送
git init                                     //会在本地项目目录生成一个.git文件夹
git remote add origin https://xx/xx/.../git  //配置远程仓库名为orgin以及远程仓库地址
git remote                                   //查看当前的远程仓库
git add .                                    //添加文件
git commit -m 'content'                      //提交文件并设置本次提交的注释
git push -u origin 分支名                    //推送添加的文件到远程仓库指定分支

绑定推送

将本地分支与远程仓库的分支绑定,从而可以简化推送步骤

//在第一次推送时:
git push --set-upstream origin 本地分支名1:绑定的远程分支名1

//以后推送时
git checkout 本地分支名1
git push 

clone

从远程仓库复制其中的文件到本地,通俗说就是下载

  • git clone clone的远程仓库地址

抓取和拉取

把远程仓库的更新更新到本地

  • 抓取: git fetch [远程仓库名] [分支名]: 将仓库里的更新都抓取到本地,不会进行合并。若不指定远程仓库名称和分支名,则抓取所有分支
  • 拉取: git pull [远程仓库名] [分支名]: 将远程仓库的修改拉到本地并自动进行合并,相当于fetch+merge。若不指定远程仓库名和分支名,则抓取所有并更新当前分支
转载自:https://juejin.cn/post/7224764608040927289
评论
请登录