【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;若凑不出的…

ubuntu 设置最大带宽

背景 近日做实验&#xff0c;需要限制一些机子的带宽以达到模拟的效果。在网上搜索了一阵子&#xff0c;结合自己实操的经验&#xff0c;潦草写下这篇文章&#xff0c;供自己与有需要的人参考。 环境&#xff1a; Ubuntu 22.04.1 LTS 安装 wondershaper 和 speedtest-cli w…

非关系数据库

非关系数据库nosql 用来解决特定问题的数据库 特点&#xff1a; 1.没有关系模式schema-free/non-relational&#xff0c;与关系数据库不同 2.快速处理rapid process&#xff0c;数据放在内存中处理 3.distributed process分布式 4.big data 5.easy program 6.open-sour…

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

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

uniapp获取设备mac地址

const net plus.android.importClass(java.net.NetworkInterface);const wlan0 net.getByName(wlan0);const macByte wlan0.getHardwareAddress();let macStr ;macByte.forEach(item > {// .toString(16)数字以十六进制值显示let temp ;if (item < 0) temp (256 i…

MarkDown基础及表格、KaTeX公式、矩阵、流程图、UML图、甘特图语法

概述 最多可设置6级标题 技巧 列表 有序列表 MD语法&#xff1a; 1. 你好 2. 我也好呈现效果&#xff1a; 你好我也好 无序列表 MD语法&#xff1a; - a - b * aa * bbaaabbb效果&#xff1a; ab aabb aaabbb 结论&#xff0c;支持三种方式&#xff1a;-、*、 T…

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

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

android开发布局知识

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

Aop天花板

拒绝废话,拒绝冗余文字,直接上代码和案例 1 导入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2 通知类配置解释(各个配置含义在代码中解释): packag…

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

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

25期代码随想录算法训练营第十三天 | 栈与队列 part 2

目录 239. 滑动窗口最大值347.前 K 个高频元素方法一方法二 239. 滑动窗口最大值 链接 窗口 — 维持一个单调递增队列 为什么要使用队列&#xff1f; 在窗口移动的时候&#xff0c;方便把不属于窗口的最大值剔除。&#xff08;当窗口移动之后&#xff09; class Solution:…

React中JSX语法入门

JSX语法入门及代码 JSX是一种JavaScript的语法扩展&#xff0c;用于在React中描述用户界面的结构。它允许开发者使用类似HTML的语法来创建React元素&#xff0c;使得代码更具可读性和可维护性。JSX将HTML标签和JavaScript代码结合在一起&#xff0c;可以在其中使用JavaScript表…

【C++ Primer Plus学习记录】第4章编程练习

1.编写一个C程序&#xff0c;如下述输出示例所示的那样请求并显示信息&#xff1a; What is your first name? Betty Sue What is your last name? Yewe What letter grade do you deserve? B What is your age? 22 Name: Yewe,Betty Sue Grade: C Age: 22 注意&am…

读者自荐的 4 个 GitHub 项目

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

Linux 实用的监控机器操作指令

在 Linux 系统中&#xff0c;有许多监控指令可以用于实时或周期性地监视系统资源使用情况。以下是一些实用的 Linux 监控指令&#xff1a; 1. top top 命令可以实时显示系统运行的进程和相关性能统计信息。 top按 q 键退出。 2. htop htop 是 top 的交互式版本&#xff0c…

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…