Git使用详解

什么是 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.mzph.cn/news/13853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中的主线程、子线程

在C中,线程是并发执行的最小单位。主线程(main thread)通常是一个程序开始执行时系统自动创建的线程,而子线程(child thread或worker thread)则是由主线程或其他子线程创建的线程。 并发执行,又…

ORBSLAM2第一阶段跟踪课后习题

不定项选择题 (2分) 阅读TrackReferenceKeyFrame()函数,以下说法[错误]的是? A.该函数是地图初始化完成后,第一个使用的跟踪方式 B.该函数中使用词袋,目的是可以加快当前顿与参考帧之间的特征点匹配速度C.BA优化中同时优化了位姿和地图点 D.…

kafka:消费者从指定时间的偏移开始消费(二)

我的前一篇博客《kafka:AdminClient获取指定主题的所有消费者的消费偏移(一)》为了忽略忽略掉上线之前的所有消息,从获取指定主题的所有消费者的消费偏移并计算出最大偏移来解决此问题。 但这个方案需要使用不常用的AdminClient类,而且如果该主题如果是第…

Python的输入:探索不同的输入方法和技巧

Python的输入:探索不同的输入方法和技巧 引言 1.1 Python的输入概述 在编程中,输入是一个非常重要的概念。它允许我们从用户、文件或其他程序中获取数据,以便进行处理、计算或展示。Python提供了多种方法来获取输入,每种方法都…

SpringBoot中的RestTemplate使用笔记

SpringBoot中的RestTemplate使用笔记 为了方便使用,这里我封装成一个工具类来静态调用RestTemplate以下代码是基于SpringBoot2.4.2版本写的案例 需要配置的application.yml如下 server:port: 7024servlet:context-path: /demosession:timeout: 30m #默认会话过期…

redis分布式锁

Redis 作者继续论述,如果对方认为,发生网络延迟、进程 GC 是在步骤 3 之后,也就是客户端确认拿到了锁,去操作共享资源的途中发生了问题,导致锁失效,那这不止是 Redlock 的问题,任何其它锁服务例…

数据库面试题

Mysql篇 (1)请你解释下mysql主从同步中的,全同步,异步,以及半同步的三种模式概念? 此题是XX想面试题。 MySQL默认的复制即是异步的: 主库在执行完客户端提交的事务后会立即将结果返给客户端&#xff0c…

Flowable-任务-脚本任务

定义 脚本任务(Script Task)是一种自动执行的活动。当流程执行到达脚本任务时,会执行相应的 脚本,完毕后继续执行后继路线。脚本任务无须人为参与,可以通过定义脚本实现自定义的业务逻辑。 图形标记 脚本任务显示为…

数据结构基础:3.单链表的实现。

单链表的介绍和实现 一.基本概念1.基本结构2.结构体节点的定义: 二.功能接口的实现0.第一个节点:plist1打印链表2创建一个节点3.头插4.头删5.尾插6.尾删7.查找8.在pos之前插入x9.在pos之后插入x10.删除pos位置11.删除pos的后一个位置12.链表释放 三.整体…

UE4/5C++多线程插件制作(二十、源码)

目录 头文件 MultiThreadPlugins.uplugin MultiThreadPlugins.Build.cs MultiThreadPlugins.h MTPPlatform.h MTPManage.h RTPAgendy.h MTPThreadTaskManage.h

C语言每天一练----输出水仙花数

题目&#xff1a;请输出所有的"水仙花数" 题解&#xff1a;所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如, 153是水仙花数, 因为153 1 * 1 * 1 5 * 5 * 5 3 * 3 * 3" #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h&g…

【自动化运维】Ansible常见模块的运用

目录 一、Ansible简介二、Ansible安装部署2.1环境准备 三、ansible 命令行模块3.1&#xff0e;command 模块3.2&#xff0e;shell 模块3.3&#xff0e;cron 模块3.4&#xff0e;user 模块3.5&#xff0e;group 模块3.6&#xff0e;copy 模块3.7&#xff0e;file 模块8&#xff…

【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU

早上百度搜“神经网络KPU”&#xff0c;查到与非网的一篇文章《一文读懂APU/BPU/CPU/DPU/EPU/FPU/GPU等处理器》&#xff0c;介绍各种处理器非常详细&#xff0c;关于“KPU”的内容如下&#xff1a; KPU Knowledge Processing Unit。 嘉楠耘智&#xff08;canaan&#xff09;号…

k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法

k8s证书更新 1. 查看证书过期时间 #通过文件查看证书过期时间 for item in find /etc/kubernetes/pki -maxdepth 2 -name "*.crt";do openssl x509 -in $item -text -noout| grep Not;echo $item;done #通过命令查看证书过期时间 kubeadm certs check-expirationk8…

找不到mfc140u.dll怎么解决

第一&#xff1a;mfc140u.dll有什么用途&#xff1f; mfc140u.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它是Microsoft Foundation Class (MFC)库的一部分。MFC是 C中的一个框架&#xff0c;用于构建Windows应用程序的用户界面和功能。mfc140u.dll包含了MFC库中…

杂谈项——关于我在bw上的见闻,以及个人对二次元游戏行业方面的前瞻

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;今天为大家带来一点不一样的&#xff0c;首先先光速叠一下甲&#xff1a; 在此说明博主并不是一个什么都知道的大佬&#xff0c;只是一个普通的老二次元以及期望以后能…

HCIP重发布实验

目录 实验要求&#xff1a; 步骤一&#xff1a;拓扑设计IP地址规划 拓扑设计 R1 R2 R3 R4 发布路由 R1 R2 R3 R4 双向重发布 在R2和R4 上进行 R2 R4 检查R1 修改开销值选路 择优选择去4.0网段的路径 测试&#xff1a;​编辑 择优选择去32网段的路径 测试&…

【uniapp 获取缓存及清除缓存】

小程序及H5 获取缓存&#xff1a; 使用uniapp中的wx.getStorageInfoSync()方法可以获取当前小程序或H5应用的本地缓存信息&#xff0c;如下所示&#xff1a; let storageInfo uni.getStorageInfoSync() console.log(storageInfo)其中&#xff0c;storageInfo是一个对象&…

短视频矩阵源码/系统搭建/源码

一、短视频矩阵系统开发需要具备以下能力 短视频技术能力&#xff1a;开发人员应具备短视频相关技术能力&#xff0c;如视频编解码、视频流媒体传输等。 大数据存储和处理能力&#xff1a;短视频矩阵系统需要处理大量的视频数据&#xff0c;因此需要具备大数据存储和处理的能力…

JavaScript快速入门:ComPDFKit PDF SDK 快速构建 Web端 PDF阅读器

JavaScript快速入门&#xff1a;ComPDFKit PDF SDK 快速构建 Web端 PDF阅读器 在当今丰富的网络环境中&#xff0c;处理 PDF 文档已成为企业和开发人员的必需品。ComPDFKit 是一款支持 Web 平台并且功能强大的 PDF SDK&#xff0c;开发人员可以利用它创建 PDF 查看器和编辑器&…