Git总结超全版

最近想系统的回顾一下Git的使用,如果只想快速的集成git到idea,可以参考另一篇我的博客中的git部分

目录

  • 版本管理工具简介
    • Git安装与配置
    • Git远程仓库配置
  • Git常用命令
    • 为常用命令配置别名(可选)
    • Git忽略文件.gitignore
    • 一些概念
    • *本地仓库操作
      • 删除仓库内容
    • *远程仓库操作
    • *分支操作
      • 分支及合并的冲突问题
      • 开发中分支使用原则与流程
    • 标签操作
  • 在IDEA中使用Git
    • IDEA中配置Git
    • 获取Git仓库
    • 本地仓库操作
    • 远程仓库操作
    • 分支操作

版本管理工具简介

现在比较流行的版本管理工具是git ,但是实际上git 是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,比如svn。版本管理工具一般具有如下特性:

1) 能够记录历史版本,回退历史版本
2) 团队开发,方便代码合并

SVN(SubVersion)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的.工作流程如下:
1.从中央服务器远程仓库下载代码
2.修改后将代码提交到中央服务器远程仓库

优点: 简单,易操作
缺点:所有代码必须放在中央服务器
1.服务器一旦宕机无法提交代码,即容错性较差
2.离线无法提交代码,无法及时记录我们的提交行为

在这里插入图片描述



Git

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库
命令如下:

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加): 在提交前先将代码提交到暂存区
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
    fetch+merge
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

在这里插入图片描述

在这里插入图片描述


git和svn的区别

svn 是集中式版本控制工具,git 是分布式版本控制工具
svn 不支持离线提交,git有本地仓库,支持离线提交代码


Git安装与配置

下载地址

在这里插入图片描述

  1. 按照附件的 顺序直接下一步傻瓜式安装即可
  2. 其中安装的过程中需要填写一个邮箱和用户名(任意即可)
  3. 注意: 安装完毕请重启资源管理器,或者重启电脑 cmd里输入git --version即可查看版本
  4. 可视化客户端有很多比如上面的TortoiseGit,还有GitHub Desktop等,本教程不介绍,只介绍Git Bash与结合IDEA的使用

Git GuI:Git提供的图形界面工具
Git Bash: Git提供的命令行工具
当安装Git后首先要做的事情是设置用户名称和email地址,是非常重要的, 每次Git提交都会使用该用户信息

在电脑桌面任意位置右击(win11 shift+右击),点击“Git Bash Here”以打开Git命令行窗口,这里相当于一个小的linux窗口,学习linux命令也可以在这里学

#设置用户信息 git config --global user.name "用户名"git config --global user.email "邮箱地址"
#查看配置信息git config --listgit config user.name
#通过上面的命令设置的信息会保存在用户C:\Users\用户\.gitconfig文件中

在这里插入图片描述

解决GitBash乱码问题

可配可不配

1.打开GitBash执行下面命令

git config --global core.quotepath false

2.${git_home}/etc/bash.bashrc 文件最后加入下面两行

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


Git远程仓库配置

如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
码云gitee是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。

配置ssh协议

使用它们需要配置 ssh keys。需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitLab只要知道了你的公钥,就可以确认只有你自己才能推送。当然,Github、Gitee或GitLab允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitLab,就可以在每台电脑上往GitLab推送了。

在git bash生成SSH公钥命令ssh-keygen -t rsa,命令执行后,连敲3次回车键,如果公钥已经存在,则自动覆盖。执行完后到系统盘users目录(win: C:\Users\用户\你的用户名.ssh),查看生成的ssh文件。

登陆Github、Gitee或GitLab,打开“settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,将公钥( id_rsa.pub),添加到Github、Gitee或GitLab平台中即可。

测试配置是否成功,如在Git Bash中输入ssh -T git@github.comssh -T git@gitee.com
当你第一次使用Git的命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了。


配置http/https协议

一般推荐使用ssh协议,因为SSH 使用公钥加密,不需要频繁输入用户名和密码,避免了凭据泄露风险。配置好 SSH 密钥后,后续操作无需重复输入凭据。在脚本和 CI/CD 环境中,SSH 更易于无交互地操作。

使用 HTTP/HTTPS URL 来克隆仓库。例如:git clone https://github.com/username/repo.git 这些命令后面都会介绍

如果你已经克隆了一个仓库,并想更改其远程 URL 为 HTTPS,可以使用以下命令: git remote set-url origin https://github.com/username/repo.git

需要修改“.git/config”文件内容,注意这是当前项目中的配置文件,不是用户目录下的

在这里插入图片描述

例如:

在这里插入图片描述

虽然直接在 .git/config 文件中包含用户名和密码可以避免重复输入密码,但出于安全考虑,不推荐这种做法。
可以使用 Git Credential Manager 来安全地存储和管理凭据。也可以使用环境变量:将用户名和密码存储在环境变量中,并在需要时读取。例如,编写脚本来设置远程 URL。



Git常用命令

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

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
1.打开用户目录,创建.bashrc文件 部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行touch ~/.bashrc ~就表示用户目录和linux一样

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

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

3.打开gitBash,执行source ~/.bashrc 即可使用了 在当前用户的git环境中都有效



Git忽略文件.gitignore

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。例如Java项目中编译的.class文件、开发工具自带的配置文件等。在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。
注意:该文件因为没有文件名,没办法直接在windows目录下直接创建,可以通过命令行Git Bash来touch创建。

常见规则写法有如下几种:
1)/mtk/ 过滤整个文件夹
2)*.zip 过滤所有.zip文件
3)/mtk/do.c 过滤某个具体文件
4) !index.php 不过滤具体某个文件
在文件中,以#开头的都是注释。

下面是一个示例:

.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr


一些概念

Git本地操作的三个区域:

在这里插入图片描述

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多配置信息、日志信息和文件版本信息等,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

Git工作区中的文件存在两种状态:untracked 未跟踪(未被纳入版本控制)、tracked 已跟踪(被纳入版本控制),其中已跟踪分为以下三种

​ 1)Unmodified 未修改状态

​ 2)Modified 已修改状态

​ 3)Staged 已暂存状态

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述




*本地仓库操作

裸仓库 (git init --bare):没有工作区,主要用于远程共享和协作。
非裸仓库 (git init):包含工作区,适合本地开发和版本控制操作。
如果你需要一个中央仓库来共享代码库,使用裸仓库;如果你需要一个本地开发环境,使用非裸仓库

mkdir创建仓库,并初始化(让Git知道,它需要来管理这个目录),指令:git init
初始化仓库不带工作区:git init --bare
执行之后会在项目目录下创建“.git”的隐藏目录,这个目录是Git所创建的,不能删除,也不能随意更改其中的内容。

在这里插入图片描述

也可以从远程仓库克隆,命令格式:git clone 远程仓库地址

在这里插入图片描述

常用命令总结:

创建一个文件到工作区 touch 文件名

查看当前状态:git status
红色:表示文件状态不在暂存区和本地仓库
绿色:表示文件状态在暂存区但不在本地仓库
nothing:表示工作区和本地仓库同步

添加到暂存区(缓存区):git add 文件名
也可以同时添加多个文件:git add 文件名1 文件名2 文件名3 …
也可以添加所有新文件到暂存区git add -Agit add .

git add . 不处理被删除的文件,而 git add -A 会将被删除的文件从暂存区中移除。
git add . 只会处理当前目录下的文件,而 git add -A 会递归地处理所有目录下的文件
一般来说,如果你想要确保所有修改、新建和删除的文件都被正确添加到暂存区,推荐使用 git add -A 命令。

把暂存区的文件提交至版本库:git commit -m "注释内容"

查看工作区的文件状态 (list) ls
查看暂存区的状态git ls-files

清空命令窗口clear:ctrl+l

每次提交都会产生一个版本号,提交时设置的message、提交人、邮箱、提交时间等信息都会记录到日志中
查看提交日志(log) git log [option] 行数太多时键入q退出查看
options
–all 显示所有分支
–pretty=oneline 将提交信息显示为一行
–abbrev-commit 使得输出的commitId更简短
–graph 以图的形式显示
在上面配置的别名git-log 就包含了这些参数,所以后续可以直接使用指令git-log

版本回退or切换 git reset 将暂存区的文件取消暂存或者是切换到指定版本
取消暂存命令格式:git reset 文件名
切换到指定版本命令格式:git reset --hard 版本号
git reset --hard HEAD^ 上一个版本就是HEAD^,上上一个版本就是HEAD^^
进行版本回退时,不需要使用完整的哈希字符串,前七位即可
每次Git提交都会产生新的版本号,可以使用git log 指令查看,通过版本号就可以回到历史版本

回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
git reflog这个指令可以看到已经删除的提交记录,查看所有的操作记录以便确定要回到未来的哪个版本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



删除仓库内容

Git跟踪并管理的是修改,而非文件。

你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。比如我们在当前工作区中修改readme的内容,此时git status就会提醒修改:

在这里插入图片描述

一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:rm readme.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

在这里插入图片描述

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit提交
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git checkout -- 文件名

在这里插入图片描述

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

git checkout不仅用于还原文件,还可以用于切换分支,例如,要切换到名为 feature 的分支:git checkout feature 也可以使用 git checkout 来创建新分支并立即切换到该分支git checkout -b new-feature
可以使用 git checkout 切换到某个特定的提交(commit)。这使你处于“分离头指针”状态,不属于任何分支,而是处于特定提交的状态。例如,要切换到某个提交的哈希值为 abcdef 的状态 git checkout abcdef
如果你只想在当前工作目录中恢复特定文件或目录到某个特定分支的状态,也可以使用它,比如将 <file> 恢复到 <branch> 分支的状态 git checkout <branch> -- <file>




*远程仓库操作

前面执行的命令操作都是针对的本地仓库,本节我们会学习关于远程仓库的一些操作,该节会涉及到一些分支操作,需要结合下一章看,具体命令包括

  • git remote 查看远程仓库

  • git remote add 添加远程仓库

  • git clone 从远程仓库克隆

  • git pull 从远程仓库拉取

  • git push 推送到远程仓库


如果要查看已经配置的远程仓库服务器,可以执行 git remote 命令,它会列出每一个远程服务器的简称。
如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字。
可以通过-v参数查看远程仓库更加详细的信息。本地仓库配置的远程仓库都需要一个简称,后续在和远程仓库交互时会使用到这个简称
在这里插入图片描述



添加远程仓库命令格式:git remote add 简称 远程仓库地址
注意:一个本地仓库可以关联多个远程仓库

在这里插入图片描述



如果你想获得一份已经存在了的 Git 远程仓库的拷贝,这时就要用到 git clone 命令。 Git 克隆的是该 Git 仓库服务器上的几乎所有数据(包括日志信息、历史记录等)。
克隆仓库的命令格式: git clone 远程仓库地址 [本地目录] 本地目录可以省略,会自动生成一个目录

在这里插入图片描述



将本地仓库当前分支的内容推送到远程仓库的对应分支,命令格式:git push 远程仓库简称 远程仓库分支名称
git push origin feature:feature将把本地的 feature 分支推送到远程仓库的 origin 中的 feature 分支 默认推送的是当前切换到的本地仓库分支 查看分支关联关系我们可以分支章节介绍的git branch -vv 命令

git push -u origin feature 用 -u 参数(–set-upstream的简写)以后再次推送时,Git会记住你推送到的远程分支,允许你只需键入 git push 而不必每次都指定远程分支
-f参数表示强制覆盖

一个仓库可以有多个分支,默认情况下在创建仓库后会自动创建一个master分支,后面会讲解分支相关的操作

在这里插入图片描述

在使用git push命令将本地文件推送至码云远程仓库时,如果是第一次操作,需要进行身份认证,认证通过才可以推送,如下:

在这里插入图片描述

注意:上面的用户名和密码对应的就是我们在码云上注册的用户名和密码,认证通过后会将用户名和密码保存到windows系统中(如下图),后续再推送则无需重复输入用户名和密码。

在这里插入图片描述

推送完成后可以到远程仓库中查看文件的变化。



从远程仓库获取最新版本并合并到本地仓库,命令格式:git pull 远程仓库简称 分支名称

拉取指令就是将远端仓库的修改拉到本地并自动进行合并 即pull = fetch+merge 其中 merge是分支合并操作 分支章节会介绍
git fetch [remote name] [branch name] 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并,如果不指定远端名称和分支名,则抓取所有分支
在这里插入图片描述

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数–allow-unrelated-histories




*分支操作

使用分支意味着你可以把你的工作从开发主线上分离开来来进行重大的Bug修改、开发新的功能,以免影响开发主线。本地仓库和远程仓库中都有分支,同一个仓库可以有多个分支,各个分支相互独立,互不干扰。通过git init 命令创建本地仓库时默认会创建一个master分支。

在这里插入图片描述

在这里插入图片描述

本节我们会学习关于分支的相关命令,具体命令如下:



查看分支命令:git branch
git branch 列出所有本地分支;git branch -r 列出所有远程分支;git branch -a 列出所有本地分支和远程分支

在这里插入图片描述

查看关联关系我们可以使用 git branch -vv 命令

在这里插入图片描述



创建分支命令格式:git branch 分支名称

在这里插入图片描述



一个仓库中可以有多个分支,切换分支命令格式:git checkout 分支名称 创建新分支并立即切换到该分支git checkout -b new-feature
注意:在命令行中会显示出当前所在分支,如下图所示。

在这里插入图片描述



推送至远程仓库分支命令格式:git push 远程仓库简称 分支名称

在这里插入图片描述

推送完成后可以查看远程仓库:

在这里插入图片描述



合并分支就是将两个分支的文件进行合并处理,命令格式:git merge 分支名称 注意:分支合并时需注意合并的方向,如下图所示,在Master分支执行操作,结果就是将dev分支的内容合并到Master分支。

先在dev分支下的readme文件中新增一行并提交本地
在这里插入图片描述

切换到master分支下观察readme文件

在这里插入图片描述

将dev分支的内容与master分支合并

在这里插入图片描述



删除分支.不能删除当前分支,只能删除其他分支,即在删除分支的时候,一定要先退出要删除的分支,然后才能删除。
git branch -d 分支名称 删除分支时,需要做各种检查
git branch -D 分支名称 不做任何检查,强制删除

在这里插入图片描述



分支及合并的冲突问题

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支,如下图所示。

在这里插入图片描述

新手上路小技巧:上班第一件事先git pull,可以在一定程度上避免冲突的产生。每天下班前要做的是git push,将本地代码提交到线上仓库。

在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故可能会发生合并冲突。此时解决思路如下。

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

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)
    冲突部分的内容处理如下所示:

在这里插入图片描述



开发中分支使用原则与流程

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
在开发中,一般有如下分支使用原则与流程:

  • master (生产) 分支
    线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
  • develop(开发)分支
    是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
  • feature/xxxx分支
    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
  • hotfix/xxxx分支,
    从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。
  • 还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等等。

在这里插入图片描述



标签操作

Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。下面是mybatis-plus的标签:

在这里插入图片描述


查看标签命令:git tag

在这里插入图片描述



创建标签命令:git tag 标签名

在这里插入图片描述



将标签推送至远程仓库命令:git push 远程仓库简称 标签名

在这里插入图片描述

推送完成后可以在远程仓库中查看标签。



检出标签时需要新建一个分支来指向某个标签,检出标签的命令格式:git checkout -b 分支名 标签名

在这里插入图片描述





在IDEA中使用Git

通过Git命令可以完成Git相关操作,为了简化操作过程,我们可以在IEDA中配置Git,配置好后就可以在IDEA中通过图形化的方式来操作Git。

当然也可以IDEA集成GitBash作为Terminal:

在这里插入图片描述


IDEA中配置Git

在IDEA中使用Git,本质上还是使用的本地安装的Git软件,所以需要提前安装好Git并在IDEA中配置Git。git.exe:Git安装目录下的可执行文件,前面执行的git命令,其实就是执行的这个文件.Git安装目录:

在这里插入图片描述

IDEA中的配置:

在这里插入图片描述

如果Git安装在默认目录中(C:\Program Files\Git),则IDEA中无需再手动配置,直接就可以使用。



获取Git仓库

在IDEA中获取Git仓库有两种方式:

  • 本地初始化仓库,本质就是执行 git init 命令
  • 从远程仓库克隆,本质就是执行 git clone 命令

本地初始化仓库

在IDEA中通过如下操作可以在本地初始化一个本地仓库,其实底层就是执行的 git init 命令。操作过程如下:

1)依次选择菜单【VCS】—【Import into Version Control】—【Create Git Repository】

在这里插入图片描述

2)在弹出的【Create Git Repository】对话框中选择当前项目根目录,点击【OK】按钮:

在这里插入图片描述

操作完成后可以看到当前项目根目录下出现了.git隐藏目录,可以在IDEA的工具栏中看到Git的相关操作图标:

在这里插入图片描述



从远程仓库克隆

在IDEA中从远程仓库克隆本质就是执行的 git clone 命令,具体操作过程如下.1)在IDEA开始窗口中点击【Get from Version Control】

在这里插入图片描述

2)在弹出的【Get from Version Control】窗口中输入远程仓库的URL地址和对应的本地仓库存放目录,点击【Clone】按钮进行仓库克隆操作

在这里插入图片描述



本地仓库操作

本地仓库操作:

  • 将文件加入暂存区,本质就是执行 git add 命令
  • 将暂存区的文件提交到版本库,本质就是执行 git commit 命令
  • 查看日志,本质就是执行 git log 命令

将文件加入暂存区

当在Git工作区新增文件或者对已有文件修改后,就需要将文件的修改加入暂存区,具体操作如下:

在这里插入图片描述



将暂存区文件提交到版本库

将暂存区文件提交到版本库,可以选择一个文件进行提交,也可以选择整个项目提交多个文件。在IEDA中对文件的提交进行了简化操作,也就是如果文件修改后,无需再加入暂存区,可以直接提交。

1)提交一个文件:

在这里插入图片描述

可以看到,如果选中一个文件提交,则菜单名称为【Commit File…】

2)提交多个文件:

在这里插入图片描述

可以看到,如果提交多个文件,则菜单名称为【Commit Directory…】由于提交操作属于高频操作,所以为了进一步方便操作,在IDEA的工具栏中提供了提交操作的快捷按钮:

在这里插入图片描述



查看日志

查看日志,既可以查看整个仓库的提交日志,也可以查看某个文件的提交日志。

1)查看整个项目的提交日志:

在这里插入图片描述

在这里插入图片描述

2)查看某个文件的提交日志

在这里插入图片描述

在这里插入图片描述




远程仓库操作

远程仓库操作:

  • 查看远程仓库,本质就是执行 git remote 命令
  • 添加远程仓库,本质就是执行 git remote add 命令
  • 推送至远程仓库,本质就是执行 git push 命令
  • 从远程仓库拉取,本质就是执行 git pull 命令

查看远程仓库

在这里插入图片描述



添加远程仓库

一个本地仓库可以配置多个远程仓库,在【Git Remotes】窗口中点击【+】来添加一个新的远程仓库:

在这里插入图片描述



推送至远程仓库

在这里插入图片描述

在弹出的【Push Commits】窗口中可以看到本次推送的文件,点击【Push】按钮即可推送至远程仓库:

在这里插入图片描述

由于推送至远程仓库操作属于高频操作,所以可以通过IDEA工具栏中的提交快捷按钮同时完成提交和推送:

在这里插入图片描述



从远程仓库拉取

在这里插入图片描述

由于从远程仓库拉取文件属于高频操作,所以在IDEA的工具栏中提供了对应的快捷按钮:

在这里插入图片描述





分支操作

分支操作:

  • 查看分支,本质就是执行 git branch 命令
  • 创建分支,本质就是执行 git branch 分支名 命令
  • 切换分支,本质就是执行 git checkout 命令
  • 将分支推送到远程仓库,本质就是执行 git push 命令
  • 合并分支,本质就是执行 git merge 命令

查看分支

在这里插入图片描述

在弹出的窗口中可以看到本地分支和远程分支:

在这里插入图片描述

由于分支操作属于高频操作,所以在IDEA的状态栏中提供了分支操作的快捷按钮:

在这里插入图片描述

点击【master】快捷按钮即可弹出【Git Branches】分支窗口:

在这里插入图片描述



创建分支

在【Git Branches】分支窗口中点击【New Branch】,弹出如下窗口:

在这里插入图片描述

在弹出的【Create New Branch】窗口中输入新分支的名称,点击【Create】按钮完成分支创建



切换分支

在这里插入图片描述



将分支推送到远程仓库

通过如下操作可以将分支推送到远程仓库:



合并分支

在这里插入图片描述



ok 写完了 有些地方写的可能比较简单
这里贴几篇我在写这篇博客之前参考的比较多的几个文章 写的都还可以 本文主要是我的个人回忆总结 如果有什么写的不好的地方 也可以看看这些文章
Git入门到精通全套教程(涵盖GitHub\Gitee码云)
超级完整的 Git的下载、安装、配置与使用 以及命令
实现在IDEA中将项目上传至github远端仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/331511.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wireshark 4.2.5:发现 QUIC 和 VXLAN 协议的新功能

Wireshark 是一种先进且广泛使用的网络协议分析仪&#xff0c;最近发布了新版本 4.2.5&#xff0c;它提供了许多新功能和改进。 Wireshark 4.2.5 发行说明 什么是 Wireshark&#xff1f; Wireshark 是世界上最流行的网络协议分析器。它用于故障排除、分析、开发和教育。 Wiresh…

Elasticsearch 分析器的高级用法一(同义词,高亮搜索)

Elasticsearch 分析器的高级用法一&#xff08;同义词&#xff0c;高亮搜索&#xff09; 同义词简介分析使用同义词案例 高亮搜索高亮搜索策略unifiedplainvh 同义词 简介 在搜索场景中&#xff0c;同义词用来处理不同的查询词&#xff0c;有可能是想表达相同的搜索目标。 例…

系统架构师考试(九)

TCP/IP协议族 SMTP是简单邮件传输协议 DNS 域名解析协议 URL - IP&#xff0c;通过URL解析ip是哪一台电脑 DHCP 动态IP地址分配的协议 SNMP 简单网络管理协议 TFTP 简单文件管理协议 ICMP 是网络中差错校验&#xff0c;差错报错的协议 IGMP G是组&#xff0c;组…

Hadoop3:客户端向HDFS写数据流的流程讲解(较枯燥)

一、场景描述 我们登陆HDFS的web端&#xff0c;上传一个大文件。 二、流程图 三、讲解 流程1&#xff08;Client与NameNode交互&#xff09; 1、HDFS client创建DistributedFileSystem&#xff0c;通过dfs与NameNode进行2次&#xff08;一来一回4次&#xff09;对话&#x…

了解K8s集群kubectl命令进行陈述式资源管理

前言 在 Kubernetes 集群中&#xff0c;通过陈述式和声明式资源管理是确保应用程序高效运行的关键。认识这两种管理方法&#xff0c;能够更好地掌握 Kubernetes 集群的运维和管理。 目录 一、K8s 资源管理操作分类 1. 陈述式 2. 声明式 3. K8s 集群管理常用命令概览 二…

Docker Desktop安装和如何在WSL2中使用Docker

最近在使用WSL的过程中&#xff0c;想使用docker遇到了一些问题&#xff0c;在WSL中安装Linux版本的docker&#xff0c;启动镜像之后不能从Windows机器的端口映射出来&#xff0c;查了一圈之后&#xff0c;发现应该使用Docker Desktop软件&#xff0c;下面是安装和使用的方式 …

2、xss-labs之level2

1、打开页面 2、传入xss代码 payload&#xff1a;<script>alert(xss)</script>&#xff0c;发现返回<script>alert(xss)</script> 3、分析原因 打开f12&#xff0c;没什么发现 看后端源码&#xff0c;在这form表单通过get获取keyword的值赋给$str&am…

基于Keras的手写数字识别(附源码)

目录 引言 为什么要创建虚拟环境&#xff0c;好处在哪里&#xff1f; 源码 我修改的部分 调用本地数据 修改第二层卷积层 引言 本文是博主为了记录一个好的开源代码而写&#xff0c;下面是代码出处&#xff01;强烈建议收藏&#xff01;【深度学习实战—1】&#xff1a…

Spring Web MVC(2)

响应 Http响应的结果可以是数据也可以是静态页面可以针对响应设置状态码 Header信息 返回静态页面注解RestController和Controller 我们创建一个前端页面 package com.example.demo.demos.web.controller;import org.springframework.web.bind.annotation.RequestMapping; i…

Rolla‘s homework:Image Processing with Python Final Project

对比学习Yolo 和 faster rcnn 两种目标检测 要求 Image Processing with Python Final Project Derek TanLoad several useful packages that are used in this notebook:Image Processing with Python Final Project Project Goals: • Gain an understanding of the object …

海康威视硬盘录像机NVR连接公网视频监控平台,注册失败,抓包发现有403 forbidden的问题解决

目录 一、问题描述 二、问题定位 1、查看DVR的配置 2、查看需要使用的端口是否开放 3、查看日志 4、抓包 &#xff08;1&#xff09;找出错误 &#xff08;2&#xff09;查看数据包内容 三、问题分析 1、国标28181中的域的概念 2、域应该如何定义 &#xff08;1&am…

蓝桥杯备赛——DP【python】

一、小明的背包1 试题链接&#xff1a;https://www.lanqiao.cn/problems/1174/learning/ 问题描述 输入实例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 37 问题分析 这里我们要创建一个DP表&#xff0c;DP&#xff08;i&#xff0c;j&#xff09;表示处理到第i个物品时消耗j体…

STM32学习和实践笔记(30):窗口看门狗(WWDG)实验

1.WWDG介绍 1.1 WWDG简介 上一章我们已经介绍了IWDG&#xff0c;知道它的工作原理就是一个12位递减计数器不断递减计数&#xff0c;当减到0之前还未进行喂狗的话&#xff0c;产生一个MCU复位。 窗口看门狗WWDG其实和独立看门狗类似&#xff0c;它是一个7位递减计数器不断的往…

C语言之指针进阶(3),函数指针

目录 前言&#xff1a; 一、函数指针变量的概念 二、函数指针变量的创建 三、函数指针变量的使用 四、两段特殊代码的理解 五、typedef 六、函数指针数组 总结&#xff1a; 前言&#xff1a; 本文主要讲述C语言指针中的函数指针&#xff0c;包括函数指针变量的概念、创建…

aws msk加密方式和问控制连接方式

msk加密方式 msk提供了两种加密方式 静态加密传输中加密 创建集群时可以指定加密方式&#xff0c;参数如下 aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file:/…

【基于springboot+vue的房屋租赁系统】

介绍 本系统是基于springbootvue的房屋租赁系统&#xff0c;数据库为mysql&#xff0c;可用于日常学习和毕设&#xff0c;系统分为管理员、房东、用户&#xff0c;部分截图如下所示&#xff1a; 部分界面截图 用户 管理员 联系我 微信&#xff1a;Zzllh_

Wpf 使用 Prism 实战开发Day24

自定义询问窗口 当需要关闭系统或进行删除数据或进行其他操作的时候&#xff0c;需要询问用户是否要执行对应的操作。那么就需要一个弹窗来给用户进行提示。 一.添加自定义询问窗口视图 (MsgView.xaml) 1.首先&#xff0c;添加一个自定义询问窗口视图 (MsgView.xaml) <Use…

qmt量化教程4----订阅全推数据

文章链接 qmt量化教程4----订阅全推数据 (qq.com) 上次写了订阅单股数据的教程 量化教程3---miniqmt当作第三方库设置&#xff0c;提供源代码 全推就主动推送&#xff0c;当行情有变化就会触发回调函数&#xff0c;推送实时数据&#xff0c;可以理解为数据驱动类型&#xff0…

使用 Flask 和 Celery 构建异步任务处理应用

文章目录 什么是 Flask&#xff1f;什么是 Celery&#xff1f;如何在 Flask 中使用 Celery&#xff1f;步骤 1&#xff1a;安装 Flask 和 Celery步骤 2&#xff1a;创建 Flask 应用程序步骤 3&#xff1a;运行 Celery Worker步骤 4&#xff1a;启动 Flask 应用程序 结论 在构建…

C# NetworkStream 流的详解与示例

文章目录 一、NetworkStream类的基本概念1.1 NetworkStream类概述1.2 NetworkStream类属性1.3 NetworkStream类方法 二、NetworkStream的连接方式三、NetworkStream的传输模式四、NetworkStream类示例服务器端代码&#xff1a;客户端代码&#xff1a; 五、总结 在C#中&#xff…