概述
git —— 分布式版别操控东西,与集中式版别操控东西(SVN、CVS)对应
git 在项目开发中用于团队内的多人协同开发和项目版别操控
Git 根底
注意: 默许现已安装Git并且装备好了环境
Git作业流程
触及指令:
clone - 克隆
: 从长途库房(如Gitee、Github)复制代码到本地库房(如自己的电脑)checkout - 检出
: 从本地库房检出一个库房分支然后进行修订add - 增加
: 提交前先将代码提交到暂存区commit - 提交
: 提交代码到本地库房, 本地库房中保存有修正的各个前史版别fetch - 抓取
: 从长途库房抓取到本地库房, 不能进行任何兼并操作pull - 拉取
: 将长途库房拉取到本地库房, 自动进行兼并(merge),然后将其放回到作业区, 这个操作相当于fetch + mergepush - 推送
: 代码修正完成后,将代码推送到长途库房, 与团队成员同享代码
Git 根底操作
1、创立本地库房
在需求推送到长途库房的目录(项目的本地Git库房),右键 -> 挑选Git Bash进入Git Bash窗口
git init - 初始化
:履行该指令将当时文件夹初始化为一个git库房,初始化成功后该文件夹下会呈现一个.git
子文件夹
能够看到呈现了.git
文件夹
2、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] 分支名
: 当option为d: 删去分支时需求做各种检查
, 为D: 强制删去分支,不进行任何检查
Git抵触
在两个分支上,假如一起修正了同一文件的同一行,就会呈现抵触(merge)
发生抵触的代码块会被<<<<<<< HEAD
和>>>>>>> dev
包裹,如下
<<<<<<< HEAD
此处为发生抵触的代码
>>>>>>> dev
在vscode中,发生抵触的代码的背景会被设置为醒目的黄色
这个时分就需求手动处理抵触,在编译器里能够处理抵触后经过图形化界面提交到库房,而在Git Bash里,咱们一般经过以下次序处理抵触
- 1、处理文件中有抵触的地方: 指的是在提交的文件中找到发生抵触的代码块,将其修正至不会发生抵触
- 2、抵触处理后将文件提交至暂存区(git add .)、提交到库房(git commit -m ‘content’)
兼并的快进形式
Git长途库房
推送本地项目到长途库房
装备SSH密钥和在Gitee创立库房的过程省掉,这儿只写触及Git操作的部分
- 先去长途库房(如gitee)获取长途库房地址
- 进入你的本地项目根目录,空白处右键打开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
。若不指定长途库房名和分支名,则抓取一切并更新当时分支