0


01—Git

概述

在开发中可能遇到这些场景

① 小明负责的模块就快要完成,就在即将保存备份的时候,电脑突然蓝屏了,工作又得重新做

② 项目需要实现一个复杂的功能,小王摸索了一个星期终于有眉目,但是代码已经被改的面目全非,回不到过去

③ 一个类出现了BUG,但是经理发现有好几个人都修改过这个类,无法定位到这个BUG是谁造成的

为了解决以上这些类似的麻烦,版本控制器诞生了

集中式版本控制器(SVN和CVS)。版本库是集中存放到中央服务器,团队的每个人工作时从中央服务器下载代码,是必须联网才能工作,局域网或者互联网。个人修改后提交到中央版本库。

分布式版本控制器(Git)。分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需联网,因为版本库就在自己的电脑上。多人协作只需要各种的修改推送给对方,就能互相看到对方的修改了。

安装与配置

下载地址:https://git-scm.com/download

下载完成后打开安装包,一直下一步即可

安装完成后打开一个文件夹,右键如果可以看到这两个选项说明Git安装成功

  • Git GUI Here Git提供的图形界面工具
  • Git Bash Here Git提供的命令行工具

Git基本配置

使用Git命令行工具,设置用户信息

git config --global user.name "用户名"
git config --global user.email "用户邮箱"

# 查看配置信息
git config --global user.name
git config --global user.email

解决GitBash乱码问题

第一步打开GitBash执行下面的命令

git config --global core.quotepath false

第二步在Git的安装目录下的etc文件夹下面找到bash.bashrc文件最后加入下面两行

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

为常用指令配置别名(可选)

有些常用指令参数非常多,每次都输入好多参数,可以使用别名进行代替

打开用户目录,创建 .bashrc 文件

部分Windows系统不允许用户创建点号开头的文件,可以打开GitBash执行 touch ~/.bashrc

在 .bashrc 文件中输入如下内容

# 用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'

基础指令

准备本地仓库

要使用Git对代码进行版本控制,首先需要获得本地仓库

  • 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
  • 进入这个目录中,点击右键打开Git Bash窗口
  • 执行命令 git init
  • 创建成功后可以在文件夹中看到隐藏的 .git 文件夹

Git工作目录对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着执行Git命令而发生变化

当对工作区的文件进行修改后,需要执行git add命令将修改后的文件添加到暂存区,之后文件的状态会更改为已暂存(staged),最后执行git commit命令后会将暂存区的文件提交到仓库,成功提交到仓库后可以查询到提交记录。

文件添加到暂存区

将修改的文件添加到暂存区

# 添加指定的文件
git add "文件名"
# 添加所有文件
git add . 

查询修改的状态

# 查看文件状态
git status

暂存区文件提交到本地仓库

# 提交暂存区文件
git commit -m "注释内容"

查询提交记录

# 查看提交记录
git log [option]

option参数

  • --all 显示所有分支
  • --pretty=oneline 将提交信息显示为一行
  • --abbrev-commit 使得输出的commit更简短
  • --graph 以图的形式显示

版本回退

# 版本回退
git reset --hard commitID

commitID可以使用git log命令查看

使用git reflog指令可以看到已经删除的提交记录

添加文件至忽略列表

当有些文件无需纳入Git管理,不希望这些文件总是出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。这种情况可以在工作目录中创建一个名为 .gitignore的文件(文件名称固定),列出一个要忽略的文件模式

忽略以 .log 结尾的文件,在 .gitignore文件中写入如下内容

*.log

在目录下新建一个app.log文件,在 .gitignore文件中添加忽略后,通过git status命令查看是否成功

分支常用指令

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把工作开发从主线上分离开来进行重大的BUG修复、开发新功能,以免影响开发主线

创建和查看本地分支

# 创建分支
git branch 分支名称
# 查看本地分支
git branch

切换分支

# 切换分支
git checkout 分支名

可以直接切换到一个不存在的分支(创建并切换)

git checkout -b 分支名

合并分支

# 一个分支上的提交合并到另一个分支
git merge 分支名称

创建两个文件,file01.txt和file02.txt

将file01.txt提交到master分支的仓库中,将file02.txt提交到dev分支的仓库中

当处于master分支时,只能看见file01.txt;当处于dev分支时,只能看见file02.txt

将dev分支提交的内容合并到master分支

删除分支

# 不能删除当前分支,只能删除其他分支
git branch -d 分支名 删除分支时,需要做各种检查
git branch -D 分支名 不做任何检查,强制删除

解决冲突

当两个分支上对文件进行修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时需要手动解决冲突,解决冲突的步骤

  1. 处理文件冲突的地方
  2. 将解决完冲突的文件加入暂存区
  3. 提交到仓库

master和dev分支都有一个file02.txt文件,在file02.txt文件中分别进行编辑

master分支编辑file02.txt文件,文件第一行写入 sum = 2

dev分支编辑file02.txt文件,文件第一行写入 sum = 3

两个分支分别将file02.txt提交到仓库中

在master分支执行合并操作会出现合并失败

打开file02.txt查看内容

冲突需要自行解决,将file02.txt内容重新编辑

将解决后的file02.txt文件重新提交到仓库中即可

Git远程仓库

常用的托管服务【远程仓库】

GitHub(https://github.com/) :是一个面向开源及私有软件项目的托管平台,只支持Git作为唯一的版本库格式进行托管

GitLab(https://about.gitlab.com) :是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于企业、学校等内部网络搭建Git私服

Gitee码云(https://gitee.com/) :是国内的一个代码托管平台

创建仓库

注册码云,地址:https://gitee.com/signup

创建完成到个人主页,右上角 + 号中选择新建仓库

配置SSH公钥

生成SSH公钥,在git bash输入指令

ssh-keygen -t rsa

一路回车,如果公钥已经存在,则自动覆盖

获取公钥,在git bash输入指令

cat ~/.ssh/id_rsa.pub

复制公钥内容,在Gitee网站,右上角头像点击设置,之后点击左边菜单栏的SSH公钥

添加远程仓库

初始化本地仓库,然后与已创建的远程仓库进行对接

git remote add <远程名称> <仓库路径>

远程名称,默认是origin取决于远端服务器设置

仓库路径,从远端服务器获取此URL

打开git bash执行命令,将本地仓库与远程仓库对接

查看远程仓库

git remote

推送到远程仓库

git push [-f] [--set-upstream] [远程名称 [本地分支名][:远端分支名]]

如果远程分支名与本地分支名相同,可以只写本地分支名称

git push origin master

-f 表示强制覆盖

--set-upstream 推送到远端的同时并建立起和远程分支的关联关系

git push --set-upstream origin master

如果当前分支已经和远端分支关联,可以省略分支名和远程名

将本地master分支与远程仓库master分支关联

克隆

如果已经有了一个远程仓库,可以直接克隆到本地

git clone <仓库路径> [本地目录]

本地目录可以省略,会自动生成一个目录

在本地创建一个新目录git-test02,将仓库中的内容克隆到新目录中

在git-test02文件夹中打开git bash命令行,输入克隆指令,将远程仓库内容拉取克隆下来

抓取和拉取

抓取命令

git fetch [remote name] [branch name]

抓取命令就是将仓库里的更新都抓取到本地,不会进行合并

如果不指定远端名称和分支名,则抓取所有分支

拉取命令

git pull [remote name] [branch name]

拉取命令就是将远程仓库的修改拉到本地并自动进行合并,等同于fetch+merge

如果不指定远端名称和分支名,则抓取所有并更新当前分支

IDEA使用Git

IDEA配置Git,进入设置页面搜索Git

配置完成git后,IDEA打开之前克隆远程仓库的git-test02目录下的git-test

在该目录下创建一个文件

创建文件会弹出窗口,选择add即可

**为了防止向远程仓库推送出现冲突,先进行拉取,然后再提交文件最后推送 **

将文件进行提交

将提交的文件推送到远程仓库

标签: git java 后端

本文转载自: https://blog.csdn.net/weixin_45161115/article/details/135356533
版权归原作者 嗨饼干 所有, 如有侵权,请联系我们删除。

“01—Git”的评论:

还没有评论