Git入门级指南

这篇具有很好参考价值的文章主要介绍了Git入门级指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Git入门级指南

在软件开发和版本控制中,Git是一种非常流行且强大的工具。本文将为你提供关于Git的基本知识,并提

供一些实例来演示如何正确使用Git来管理代码。

关于git的简介

Git是一种分布式版本控制系统,它可以跟踪和管理项目中的代码变更。与其他版本控制系统不同,Git具

有强大的分支和合并功能,使得多人协作和并行开发更加容易。Git还具备高效的性能和出色的安全性,被

广泛应用于各种规模的项目中。

安装

在官网安装对应的版本即可:https://git-scm.com/downloads

安装:无脑下一步即可,安装完毕即可使用了!

Git入门级指南

Git入门级指南

git的基本概念

  1. 仓库(Repository)是存储代码的地方。在本地计算机上创建仓库,或利用代码托管平台(如GitHub或GitLab)上的远程仓库。
  2. 提交(Commit)是对代码的快照。每次提交都会记录代码的修改,并为其提供一个唯一的标识符。
  3. 分支(Branch)是在仓库中并行开发的不同版本。通过创建和切换分支,可以同时进行多个任务和实验。
  4. 合并(Merge)将一个分支的修改合并到另一个分支。这是多人协作和集成工作的关键步骤。
  • 工作区:仓库的目录。工作区是独立于各个分支的。
  • 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
  • 版本库:存放所有已经提交到本地仓库的代码版本
  • 版本结构:树结构,树中每个节点代表一个代码版本。

git的常用命令

全局设置

git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中
git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

常用命令

git add XX :将XX文件添加到暂存区
git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支
git status:查看仓库状态
git log:查看当前分支的所有版本
git push -u (第一次需要-u以后不需要) :将当前分支推送到远程仓库
git clone git@github.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
git branch:查看所有分支和当前所处分支

查看命令

git diff XX:查看XX文件相对于暂存区修改了哪些内容
git status:查看仓库状态
git log:查看当前分支的所有版本
git log --pretty=oneline:用一行来显示
git reflog:查看HEAD指针的移动历史(包括被回滚的版本)
git branch:查看所有分支和当前所处分支
git pull :将远程仓库的当前分支与本地仓库的当前分支合并

删除命令

git rm --cached XX:将文件从仓库索引目录中删掉,不希望管理这个文件
git restore --staged xx:==将xx从暂存区里移除==
git checkout — XX或git restore XX:==将XX文件尚未加入暂存区的修改全部撤销==

代码回滚

git reset --hard HEAD^ 或git reset --hard HEAD~ :将代码库回滚到上一个版本
git reset --hard HEAD^^:往上回滚两次,以此类推
git reset --hard HEAD~100:往上回滚100个版本
git reset --hard 版本号:回滚到某一特定版本

远程仓库

git remote add origin git@github.com:xxx/XXX.git:将本地仓库关联到远程仓库
git push -u (第一次需要-u以后不需要) :将当前分支推送到远程仓库
git push origin branch_name:将本地的某个分支推送到远程仓库
git clone git@github.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支
git push -d origin branch_name:删除远程仓库的branch_name分支
git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地
git pull :将远程仓库的当前分支与本地仓库的当前分支合并
git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并
git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应

分支命令

git branch branch_name:创建新分支
git branch:查看所有分支和当前所处分支
git checkout -b branch_name:创建并切换到branch_name这个分支
git checkout branch_name:切换到branch_name这个分支
git merge branch_name:将分支branch_name合并到当前分支上
git branch -d branch_name:删除本地仓库的branch_name分支
git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支
git push -d origin branch_name:删除远程仓库的branch_name分支
git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地
git pull :将远程仓库的当前分支与本地仓库的当前分支合并
git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并
git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应

stash暂存


git stash:将工作区和暂存区中尚未提交的修改存入栈中
git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop:删除栈顶存储的修改
git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
git stash list:查看栈中所有元素

git config --global [user.name](http://user.name) xxx:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email [xxx@xxx.com](mailto:xxx@xxx.com):设置全局邮箱地址,信息记录在~/.gitconfig文件中
git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

常用的操作步骤

在我们完成一个项目的时候,往往需要把代码上传到如GitHub等代码托管平台,除了备份代码方便回滚意外,也方便同组的其他伙伴更新代码,那么我们会常常用到以下命令以及操作步骤:

  1. 创建仓库和提交:
    • 在本地计算机上,使用命令git init创建一个新的Git仓库。
    • 使用git add命令添加要提交的文件。
    • 使用git commit -m "commit message"将更改提交到仓库。
  2. 分支创建和切换:
    • 使用git branch branch_name命令创建一个新的分支。
    • 使用git checkout branch_name命令切换到指定的分支。
  3. 修改代码和提交:
    • 在分支上进行代码修改。
    • 使用git status命令查看修改的文件。
    • 使用git push命令将修改提交到仓库。
  4. 合并分支:
    • 切换到接收更改的分支。
    • 运行git merge branch_to_merge命令将指定分支的修改合并到当前分支。
    • 解决合并冲突(如果有)。
    • 使用git commit命令提交合并后的代码。

重要概念解析

系统架构图

先看一张git操作的结构图

Git入门级指南

测试连通性:ssh -T git@github.com

生成ssh:ssh-keygen -t rsa -C 邮箱文章来源地址https://www.toymoban.com/news/detail-513188.html

分支

分支操作

查看分支:git branch(git branch -v)
创建分支:git branch 分支名
切换分支:git checkout 分支名
创建分支并切换:git checkout -b 分支名
合并分支:git merge 分支名
删除分支:git branch -d 分支名(不能删除当前所在分支,需要切换到另一个分支才能删除)
强行删除分支:git branch -D 分支名
细节:
    1.如果在分支A中进行了写操作(增删改),但此操作局限在工作区中进行(没有add和commit),在master中能够看到该操作。
    如果在分支A中进行了写操作,并且commit到了对象区,则master中无法观察到此文件
    2.如果在分支A中进行了写操作,但此操作局限在工作区中进行,则删除分支不需要合并


分支合并

分支名:指向当前的提交(commit)
HEAD:指向当前分支(HEAD->分支名)

如果一个分支靠前(new),一个分支落后(master),则如果不冲突,master可以通过merge直接追赶上new,称为fast forward。
fast forward本质上就是分支指针的移动:
    1.两个分支fast forward归于一点commit
    2.丢失分支信息(git log --graph看不见两个分支的路径,因为被合并了)
git merge默认使用fast forward,但我们可以手动禁止:git merge --no-ff 分支名
    1.两个分支不会归于一个commit,主动合并的分支,会前进一步
    2.分支信息不会丢失(git log --graph)


冲突

冲突:如果两个分支在同一个时刻,且两个分支同时修改了同一个文件的同一行,在合并时会引起冲突
如何解决冲突?(拿master和new分支举例)
    1.先在某个分支(例如master)中打开这个文件,把内容修改为最终需要的内容
    2.git add 文件名(这里的add并不是从工作区到暂存区,而是告诉git冲突已经解决)
    3.git commit -m "文件注释"
解决冲突会造成两次提交,即sha1值会出现两个:1次是最终提交,1次是将对方分支(new)的提交信息获取过来
这时候观察文件内容,master中的文件内容是最终修改后的内容,而new中的文件内容是解决冲突前的内容
这时候直接把new分支合并到master分支即可
这时候可能有人会问了,同样修改了同一行为什么最后这次合并不要解决冲突呢?
这其实是因为master分支的最终提交和new在解决冲突之前的提交不处于同一时刻,所以直接合并即可
简而言之:如果一方落后,则落后方可以直接通过merge合并到处于前面的分支


到了这里,关于Git入门级指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【掌握版本控制:Git 入门与实践指南】配置详解|理解本地仓库结构

                                                    🎬慕斯主页 : 修仙—别有洞天                                               ♈️ 今日夜电波:泥中に咲く—ウォルピスカーター                                                          

    2024年03月13日
    浏览(48)
  • 鸿蒙软件开发0基础入门

    今天,万众瞩目的纯血版鸿蒙星河HarmonyOS NEXT发布了,鸿蒙操作系统(HarmonyOS)作为华为开发的面向全场景分布式智能终端的操作系统,对于初学者入门开发,以下是一些基本步骤和要点: 1. 开发环境准备 安装DevEco Studio :首先需要下载并安装华为提供的集成开发环境(IDE)

    2024年01月21日
    浏览(39)
  • 管理软件开发三分钟入门

    利用蓝点通用管理系统,可自定义各种管理功能,三分钟入门,快速搭建各种数据管理/流程审批/信息发布等功能,部署到云服务器,可随时随地用电脑或手机操作。支持自定义表单、流程、版式及图表/报表,可接入微信和公众号,轻松定制自己专属的CRM系统、OA系统、HR系统

    2024年02月09日
    浏览(29)
  • tb6612电机驱动软件开发(代码pid实现,调试,控制实现)

    代码工程 https://download.csdn.net/download/weixin_52849254/87879043?spm=1001.2014.3001.5501 这段代码是一个PID算法的实现,用于控制电机的位置和速度。代码中包含了以下主要内容: 定义了全局变量,包括四个PID结构体变量,分别用于左电机的位置控制、左电机的速度控制、右电机的速度控

    2024年02月08日
    浏览(34)
  • 第七十七篇:车辆安全-车载软件C++语言开发指南(AUTOSAR C++)

    C++是面向对象的编程,比C语言更加复杂,抽象程度高,但C++在一些图像处理、系统、控件的编程方面,实用性更强,具有自己的编程优势。在车载嵌入式系统的开发中,C和C++都具有重要的作用。C++语言所使用的面向对象的编程技术如封装、继承和多态性极大的提高了在大规

    2024年02月04日
    浏览(46)
  • 【笔记】ARM M3-M4权威指南第二章《嵌入式软件开发介绍》

    2.1 ARM微控制器是由哪些构成的 2.2 开始时需要准备什么 2.2.1 开发组件,C 编译器组件产品如下 2.2.2 开发板 2.2.3 调试适配板(Keil – ULINK;IAR-- I-Jet;STM Value Line Discover;JTAG/SW仿真器/在线仿真器(ICE);开源板 – ARM的CMSIC-DAP和Coocox的CoLink) 2.2.4 软件设备驱动 2.2.5 示例(Samp

    2024年04月13日
    浏览(35)
  • HarmonyOS北向开发(软件开发方向)基于ArkTS 入门学习 (1) - 开发语言及环境配置

            建议快速阅读一遍,不要求记住。知道一个大概框架即可,方便以后查阅开发文档 开发语言 - ArkTS          HarmonyOS主要的开发语言                 未来版本的HarmonyOS的主要开发语言将会是ArkTS,在Devco Studio创建项目的时候,选择API 9 开发的情况下,只能使

    2024年01月21日
    浏览(34)
  • Xilinx Alveo系列FPGA加速卡软件开发入门

    随着异构计算越来越火,FPGA加速卡在诸多领域的应用也越来越多。 FPGA加速卡与GPU加速卡加速原理完全不同。 GPU本质上是依靠海量的并行运算单元,提升整体的吞吐量,来吃尽内存带宽。 FPGA是通用的门阵列,按照数据结构和运算特点搭建专用运算单元,能够以更低功耗和时

    2024年02月05日
    浏览(29)
  • HTC vive pro & unity开发者软件/SDK版本注意事项

    SteamVR插件是unity中VR开发的基础,必不可少。unity软件上实现对VR设备(头显、控制器、tracker)的渲染、实时追踪等功能。 推荐版本: SteamVR插件v1.2.3 link. VRTK是一套VR动作交互(移动、拾取等)的解决方案,提供了现成的交互代码。开发者也可以基于SteamVR开发自己的交互代码

    2024年02月06日
    浏览(43)
  • Lingo软件入门【数学建模】,面试Python开发十大问题

    II.III 变量赋值区域 赋值模块顾名思义是涉及到给变量赋值,但这里的变量特指是集合变量,因为其他的单个的决策变量,可以直接在定义时赋值,只有集合变量涉及到定义和赋值分开。 该模块以data:开头,以enddata结尾,因此所有对集合的赋值操作都要在这个区域内完成。

    2024年04月26日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包