【Git】git的安装与使用教程

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Git》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

请添加图片描述

目录

一、Git简介 

1.1.什么是Git

1.2.Git与SVN的区别

 1.3.Git工作流程

二、安装Git

 三、注册Gitee帐号 

3.1.注册账号

3.2.新建码云仓库 

 四、使用Git进行上传与下载代码

4.1.上传代码

4.2.下载代码

五、使用Git代码冲突

   1.git冲突的场景(主要演示情景三)

   2.解决方案

六、Git常用命令


一、Git简介 

1.1.什么是Git

Git是一种分布式版本控制系统,它最初由Linus Torvalds于2005年创建,用于管理Linux内核的开发。Git的主要作用是跟踪文件的变化,以便多人协同开发同一个项目时能够更好地管理代码。

Git的核心优势包括:

  1. 分布式:每个开发者都拥有一个完整的代码仓库,可以在本地进行提交、分支和合并操作,而不需要依赖网络连接。
  2. 高效性能:Git的设计注重性能,使得它能够处理大型项目和大量的历史记录。
  3. 分支管理:Git非常擅长处理分支,因此支持灵活的并行开发和特性分支管理。
  4. 版本管理:Git可以精确地追踪文件的每一个修改,使得开发者可以轻松地查看和恢复历史版本。
  5. 社区支持:Git已经成为开源社区和商业软件开发中最受欢迎的版本控制系统之一,因此有庞大的社区支持和丰富的资源。

1.2.Git与SVN的区别

  1. 分布式 vs 集中式

    • Git是一种分布式版本控制系统,每个开发者都拥有完整的代码仓库,可以在本地进行提交、分支和合并操作,而不需要依赖中央服务器。
    • SVN是一种集中式版本控制系统,开发者需要依赖中央服务器来提交和获取代码,因此对网络连接有一定的依赖性。
  2. 分支管理

    • Git非常擅长处理分支,支持灵活的并行开发和特性分支管理,合并操作相对简单。
    • SVN的分支管理相对复杂,创建和合并分支需要谨慎处理,有时会导致冲突和困难的解决过程。
  3. 性能

    • Git在处理大型项目和大量历史记录时有较好的性能表现,因为它是本地化操作,不需要频繁地与中央服务器通信。
    • SVN在某些情况下可能受到网络延迟的影响,特别是在复制或检出大量文件时。
  4. 历史记录

    • Git对历史记录的存储方式与SVN不同,Git以快照方式存储,而SVN以增量方式存储,这导致了在查看历史记录、回滚等操作上有所不同。

总的来说,Git更加灵活、高效,并且适合分布式团队协作,而SVN在一些传统的集中式开发环境中仍然有其优势。随着时间的推移,Git已成为许多团队和项目的首选版本控制系统。

展开说说,我们大致可以分为以下几点关于SVN的不便之处👇👇

①SVN管理如果项目经理不在身边,代码不能上传。

②如果项目经理电脑出现问题,那么最新的代码会丢失。

③项目经理在身边但是因为网络问题导致代码上传。

④版本1迭代到版本2后,又想获取版本1部分代码会牵扯代码冲突问题。

 1.3.Git工作流程

①初始化仓库或克隆现有仓库:

使用 git init 在本地创建一个新的Git仓库,或者使用 git clone <远程仓库地址> 克隆现有的远程仓库到本地。
②配置用户信息:

使用 git config 命令配置用户的姓名和邮箱,这些信息将与提交记录一同保存在Git中。

③工作目录、暂存区和版本库:

  • 工作目录:包含实际文件的目录,是开发者进行修改的地方。
  • 暂存区(Index):用于临时存放修改的地方,通过 git add 命令将工作目录的修改添加到暂存区。
  • 版本库(Repository):保存项目的元数据和对象数据库,是Git用来保存项目历史的地方。

④提交修改:

使用 git add 命令将工作目录的修改添加到暂存区,然后使用 git commit 命令提交暂存区的内容到本地版本库。

⑤查看状态和历史:

使用 git status 命令查看工作目录和暂存区的状态,以及哪些文件被修改过。
使用 git log 命令查看版本库的提交历史。

⑥分支管理:

使用 git branch 命令创建、查看或删除分支。
使用 git checkout 命令切换分支。

⑦远程操作:

使用 git remote add 命令添加远程仓库,可以是自己的服务器或托管服务(如GitHub、GitLab等)。
使用 git push 命令将本地分支推送到远程仓库,使用 git pull 命令拉取远程仓库的更新到本地。

⑧合并和解决冲突:

使用 git merge 命令合并不同分支的修改,可能需要解决冲突。

二、安装Git

git官网地址:https://git-scm.com/download/win/
选择所需要的版本,进行下载。
在这里插入图片描述

下载完成之后,双击下载好的exe文件进行安装。

在这里插入图片描述

默认是C盘,推荐修改一下路径(非中文并且没有空格),然后点击下一步。

在这里插入图片描述

Git 选项配置,推荐默认设置,然后下一步。

在这里插入图片描述

Git 安装目录名,不用修改,直接点击下一步。

在这里插入图片描述

Git 的默认编辑器,建议使用默认的 Vim 编辑器,然后点击下一步。

在这里插入图片描述

在Git创建分支后的默认的名字(master),如果没有特别的使用默认的设置,点击next即可。

在这里插入图片描述

修改 Git 的环境变量,使用默认的即可,点击next。

在这里插入图片描述

开启https连接,保证数据传输数据的安全,按照默认的选择即可。

在这里插入图片描述

配置 Git 文件的行末换行符,Windows 使用 CRLF,Linux 使用 LF,选择第一个自动转换,然后继续下一步。

在这里插入图片描述

选择 Git 终端类型,选择默认的 Git Bash 终端,然后继续下一步。

在这里插入图片描述

选择 Git pull 合并的模式,选择默认,然后下一步。

在这里插入图片描述

选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。

在这里插入图片描述

其他配置,选择默认设置,然后下一步。

在这里插入图片描述

额外的配置选项,技术还不成熟,有已知的 bug,不建议勾选,然后点击右下角的 Install按钮,开始安装 Git。

在这里插入图片描述
在这里插入图片描述

安装完成后,点击FInish安装完成。

在这里插入图片描述

 任意位置右击出现git bash here或者git gui here就说明没毛病

 三、注册Gitee帐号 

3.1.注册账号

首先需要去Gitee官网注册一个账号

Giteeicon-default.png?t=N7T8https://gitee.com/profile/emails

3.2.新建码云仓库 

注册好了即可创建一个仓库

填写仓库名称完成创建

保存命令信息

 四、使用Git进行上传与下载代码

4.1.上传代码

首先在你的本地新建一个文件夹也就是你的本地仓库用于存储代码

在该目录下右键点击 git bash here打开Git终端执行命令(命令就是刚刚所保管的)

如果c盘用户文件夹下有一个.gitconfig文件打开如果是正确的账户密码就可以了

 创建文件夹(本地仓库),创建完成后cd进入该文件夹

将该文件夹标记为git所托管的本地仓库

 将本地仓库与码云关联

git status查看管理状态(如果是红色就是还没有进行git管理)

git add.将文件交给git管理(.表示全部文件,也可以指定文件就是文件全名)

 上传文件到本地仓库git commit -m "备注信息"

本地仓库与远程仓库进行绑定

git remote add origin https://gitee.com/xiawei18/java-fang-wenshan.git

上传文件到码云git push -u origin "master"

这时候上码云查看就有该文件了(代码也是同理这里用了文件来演示而已)

下面我们上传代码试一下,使用git add .上传到本地再git status查看文件状态

 git commit -m "环境搭建完成上传真正的代码"

 git push -u origin "master"


 这就是上传代码的全部流程

4.2.下载代码

首先下载也需要一个文件夹来存储我们的代码

git clone 下载代码需要拿到仓库的URL(如果是私有仓库还需要仓库拥有者提供账户和密码)

五、使用Git代码冲突

5.1.git冲突的场景(主要演示情景三)

     情景一:多个分支代码合并到一个分支时;
     情景二:多个分支向同一个远端分支推送代码时;
     情景三:同一分支,同一文件修改后的提交(即为多个程序员修改了同一个文件)
     实际上,push操作和pull操作其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支,所以这两个过程中也可能存在冲突。
  
   分别在同一项目的两个不同本地仓库修改a.txt并提交,则会报出以下错误:
   ! [rejected] master -> master (fetch first) error: failed to push some refs to ' 。。。'

   拒绝错误:无法推送某些引用 

   5.2.解决方案

   1.将代码copy出来
   2.先从远程仓库pull代码至本地,再修改冲突代码,       
     注1:git status查看仓库状态,会显示红色的错误提示消息“ both modified:   a.txt”
   3.打开a.txt,手动修改冲突部分的代码
     <<<<<<< HEAD
     ww add 18:42 from e:\temp\test1
     =======

     ls add 123 at 18:17 from d:\temp\test1
     >>>>>>> 63c73e5933bb7d3d2bed04b06c37a74602d65b2e
     注1:<<<<<<< HEAD  >>>>>>>之间的即为冲突的代码,手动修改即可
      
   3.依次add/commit/push代码至远程仓库
     commit执行完生,重新查看仓库状态git status,红色的错误提示消息“ both modified:   a.txt”
     已经没有,表示冲突已解决

六、Git常用命令

  • git init: 在当前目录中初始化一个新的 Git 仓库。
  • git clone <repository_url>: 克隆远程仓库到本地。
  • git add <file>: 将文件添加到暂存区。
  • git commit -m "commit message": 将暂存区中的更改提交到本地仓库。
  • git push <remote_name> <branch_name>: 将本地分支的更改推送到远程仓库。
  • git pull <remote_name> <branch_name>: 从远程仓库拉取并合并更改到本地分支。
  • git branch: 列出本地分支,或创建新的分支。
  • git checkout <branch_name>: 切换到指定的分支。
  • git merge <branch_name>: 将指定分支的更改合并到当前分支。
  • git status: 显示工作目录和暂存区的状态。
  • git log: 查看提交日志。
  • git diff: 查看工作目录中的更改。
  • git remote -v: 显示远程仓库的详细信息,包括 URL。
  • git remote add <remote_name> <repository_url>: 添加一个新的远程仓库。
  • git rm <file>: 从暂存区和工作目录中删除文件。
  • git mv <source> <destination>: 移动或重命名文件,相当于先删除再添加。
  • git reset <file>: 从暂存区中移除文件,但保留在工作目录中的更改。
  • git reset --hard HEAD: 将工作目录重置为最近一次提交的状态,丢弃所有未提交的更改。
  • git stash: 将当前的未提交更改保存到栈上,并将工作目录恢复到上一次提交的状态。
  • git tag <tag_name>: 给当前 commit 打上标签。
  • git show <commit>: 显示提交对象的信息和修改内容。

git status的三种不同情况

  1. Working Directory Clean: 这种情况下,git status 命令会显示工作目录是干净的,也就是说没有待提交的修改。这意味着所有文件都已经被提交到本地仓库,并且工作目录中的文件与最后一次提交的版本是一致的。

On branch <branch> nothing to commit, working tree clean
  1. Changes Not Staged For Commit: 当工作目录中的文件被修改,但是还没有添加到 Git 的暂存区时,git status 命令会显示这些修改。这种情况下,需要使用 git add 命令将文件添加到暂存区,然后才能提交这些修改。

    On branch <branch> Changes not staged for commit: (use "git add <file>..." 
    to update what will be committed) (use "git checkout -- <file>..." 
    to discard changes in working directory) 
    modified: <file1> modified: <file2> no changes added to commit (use "git add" and/or "git commit -a")
  2. Changes to be Committed: 当文件已经被添加到 Git 的暂存区,而且等待被提交时,git status 命令会显示这些变化。在这种情况下,只需使用 git commit 命令提交这些变化即可。

    On branch <branch> Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: <file1> new file: <file2>

请添加图片描述

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

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

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

相关文章

麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包

原文链接&#xff1a;麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包 hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟桌面操作系统软件仓库搭建的文章03-软件仓库添加新版本的软件包&#xff0c;本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版…

蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题是一个简单DP的翻版问题&#xff0c;若能凑出当前的包子数&#xff0c;则凑出之前一定为dp[i - a[j]]&#xff0c;若表示出的dp[i]不是0则说明是一定存在数可以被凑出的&#xff0c;由题意&#xff1a;若凑不出的…

金融工作怎么做?低代码如何助力金融行业

10月30日至31日&#xff0c;中央金融工作会议在北京举行。金融是国民经济的“血脉”&#xff0c;是国家核心竞争力的重要组成部分。会议指出&#xff0c;党的十八大以来&#xff0c;在党中央集中统一领导下&#xff0c;金融系统有力支撑经济社会发展大局&#xff0c;坚决打好防…

Vue集成海康websdk实现摄像头预览

选择以及下载相应的websdk&#xff1a; 从海康开放平台下载相应的sdk&#xff0c;web3.0不支持高版本浏览器&#xff0c;web3.2需要摄像头支持摄像头取流&#xff0c;web3.3支持高版本浏览器 我这选择的是3.3的。可以先测试下开发包是否可以成功访问&#xff0c;修改用ip、户名…

android开发布局知识

插件开发的视频笔记&#xff1a;

算法进阶指南图论 通信线路

通信线路 思路&#xff1a;我们考虑需要升级的那条电缆的花费&#xff0c;若其花费为 w &#xff0c;那么从 1 到 n 的路径上&#xff0c;至多存在 k 条路径的价值大于 w &#xff0c;这具有一定的单调性&#xff0c;当花费 w 越大&#xff0c;我们路径上价值大于 w 的花费会越…

读者自荐的 4 个 GitHub 项目

本期推荐的 4 个开源项目&#xff0c;为读者在开源项目 Awesome-GitHub-Repo 的评论区自推的, 如果你开源了不错的项目&#xff0c;想让大家看到&#xff0c;也可以去 Awesome-GitHub-Repo 进行投稿。 本期推荐开源项目目录&#xff1a; 1. DB-GPT 2. 定制中国传统节日头像 3. …

Java / Android 多线程和 synchroized 锁

s AsyncTask 在Android R中标注了废弃 synchronized 同步 Thread: thread.start() public synchronized void start() {/*** This method is not invoked for the main method thread or "system"* group threads created/set up by the VM. Any new functionali…

超全大厂UI库分享,可免费套用!

今天我们要给大家分享的是TDesign、Arco Design、Ant Design、Material design等6个优秀的大厂UI库&#xff0c;一次性打包送给大家&#xff0c;通通免费用。大厂UI库都是经过无数次的事件检验的&#xff0c;扛住了许多种使用场景和突发情况的组件资源库&#xff0c;是前人的经…

HarmonyOS NEXT 调优工具 Smart Perf Host 高效使用指南

在软件开发的过程中&#xff0c;很多开发者都经常会遇到一些性能问题&#xff0c;比如应用启动慢、点击滑动卡顿、应用后台被杀等&#xff0c;想要解决这些问题势必需要收集大量系统数据。而在收集数据的过程中&#xff0c;开发者则需要在各种工具和命令之间来回切换&#xff0…

k8s 部署mqtt —— 筑梦之路

mqtt是干嘛的&#xff0c;网上有很多资料&#xff0c;这里就不再赘述。 --- apiVersion: apps/v1 kind: Deployment metadata:labels:app: mqttname: mqttnamespace: default spec:replicas: 1selector:matchLabels:app: mqttstrategy:rollingUpdate:maxSurge: 25%maxUnavaila…

华为认证 | 11月底这门HCIP认证即将发布!

非常荣幸地通知您&#xff0c;华为认证HCIP-Storage V5.5&#xff08;中文版&#xff09;预计将于2023年11月30日正式对外发布。为了帮助您做好学习、培训和考试计划&#xff0c;现进行预发布通知&#xff0c;请您关注。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云…

Django快速入门(一)

Django三板斧 1. 基本使用 三板斧: HttpResponse,render,redirect from django.shortcuts import HttpResponse,render,redirect# 一. 返回字符串类型的数据 return HttpResponse(字符串) # 二. 返回HTML文件 # 1. 动态HTML页面: return render(request,login.html) def ab…

西门子S7-1200PLC混合通信编程(ModbusTcp和UDP通信)

S7-1200PLC的MODBUS-TCP通信 西门子PLC ModbusTcp通信访问网关后从站(SCL语言轮询状态机)-CSDN博客文章浏览阅读305次。西门子PLC的ModbusTcp通信在专栏已有很多文章介绍,所不同的是每个项目的通信需求都略有不同,今天我们以访问网关后的三个从站数据来举例,给出轮询的推荐…

iOS 16.4 之后真机与模拟器无法使用Safari调试H5页面问题

背景 iOS 16.4之后用真机调试H5时候发现&#xff0c;Safari中开发模块下面无法调试页面 解决方案 在WKWebView中设置以下代码解决 if (available(iOS 16.4, *)) {[_webView setInspectable:YES];}然后再次调试就可以了

[git] cherry pick 将某个分支的某次提交应用到当前分支

功能&#xff1a;将某个分支的某次提交应用到当前分支 应用场景&#xff1a; 在合并分支时&#xff0c;是将源分支的所有内容都合并到目标分支上&#xff0c;有的时候我们可能只需要合并源分支的某次或某几次的提交&#xff0c;这个时候我们就需要使用到git的cherry-pick操作…

边缘计算多角色智能计量插座:用电监测和资产管理的未来智能化引擎

目前主流的智能插座涵盖了红外遥控&#xff08;控制空调和电视等带有红外标准的电器&#xff09;&#xff0c;配备着测温、测湿等仓库应用场景&#xff0c;配备了人体红外或者毫米波雷达作为联动控制&#xff0c;但是大家有没有思考一个问题&#xff0c;就是随着对接的深入&…

易点易动固定资产管理系统:实现全生命周期闭环式管理和快速盘点

固定资产管理对于企业来说至关重要&#xff0c;它涉及到资产的采购、领用、使用、维护和报废等各个环节。然而&#xff0c;传统的固定资产管理方式往往繁琐、耗时&#xff0c;容易导致信息不准确和资源浪费。为了解决这些问题&#xff0c;我们引入易点易动固定资产管理系统&…

DevOps简介

DevOps简介 1、DevOps的起源2、什么是DevOps3、DevOps的发展现状4、DevOps与虚拟化、容器 1、DevOps的起源 上个世纪40年代&#xff0c;世界上第一台计算机诞生。计算机离不开程序&#xff08;Program&#xff09;驱动&#xff0c;而负责编写程序的人&#xff0c;被称为程序员&…

Kotlin基础数据类型和运算符

原文链接 Kotlin Types and Operators Kotlin是新一代的基于JVM的静态多范式编程语言&#xff0c;功能强大&#xff0c;语法简洁&#xff0c;前面已经做过Kotlin的基本的介绍&#xff0c;今天就来深入的学习一下它的数据类型和运算操作符。 数据类型 与大部分语言不同的是&am…