【Git教程】概述、常用命令、Git-IDEA集成

Git

学苍穹外卖时遇到Git,于是先了解学习一下Git

文章目录

一.概述

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(如Java类、xml文件、html页面等)

Git能做什么?

  • 代码回溯
  • 版本切换
  • 多人协作
  • 远程备份

简介

Git用来对软件开发过程中的源代码文件进行管理,通过Git仓库来存储和管理这些文件,Git仓库分为两种:

  • 本地仓库:开发人员自己电脑上的Git仓库

  • 远程仓库:远程服务器上的Git仓库,比如:

    • GitHub(国际主流,开源首选)
    • Gitee(码云)(国内常用,访问快,适合中文用户)
    • GitLab (企业自建常用)
  • commit:提交,将本地文件和版本信息保存到本地仓库

  • push:推送,将本地仓库文件和版本信息上传到远程仓库

  • pull:拉取,将远程仓库文件和版本信息下载到本地仓库

Git和SVN的区别

项目 SVN Git
类型 集中式 分布式
是否需要联网 提交必须联网 本地提交,联网时再推送
完整历史 只在服务器 每个人本地都有
分支操作 较重、较慢 轻量、快速
安全性 服务器挂了就危险 多个备份,更安全
  • SVN:就像只能在公司内网提交代码,回家没网就干不了活。
  • Git:在家、在地铁、在飞机上都能提交代码,等有网了再同步到 GitHub。

二.下载与安装

下载

可以到官网上(但是比较慢):Git - Install for Windows

也可以从清华的镜像源里下载(几秒钟就好了):Index of /github-release/git-for-windows/git/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

安装

下载好后双击exe开始安装,一直点击next就可以快速安装

安装完成后在任意目录下点击鼠标右键,如果能看到

Git这两项就表示安装成功

  • Git GUI Here:打开Git图形界面
  • Git Bash Here:打开Git命令行

三.Git常用命令

1.全局配置

当安装Git后首先要做的就是设置用户名称和email地址,Git每次提交时都会使用该用户信息

在Git命令行中执行:

  • 设置用户信息(随便设置,不是github或者gitee的信息)

    bash 复制代码
    git config --global user.name "ran_111"
    git config --global user.email "xxx@xxx.com"
  • 查看配置信息

    bash 复制代码
    git config --list

一台电脑只能有一个Git用户吗?

一台电脑完全可以配置多个 Git 用户,比如:

  • 你用 个人账号 做开源项目(GitHub)

  • 同时用 公司账号 提交工作代码(GitLab / Gitee 企业版)

    公司项目仓库里单独设置公司信息

    bash 复制代码
    # 进入公司项目目录
    cd ~/work/company-project
    
    # 单独设置(不加 --global)
    git config user.name "Ran Zhang"
    git config user.email "ran.zhang@company.com"

    效果:

    • 所有仓库默认用 ran_111
    • 只有 company-project 用公司身份提交

2.常用命令

2.1获取本地仓库
2.1.1创建一个本地仓库
  1. 在任意目录下创建一个空目录作为本地Git仓库
  2. 在这个目录中,右键打开Git Bash窗口
  3. 执行git init
  4. 若当前目录中看到.git文件夹(此为隐藏文件夹需要设置一下才能看见)就表名Git仓库创建成功

注:一个文件下只能有一个本地仓库

2.1.2从远程仓库克隆到本地
  1. 在你需要的目录中,右键打开Git Bash窗口
  2. 执行git clone https://xxxxxxx [远程仓库地址]
2.2基本概念

版本库:.git隐藏文件就是版本库,其中存储了很多配置信息、日志信息和文件版本信息等

工作区:包含.git文件夹的目录,主要用于存放开发的代码

暂存区:.git文件夹中有很多文件,其中index文件就是暂存区。暂存区用于临时保存修改文件

暂存区的重要性

暂存区相当于一个中转站

git每次commit都是把暂存区的全部提交

工作区的文件状态

  • untracked 未跟踪(未被纳入版本控制)
  • tracked 已跟踪(被纳入版本控制,即commit到版本库内)
    • Unmodified 未修改状态
    • Modified 已修改状态
    • Staged 已暂存状态

eg 修改已提交的文件,只是改变了工作区的副本;要保存新版本,必须通过 add + commit 创建一个新的快照,而历史 commit 永远保持不变

2.3本地仓库操作

常用命令:

命令 说明
git status 查看文件状态
git add 将文件的修改加入暂存区
git reset 将暂存区的文件取消暂存或切换到指定版本
git commit 将暂存区的文件修改提交的版本库
git log 查看日志,必须在工作区目录下执行该代码才能查询.git文件夹中的日志
  • 日常删除文件 → 用 git rm 文件名 + commit(文件从当前版本消失,历史保留)
2.4远程仓库操作
命令 说明
git remote 查看远程仓库
git remote add 添加远程仓库
git clone 从远程仓库克隆
git pull 从远程仓库拉取
git push 推送到远程仓库

git clone 从 GitHub 克隆下来的仓库,会自动关联远程仓库(remote),不需要手动 git remote add

2.5分支操作

Git 分支让你能并行开发多个功能/修复,彼此隔离、互不干扰,最后安全地合并回主干

  • 通过git init命令创建本地从库时会默认创建一个master分支
  • 在github上创建一个仓库,再克隆到本地也会像git init一样默认创建一条分支,只不过名字叫main
命令 说明
git branch 查看分支 -r远程分支、-a本地和远程分支
git branch [name] 创建分支
git checkout [name] 切换分支
git push [shortName] [name] 推送至远程仓库分支
git merge [name] 合并分支(将指定分支合并到当前分支)
git branch -d [name] 删除分支

? 为啥要把分支推送远程仓库,git push时不会把分支推送上去吗

git push 默认只推送当前分支到它已关联的远程分支。

如果你新建了一个本地分支,它默认没有关联远程分支,所以 git push 不会自动创建远程分支 ------ 你需要显式操作一次。

2.6标签操作

Git中的标签指的是某个分支某个特定时间点的状态。

通过标签,可以方便的切换到标记时的状态。

eg:用这个功能来标记发布结点(v1.0、v1.1)

命令 说明
git tag 列出已有的标签
git tag [name] 创建标签
git push [shortName] [name] 将标签推送至远程仓库
git checkout -b [branch] [name] 检出标签到一个分支

四.Git-idea集成

1.配置

找到idea的全局设置,选择Version Control下的Git,选择你的git.exe文件,点击Text若下方出现Git版本号则配置成功

2.本地仓库操作

2.1创建仓库

法一 :本地初始化仓库

选择Create Git Repository

法二:远程克隆

退出项目选择Clone Repository

2.2基本操作
  • add

    idea自动把文件add到暂存区

  • commit

    .gitignore文件:告知idea哪些不要提交

    配置好该文件再点击菜单栏上Git的√就可快速提交

    或者右键根目录,选择Git,选择commit

3.远程仓库操作

3.1查看远程仓库
3.2添加远程仓库

在上一节那个Git Remotes窗口里添加

也可以在Terminal输入指令进行添加

复制代码
 git remote add gitee https://gitee.com/CoderRan_111/sky-take-out.git
3.3推送至远程仓库

从上方菜单栏的Git选项内的push进行推送

3.4从远程仓库拉取

与push同理

4.冲突解决

情况1:操作不同文件,但是在你push之前,其他人push了新版本,你原先的版本已经旧了

当你想push时,不会引起内容冲突(content conflict),但 Git 会拒绝你的 push,要求你先同步远程更新

解决方法: git pull(自动合并),再 push

Pull 时无冲突就自动完成

情况2:操作同一个文件,但是在你push之前,其他人push了,此时你pull+push就可能发生冲突

是否发生冲突取决于修改是否"重叠":

情况 是否冲突 说明
你们改的是文件不同部分(如你改第10行,他改第100行) 无冲突 Git 自动合并成功
你们改的是同一行或相邻行 有冲突 Git 无法决定保留谁的代码

解决方法:手动决定最终使用谁的

相关推荐
我家领养了个白胖胖2 小时前
向量化和向量数据库redisstack使用
java·后端·ai编程
嘻哈baby2 小时前
NextCloud私有云盘完整部署指南
后端
Ray662 小时前
Linux 日志处理三剑客:grep、awk、sed
后端
苹果醋32 小时前
Java设计模式实战:从面向对象原则到架构设计的最佳实践
java·运维·spring boot·mysql·nginx
郑州光合科技余经理2 小时前
实战分享:如何构建东南亚高并发跑腿配送系统
java·开发语言·javascript·spring cloud·uni-app·c#·php
陈随易2 小时前
PostgreSQL v18发布,新增AIO uuidv7 OAuth等功能
前端·后端·程序员
yaoxin5211232 小时前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python
java1234_小锋2 小时前
[免费]基于Python的Flask+Vue物业管理系统【论文+源码+SQL脚本】
后端·python·flask·物业管理
一念一花一世界2 小时前
Arbess从基础到实践(25) - 集成GitLab+阿里云OSS实现Java项目自动化构建并将制品上传Aliyun OSS
java·阿里云·gitlab·cicd·arbess