Git入门级指南

news/2024/11/9 4:55:27/

Git入门级指南

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

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

关于git的简介

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

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

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

安装

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

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

在这里插入图片描述

在这里插入图片描述

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操作的结构图

在这里插入图片描述

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

生成ssh:ssh-keygen -t rsa -C 邮箱

分支

分支操作

查看分支: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归于一点commit2.丢失分支信息(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合并到处于前面的分支

http://www.ppmy.cn/news/748936.html

相关文章

redis 笔记

文章学习参考:Redis 教程 | 菜鸟教程 (runoob.com) 1、安装并执行 1.1 安装 下载地址:https://github.com/tporadowski/redis/releases 点击下面的压缩文件下载,版本不一定是这个。 1.2 执行redis 打开cmd窗口,跳转到redis解压的…

2023 TCT亚洲3D打印展预约全面启动,看透技术、材料、应用与市场现状

亚洲3D打印、增材制造展览会(TCT Asia)将于2023年9月12-14日在国家会展中心(上海)4.1馆举办。2023年规模再升级,27,000㎡展览面积,比去年增长31%,汇集超过300家展商,是观众了解数字化…

linux的3d软件下载,3d切片软件下载 FlashPrint(3D闪铸切片软件) V4.6.2 linux版 64位 下载-脚本之家...

FlashPrint一款3D切片软件,该软件是由闪铸科技推出,此款为用户打造提供支持手动添加删除支撑、内外径补偿、2d转3d以及智能模型分割等功能,适用于win、mac、linux等操作系统,本站提供的是该软件的linux64位版本,有需要…

Flashprint,闪铸科技3D打印流程

一、设计 设计者可以根据自己的能力选择CAD,SOILDWORKS进行制图,制图大小应根据自己所拥有的打印机尺寸严格规范。创作完成后文件格式保存为.STL格式。 二、软件下载 如果你和我的打印机一样是闪铸科技的,可以前往官网Flashforge Profession…

Maven 配置本地jar,通过下载第三方jar包,然后手动配置maven jar包依赖 例如:IKExpression

说明:有时候有一些jar包 maven中央仓库和阿里云仓库没有收录的jar包需要手动下载至本地进行手动添加maven依赖,就拿 IK表达式 IKExpression jar 包来说 第一步 下载IKExpression 包 没有这个包的同学可以点击下载阿里云盘分享 第二步 找到自己项目本地…

关于公安部三所开展网络安全产品认证工作的公告

各网络安全产品厂商&#xff1a; 2023年7月3日&#xff0c;国家互联网信息办公室、工业和信息化部、公安部、国家认证认可监督管理委员会发布了《关于调整<网络关键设备和网络安全专用产品目录>的公告》&#xff08;2023年第2号&#xff09;&#xff0c;调整了网络安全专…

显卡驱动掉了怎么办

ssh t219192.168.199.157 //关闭图形界面 sudo service lightdm stop cd ~/下载 sudo chmod ax NVIDIA-Linux-x86_64-418.56.run sudo ./NVIDIA-Linux-x86_64-418.56.run 是否要安装32位 否

重装显卡驱动

实验室显卡驱动老是莫名掉&#xff0c;写这篇文章为了记载如何重装显驱。 显卡类型&#xff1a;RTX2080Ti&#xff0c;显驱从英伟达官网下载对应版本。 系统&#xff1a;Ubuntu18.04 sudo ln -f -s /usr/bin/gcc-7 /usr/bin/gcc sudo ./NVIDIA-Linux-x86_64-440.31.run sudo …