Git教程---Windows安装及命令使用(详细例子)

2023-10-31

目录

一 Git的工作原理

二 Git下载及安装

三 Git配置

四 Git命令(示例)

参考链接:


一 Git的工作原理

Git有四个工作区域,其中三个工作区域工作在本地,一个工作区域工作在远程仓库;

本地目录(工作区):平时存放项目代码的位置;

暂存区(stage):用于临时存放代码的改动,事实上它只是一个文件,保存即将提交到文件的列表信息;

资源区(仓库区、本地仓库):即安全存放数据的位置,这里有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;

远程Git仓库:托管代码的服务器,如github、gitlab、码云等

git的工作流程如下:

1、在工作目录下添加或修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库;

git管理下的文件有四种状态:未跟踪(没被添加到项目中untracked);已修改(modified);已暂存(staged);已提交(committed)

二 Git下载及安装

打开网页https://git-scm.com/download/win 

选择对应版本下载即可,下载后显示安装exe文件如下,点击安装即可(一路next的那种);

安装完之后,按win键可以看到最近添加程序上三个图标,其中:

Git Gui 是git的图形化界面;Git bash是类似于Linux系统命令行操作界面;Git CMD则类似于window系统命令行操作界面;

三 Git配置

git config --global 对全局进行配置,主要是配置用户名和邮箱,以便日后将项目推到远程仓库

git config --global user.name  "用户名"  //设置git的用户名
git config --global user.email  "用户邮箱"  // 配置git的邮箱

 配置好之后可以在电脑C:\Users\自己电脑用户名路径下找到.gitconfig文件,打开可以看到刚刚我们写进去的内容,说明配置成功!

四 Git命令(示例)

git status // 项目文件的状态:待提交、文件已入库 文件已修改 暂存状态
git commit -m "消息内容"  //提交到本地仓库  -m是提交的备注信息
git branch [新的分支名] //新建一个分支,但不会立马切换到新建分支
git checkout -b [分支名] // 新建一个分支,并切换到该新建分支
git merge [分支名] // 合并该指定分支名到当前分支
git branch -d [要删除的分支名] // 删除分支
git push origin --delete [branch-name] // 删除远端分支
git branch -dr [remote/branch] // 删除远端分支

五 Git使用示例(以码云为例,gitlab,github同理)

1、准备工作:注册号码云账号

  •  注册好账号后为防止使用ssh方式下载上传代码时老是输入密码,可以给账号设置密钥

        密钥生成方式:

ssh-keygen // 在任意路径下执行即可

执行后就会在电脑C:\Users\自己电脑用户名路径下找到.ssh文件,打开其中的id_rsa_pub文件,将其粘贴到码云页面的设置-安全设置-SSH公钥对应位置即可。

2、初始化git仓库

  在任意一个空文件下,执行git init命令就可以将这个目录变成git管理的仓库:

执行完命令后可以发现刚才的空文件夹gitLearning下面生成了一个隐藏文件夹.git,这个就是版本库。打开可以看到里面还有好多文件,其中最重要的是暂存区,并且git会为我们自动创建第一个主分支master,以及指向主分支的指针HEAD。一定不要轻易删里面的内容哦~会把刚刚建好的git仓库给破坏掉~

3、在新建的仓库中添加文本文件与查看内容修改、对比文件不同、撤销修改、删除文件

在gitLearning文件夹下新建一个htmlLearning.html文件,内容如下:

<!DOCTYPE html>
<html>
<body>

<h1 id="id1">我的标题1</h1>
</body>
</html>

将其添加(git add 文件名)到git仓库中的暂存区去:

终端没报错则说明添加成功(此时gitLearning仓库中并没有htmlLearning文件);再利用git commit将刚添加的文件提交到仓库中;

此时我们再修改一下我们的htmlLearning.html文件,

添加内容如下:

<!DOCTYPE html>
<html>
<body>

<h1 id="id1">我的标题1</h1>
<p1>这是第一段</p1>     // 添加的内容
</body>
</html>

此时可以通过git diff htmlLearning.html命令查看修改了哪些内容:

  • 对比工作区和版本库某个文件的区别----git diff HEAD 文件名
  • 对比两个版本中某个文件的区别----如 git diff HEAD HEAD^  --文件名

内容表示:  减号--- 表示第一个参数的不同;加号表示第二个参数的不同, 如下面表示当前文件比版本库中多了一行内容

 终端显示前面带绿色加号的则正是我们刚刚添加的内容,这样我们就可以放心提交了(记住也是要先git add,然后才能git commit,否则会提示暂存区里没有文件需要提交Changes not staged for commit)。

可随时使用git status 命令查看git仓库中文本状态;

可随时使用git log命令查看git仓库中提交的文本记录

可随时使用git reset --hard HEAD^将版本回退到上个版本,回退多个版本时用git reset --hard HEAD~版本数(如 git reset --hard HEAD~20将会回退到前20个版本)

可以看到回到了我们提交的第一个版本(还能够看到版本号4cfdc30);

但是,我如果又想恢复到刚刚我提交的最新版本可咋办嘞:

  • 通过最新的版本号 执行命令 git reset --hard 最新版本号
  • 如何知道我的最新的版本好呢? 通过执行命令 git reflog

可以看到第二条对应的就是我刚刚最新提交的被删除的记录,版本号是26f4d41,

可以看到通过reset命令,HEAD又回到了最新的版本。

删除仓库中的文件一般是两种方法:

  • 在仓库目录中直接删掉即可,并git commit -a一下;
  • 使用命令rm -文件名,并git commit -a一下;

 

撤销修改分为三种情况:

  • 撤销工作区的修改-----使用git checkout --文件名
  • 撤销暂存区的修改(并没有commit)-----第一步git reset HEAD 文件名,第二部git checkout --文件名
  • 撤销已经commit的修改-----执行版本回退操作(git reset --hard 版本号)

 4、远程仓库

  • 创建远程仓库

登录事先注册好的码云账号,点击右上角+,可以看到新建仓库, 

根据需要创建自己的代码仓库即可;

创建后远程仓库之后,会跳转一些命令提示,

  •  我们可以将本地的项目与远程仓库进行关联,通过在本地仓库htmlLearning路径下执行标橘色的代码(-u在第一次建立远程分支与本地分支时要加上):

这样就实现了本地仓库与远程仓库关联,可以看到我们的远程仓库iotLearning和本地仓库htmlLearning内容是一样的了:

如果本地再添加或修改文件之后,在本地进行提交(add+commit)之后,一定要执行git push origin master命令哦,这样二者才能保持同步~

  • 从远程仓库克隆

我们可以随便找一个代码库,去克隆开源代码:

git clone https://gitee.com/wuhou123/mui-vue2.git
  • 创建、切换、合并分支
git checkout -b dev // 创建分支dev,并将当前分支转为dev

 上面命令等于如下两条命令:

git branch dev  // 创建分支dev
git checkout dev  //将当前分支转为dev

查看所有分支:

git branch // 查看所有分支

在分支dev上添加文件htmlLearning1.html,并在本地提交,可以看到dev分支上是有刚刚新添加的htmlLearniing1.html文件的,但master分支上是没有的哦!

将dev分支的内容合并到主分支master(要切换到合并到的那个分支上,如主分支上)

git merge dev  // 合并dev分支到当前分支master

合并分支时,一般采用的是Fast forward模式(这样有可能会导致在删除分支后,丢掉分支信息),可以通过-no-ff选项禁用该模式;

git merge -no-ff 要合并的分支名

这样在git.log下还是能看到被删除的git分支信息;

删除分支

git branch -d 要删除的分支

如果你提交的代码和别人提交的代码出现冲突,要根据冲突提示,在本地修改完冲突(保留还是删除),重新提交代码即可;

  • 暂时存储代码

工作中经常会遇到很多bug,通常在改存在两个bug的同一个文件,有一个bug着急提交,但是令一个bug还未完全修复,这时候我们只改着急提交的代码,又不想删掉已经改过的代码,这个时候应该怎么做呢?答案是可以将它们放到暂存区:

git stash // 将当前代码暂存

如,我改动了text.txt:

 可以看到text已被改动,执行完git stash之后代码便被存在了工作文件夹下,此时查看文件状态:

已经不显示我们改动的text文件了;

此时我们在master分支下新建一个bug分支,在这个分支上修改我们的text文件,并推送到远程。

合并到master分支下

最后切换回dev分支下,在该分支下,我们释放被存起来的文件,

git stash list // 查看被存起来的文件
git stash pop // 恢复被存起来的文件,并将工作区的缓存文件删掉
或
git stash apply // 仅恢复被存起来的文件,工作区中还有缓存文件

发现有冲突,打开文件,显示:

将冲突解决掉,继续修改文件bug,修改后提交即可!

  • 多人协作

在公司,基本上有多个人做同一个项目,每个人基本上都会有属于自己的分支,这样工作起来效率更高;

git remote // 查看远程库信息
git remote -v // 查看远程库的详细信息

推送本地代码到远程仓库:

git push 远程库 远程分支 // 远程库一般是origin 通过git remote查看

 抓取分支(解决冲突):

git pull  远程库 要拉取的远程分支

解决完冲突之后重新提交、推送即可。

思维导图总结:

参考链接:

Git 大全 - Gitee.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git教程---Windows安装及命令使用(详细例子) 的相关文章

  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • Windows 上的 Openssl 错误 0x02001005 和 0x2006D002?

    我正在尝试使用 openssl 将 cer 证书转换为 p12 证书 这是我正在使用的命令 C OpenSSL Win32 bin gt openssl x509 inform der in developer identity cer o
  • 如何标记单个文件?或如何下载特定文件? - 胃肠道

    我想向文件添加标签以轻松下载该文件而不是整个分支 如何下载GIT中的特定文件 我不知道有什么方法可以标记特定文件git 对于第二个问题 如何下载特定文件git 仅当您的意思是 同时下载 时 以下内容才有效in a git存储库 这就是我理解
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • 合并之间的 git rebase 会导致完全不相关的文件发生冲突

    我有一个大型 Git 存储库 几个月前引入了一个错误 我想bisect它 首先引入一个过去的提交 存储库 然后重播合并 做rebase到新的 commit 如下图所示 据我了解 由于合并 Git 似乎无法正常工作 预期的 但我想更好地了解为
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • Git 中的合并冲突是由什么构成的?

    git 如何确定特定合并存在冲突以及冲突是什么 我的猜测是这样的 如果正在合并的两个提交有一个共同的父提交 并且如果它们都更改了父提交的 X 行 那就是冲突 让我的理解变得复杂的是 更改 X 行 可能意味着用几行新行替换它 但这仍然显示为一
  • 如何使用 sourceTree 进行推送?

    我正在使用 sourceTree 管理 Unity 项目 版本 4 6 3 我只是想返回到上一次提交 右键选择 将当前分支重置到此提交 在使用模式中选择 硬 然后放回上一次提交 之后 我尝试去推 但没有成功 抱歉 当时我忘记了错误 之后 我
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 以编程方式从 java 代码中查找 java.exe 的绝对路径

    如果我有一个由用户启动的 java jar 或类文件 假设在环境变量中设置了 java 路径 那么我如何从代码中找出 java exe javaw exe 的绝对路径文件正在启动 就像在 ubuntu 上一样 我们可以运行 which ja
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 如何解决 VS Code 中变基拉取的合并冲突?

    当我做一个git pull rebase 并且我的提交中存在合并冲突 我得到冲突差异视图 解决所有冲突并暂存文件 然后呢 我可以打开终端并运行git rebase continue但是 VS Code 中不应该有一个按钮来完成变基吗 只需使
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了

随机推荐

  • Node.js之高性能探秘

    Node js之高性能探秘 NodeJS是什么 简介 NodeJS的优点 一 对前端工程师友好 二 高性能 高性能的实现 单线程 非阻塞异步I O 事件驱动 事件循环机制 NodeJS是什么 简介 Node js是一个开源和跨平台的基于 C
  • matlab算法_决策树算法MATLAB实践

    在MATLAB中 为方便用户对决策树算法的使用 MATLAB中针对分类决策树和回归决策树分别封装了两个函数 fitctree和fitrtree 由于分类决策树和回归决策树两者具有极大的相似性 因此fitctree和fitrtree两者的使用
  • 我的世界java版tp_神奇的tp指令 我的世界tp指令的用法

    神奇的tp指令 我的世界tp指令的用法 tp指令是每个玩服务器的玩家都要了解和掌握的一个指令 那下面游戏园小编就给大家详细的介绍一下在我的世界中tp指令要怎么使用吧 希望大家喜欢 其实是运用到了指令之中的tp指令 tp 自己的名字 坐标 O
  • 走梅花桩步数

    题目描述 题目描述 Redraiment是走梅花桩的高手 Redraiment总是起点不限 从前到后 往高的桩子走 但走的步数最多 不知道为什么 你能替Redraiment研究他最多走的步数吗 样例输入 6 2 5 1 5 4 5 样例输出
  • 使用微信小程序连接到 MQTT 云服务

    微信小程序是腾讯于 2017 年 1 月 9 日推出的一种不需要下载安装即可在微信平台上使用的应用程序 用户扫一扫或者搜一下即可打开应用 也体现了 用完即走 的理念 用户不用关心是否安装太多应用的问题 应用将无处不在 随时可用 但又无需安装
  • input-file 部分手机不能拍照问题

    曾经遇到一个需求 用户拍身份证上传验证 然后我卡在了拍照这个点上 最初采用的是微信的 api wx chooseImage 但随后发现 返回的是一种只有微信才能预览的 url 格式 但验证是要放在 PC 上进行的 等于保存了这个 url 也
  • uniapp省市区3级联动组件

    1 组件代码picker region vue
  • CDN 内容分发网络

    第一步 HTML的文件引用 HTML的文件头 也有文件中 文件尾 那边常有其他文件引用 比如CSS以及JS的引用 就以bootstrap常用的引用来举个栗子 你常见的引用可能会是这样的
  • MVN Scope属性说明

    MVN 的Scope属性包括 compile 默认配置 provided runtime system test compile compile是默认的范围 如果没有提供一个范围 那该依赖的范围就是编译范围 编译范围依赖在所有的classp
  • Web前端复习——Javascript(1)

    1 js发展进程关键词 ECMAScript标准 定义了js语言的核心语法 Netscape 遵照标准 实现了Javascript语言 Microsoft 遵照标准 实现了JSscript标准 W3C DOM标准 专门操作网页内容的标准 所
  • 算法基础--递归与回溯、递推、迭代关系

    递归的优缺点 优点 代码更简洁清晰 可读性更好 实际上递归的代码更清晰 但是从学习的角度要理解递归真正发生的什么 是如何调用的 调用层次和路线 调用堆栈中保存了什么 可能是不容易 但是不可否认递归的代码更简洁 缺点 由于递归需要系统堆栈 所
  • 微信小程序期末作业-优购商城

    优购商城微信小程序 2021下半年微信小程序期末作业 下载链接在文末 首页有轮播图 点我下载资源 https download csdn net download weixin 43474701 57893310
  • Visual Studio中如何进行多线程调试

    多线程的应用通常使得我们的程序调试变得困难和复杂 但是也是有章法可言的 在设计和开发多线程的程序时 需要考虑的就是多线程之间的资源共享和相互协作 资源共享和协作通常使用互斥量和信号量机制进行解决 我们在调试多线程程序时 不能把程序运行过程仅
  • 报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标

    在vue项目中配置user xml文件后 重新启动后台报错 org xml sax SAXParseException 不允许有匹配 xX mM lL 的处理指令目标 后面查阅后发现 xml文件是从别处粘贴过来的 没有顶格写 这样 达咩 这
  • Nginx相关配置

    启动Nginx 到nginx sbin目录下 nginx 1 反向代理的配置一 打开浏览器 在浏览器的地址栏输入 www 123 com 跳转到Linux系统tomcat上 我们访问一个网址的时候 浏览器会先查询本地有没有缓存这个网址对应的
  • 计算机牛人找工作-----可以参考(9个offer,12家公司,35场面试,从微软到谷歌2012)

    http www kuqin com job 20130111 333954 html 1 简介 毕业答辩搞定 总算可以闲一段时间 把这段求职经历写出来 也作为之前三个半月的求职的回顾 首先说说我拿到的offer情况 微软 3面 gt 终面
  • SDN介绍

    随着通信技术的不断发展 SDN已经逐渐成为整个行业注目的焦点 很多人认为SDN技术必将对传统网络带来一次划时代的变革 那么 什么是SDN 我们有应该如何理解和学习SDN 我们为什么需要SDN SDN的实现方式有哪些 SDN的未来发展方向是什
  • Mac安装Redis

    要在Mac上安装Redis 你可以按照以下步骤进行操作 打开终端应用程序 Terminal 可以在 应用程序 文件夹的 实用工具 目录下找到它 或者command 空格 输入ter然后直接回车 确保你已经安装了Homebrew 如果没有 请
  • 解决kibana启动时:3005 - wrong protocol being used to connect to the wazuh api 和 Wazuh API seems to be dow

    解决elasticsearch缺少模板问题 https mp csdn net editor html 112570396 后 依然不能正常检测到 wazuh api 状态 默认ip和端口 现在 解决kibana启动时 3005 wrong
  • Git教程---Windows安装及命令使用(详细例子)

    目录 一 Git的工作原理 二 Git下载及安装 三 Git配置 四 Git命令 示例 参考链接 一 Git的工作原理 Git有四个工作区域 其中三个工作区域工作在本地 一个工作区域工作在远程仓库 本地目录 工作区 平时存放项目代码的位置