概述

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。若不指定长途库房名和分支名,则抓取一切并更新当时分支