Git使用详解

news/2024/5/17 5:15:41

什么是 Git?

  Git 是一种分布式版本控制系统,它可以帮助开发者跟踪文件的变化、协作开发、管理代码库等。与集中式版本控制系统不同,Git 的每个工作副本都包含完整的项目历史,这使得在没有网络连接的情况下也能独立进行工作。Git 的数据模型是基于快照,而不是差异,这为快速、高效地处理大型项目提供了支持。

安装与配置

  首先,需要在计算机上安装 Git。访问 https://git-scm.com/downloads 下载适合操作系统的版本,并按照安装向导进行安装。

  安装完成后,配置 Git 用户名和电子邮件地址,这样在提交代码时就能识别身份:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

创建新仓库

  创建一个新的 Git 仓库非常简单。进入要进行版本控制的项目文件夹,并执行以下命令:

git init

  这将在当前目录下创建一个名为 “.git” 的子目录,用于存储版本控制相关的信息。

建立远程仓库

  创建远程仓库可以让同一网络下其他用户使用此仓库进行pull和push

mkdir /path/to/remote/repo.git
cd /path/to/remote/repo.git
git init --bare

  在本地仓库中添加远程仓库,并将代码推送到它:

git remote add origin remote-repo-url
//或者将远程仓库克隆
git clone  用户名@ip:/路径.git
//每次修改代码需要先git pull更新为最新代码
git push -u origin master

本地分支合入远程仓库分支

如果在远程仓库中创建了多个分支,并且想要将本地代码推送到其中的特定分支,需要进行一些额外的步骤。以下是将本地代码推送到指定分支的方法:

  1. 首先,确保已经克隆了远程仓库到本地,并通过以下命令查看所有分支的列表:
git branch -r

这将显示远程仓库中的所有分支列表。

  1. 创建并切换到要推送代码的本地分支。如果这个分支在本地不存在,可以通过以下命令在本地创建它并切换到该分支:
git checkout -b local-branch-name origin/remote-branch-name

请将 “local-branch-name” 替换为本地分支的名称,“remote-branch-name” 替换为远程仓库中相应分支的名称。

  1. 在本地分支上进行修改或添加新文件。

  2. 将修改或新文件添加到暂存区:

git add .
  1. 提交修改:
git commit -m "Your commit message"
  1. 将本地分支的更改推送到远程分支:
git push origin local-branch-name:remote-branch-name

请将 “local-branch-name” 替换为要推送的本地分支的名称,“remote-branch-name” 替换为远程仓库中相应分支的名称。

  1. 如果远程分支不存在,可以使用以下命令推送并在远程仓库中创建分支:
git push origin local-branch-name:remote-branch-name

此命令将会在远程仓库中创建一个新的分支,该分支将与本地的分支同步。

请注意,推送代码时可能会遇到一些问题,特别是在多人协作开发的情况下。在推送代码之前,请确保已经与其他开发者沟通,并了解如何正确地推送代码到正确的分支上。在多人协作开发中,推荐使用 Pull Request 或者其他合并流程来确保代码的稳定性和一致性。

基本工作流程

Git 的基本工作流程如下:

  1. 修改文件:在项目文件夹中进行代码编写或修改。

  2. 暂存文件:将要提交的修改暂存到暂存区,使用以下命令可以将所有修改添加到暂存区:

git add .

或者,如果只想暂存特定文件,可以使用:

git add file1 file2
  1. 提交更改:将暂存区的修改提交到版本库,并添加一个描述性的提交消息:
git commit -m "Add new feature" 
  1. 推送到远程仓库:如果与其他开发者协作,可以将提交推送到共享的远程仓库:
git push origin master

克隆某一分支

如果想要克隆远程仓库中的特定分支,可以使用以下命令:

git clone -b branch-name remote-repo-url

例如,克隆名为 “development” 的分支:

git clone -b development https://example.com/your-repo.git

代码回滚

在开发过程中,有时可能需要回滚代码到以前的版本。Git 提供了多种方法来实现这一点。以下是一些常用的回滚技巧:

  1. 回滚到上一个提交版本:
git revert HEAD
  1. 回滚到指定的提交版本:
git revert commit-hash
  1. 回滚到上一个提交之前的状态,保留更改但不提交:
git reset HEAD^
  1. 回滚到指定的提交版本,放弃该版本之后的所有更改:
git reset commit-hash

请注意,git revert 不会修改历史提交,而是创建一个新的提交来撤消指定的更改;而 git reset 会改变提交历史,慎用。

常用命令与使用例子

  1. git status: 查看工作区的状态,显示已修改但未暂存和已暂存的文件。

  2. git log: 查看提交历史,显示提交的作者、日期和提交消息。

  3. git diff: 查看工作区和暂存区之间的差异。

  4. git branch: 查看本地分支列表,并显示当前所在分支。

  5. git checkout: 切换分支或还原文件到特定版本。

  6. git pull: 从远程仓库拉取代码并合并到当前分支。

  7. git merge: 将指定分支的更改合并到当前分支。

  8. git clone: 克隆远程仓库到本地。

示例

场景1: 创建新功能分支并合并到主分支

# 创建新功能分支
git checkout -b new-feature# 在新功能分支上进行修改
# ...# 将新功能分支合并到主分支
git checkout master
git merge new-feature# 删除新功能分支(如果不再需要)
git branch -d new-feature

场景2: 与团队合作

# 从远程仓库克隆项目到本地
git clone https://example.com/your-repo.git# 创建并切换到新分支
git checkout -b my-feature# 编辑文件
# ...# 将修改提交到本地仓库
git add .
git commit -m "Implement new feature"# 将修改推送到远程仓库
git push origin my-feature

http://www.mrgr.cn/p/57354667

相关文章

MySQL5.7 与 MariaDB10.1 审计插件兼容性验证

这是一篇关于发现 MariaDB 审计插件导致 MySQL 发生 crash 后,展开适配验证并进行故障处理的文章。 作者:官永强 爱可生DBA 团队成员,擅长 MySQL 运维方面的技能。热爱学习新知识,亦是个爱打游戏的宅男。 本文来源:原创…

简单认识redis高可用实现方法

文章目录 一、redis群集三种模式二、 Redis 主从复制1、简介2、作用:3、流程:4.配置主从复制 三、Redis 哨兵模式1、简介2、原理:3、作用:4、哨兵结构由两部分组成,哨兵节点和数据节点:5、故障转移机制:6、…

软件外包开发的后台开发语言

在软件外包开发中,后台语言的选择通常取决于项目需求、客户偏好、团队技能和开发效率。今天和大家分享一些常用的后台语言及选择它们的原因,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

【利诱和强制分享下载】规则修改指引

代码审核环节,将会对小程序运营的内容进行核实是否存在阻断功能,损害用户体验。 常见利诱诱导类型: 1、利诱下载APP 小程序内出现不断弹窗、频繁提示诱导用户下载APP,强制用户必须下载APP才能体验完整功能服务。 示例&#xf…

数字化时代,如何做好用户体验与应用性能管理

引言 随着数字化时代的到来,各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务,这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责,且使用多种运维工具,因此,当…

【Spring】Spring 中事务的实现

事务定义:将⼀组操作封装成⼀个执⾏单元(封装到⼀起),要么全部成功,要么全部失败 Spring 中的事务操作分为两类: 编程式事务(⼿动写代码操作事务)。声明式事务(利⽤注解…

【hive】Install hive using mysql as hive metadata service

文章目录 一. Requirements二. Installing Hive from a Stable Release三. Running Hive四. Running Hive CLI五.Running HiveServer2 and Beeline1. 下载安装mysql2. 下载mysql驱动3. 配置hive-site.xml4. 初始化元数据库5. 通过beeline进行连接 一. Requirements Users are s…

php 生成连续递增的Excel列索引 可以控制多少列

今天遇到需要生成对应的下拉&#xff0c;下拉的类 需要PHP 输出一个数组 如 A、B、C、D 到Z 列后 Excel 的列就变成 AA 、AB、 AC 依次类推 查询得知 Excel 最大列数 16384 最大行数 1048576 下面演示3000列或行 <?php$idx [idx > 0];for ($i …

OpenCV4.3 Java 编程入门:透明度与抠图

1. 基础知识 JPG 格式图片有损压缩和不支持半透明&#xff0c;如果想在图片上添加透明通道&#xff0c;一定不要用 JPG 格式的图片&#xff1b;PNG&#xff1a;既支持3通道RGB图像&#xff0c;也支持4通道RGBA图像&#xff08;红色、绿色、蓝色和透明度&#xff09;&#xff1…

NOSQL之Redis配置及优化

目录 一、关系型数据库 二、非关系型数据库 三、关系型数据库和非关系型数据库区别 1、数据存储方式不同 2、扩展方式不同 3、对事务性的支持不同 四、Redis简介 五、Redis优点 &#xff08;1&#xff09;具有极高的数据读写速度 &#xff08;2&#xff09;支持丰富的…

AI 绘画Stable Diffusion 研究(一)sd整合包v4.2 版本安装说明

部署包作者:秋葉aaaki 免责声明: 本安装包及启动器免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;需要详细了解StableDiffusion的朋友&#xff0c;可查看我之前的这篇文章&#xff1a; 最…

9条建议告诉你如何正确处理PCB设计布线

一、关于PCB布线线宽 1、布线首先应满足工厂加工能力&#xff0c;首先向客户确认生产厂家&#xff0c;确认其生产能力&#xff0c;如图1所示。如客户无要求&#xff0c;线宽参考阻抗设计模板。 图1 PCB板厂线宽要求 2、阻抗模板&#xff0c;根据客户提供的板厚及层数要求&…

页面生成图片或PDF node-egg

没有特别的幸运&#xff0c;那么就特别的努力&#xff01;&#xff01;&#xff01; 中间件&#xff1a;页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…

[论文笔记] CLRerNet: Improving Confidence of Lane Detection with LaneIoU

Honda, Hiroto, and Yusuke Uchida. “CLRerNet: Improving Confidence of Lane Detection with LaneIoU.” arXiv preprint arXiv:2305.08366 (2023). 2023.05 出的一篇车道线检测的文章, 效果在CULane, CurveLanes SOTA 文章目录 简介LaneIoULineIoU存在问题为什么使用LaneIo…

06. 管理Docker容器数据

目录 1、前言 2、Docker实现数据管理的方式 2.1、数据卷&#xff08;Data Volumes&#xff09; 2.2、数据卷容器&#xff08;Data Volume Containers&#xff09; 3、简单示例 3.1、数据卷示例 3.2、数据卷容器示例 1、前言 在生产环境中使用 Docker&#xff0c;一方面…

记一次sql注入分析与绕过【一】

下面是来自今天的项目&#xff0c;简单记录一下 手工注入 加单引号sql报错 sql语句如下&#xff0c;可见参数id原本未被引号包裹 SELECT DISTINCT u.* FROM t_user u WHERE u.name like %1% and u.account like %1% and u.state ? order by id desc limit 0,20 多方尝试…

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GRNN广义回归神经网络多输入单输出回归…

Android 面试题 应用程序结构 九

&#x1f525; 核心应用程序 Activity五个状态&#x1f525; Starting-> running-> paused-> stopped-> killed 启动状态&#xff08;Starting&#xff09;&#xff1a;Activity的启动状态很短暂&#xff0c;当Activity启动后便会进入运行状态&#xff08;Running…

HTTP协议+GET/POST区别

1. web开发流程 &#xff08;1&#xff09; HTML、CSS、JS、图片等资源通过浏览器进行整合&#xff0c;最终渲染出所需画面。 &#xff08;2&#xff09;浏览器对Web服务器进行资源请求 浏览器通过url请求资源。【HTTP协议、URL&#xff1a;确定唯一的一个资源】 浏览器请求…

【Linux】进程轻松入门

目录 一&#xff0c; 冯* 诺依曼体系结构 1&#xff0c;存储结构 ​编辑 二&#xff0c; 操作系统 1&#xff0c;概念 2&#xff0c;设计OS的目的 3&#xff0c;定位 4&#xff0c;如何理解 "管理" 5&#xff0c; 总结 三&#xff0c;进程 1. 概念 那么…