git的基本使用

ops/2024/10/18 8:34:30/

版本:软件版本,文件版本,保存重要的历史记录,恢复数据

版本控制软件的基础功能:保存和管理文件,提供客户端工具访问,提供不同版本文件比对功能

一、git基础概念

1.git的三个区域

工作区,暂存区,git仓库

2.git的三种状态

已修改,已暂存,已提交

modified已修改了文件,但还没将修改的结果放到暂存区

staged已暂存,表示对已修改的文件当前版本做了标记,使之包含在下次提交的列表中

committed已提交,表示文件已经安全地保存在本地的git仓库中

3.git的工作流程

a.在工作区中修改文件

b.将想要下次提交的更改进行暂存

c.提交更新,找到暂存区的文件,将快照永久性存储到git仓库

二、安装并配置git

1.下载安装

https://git-scm.com/downloads

2.配置用户信息

git config --global user.name 'xxxxxxx'

git config --global user.email 'xxxxxxx.xxx'

3.检查配置信息

 git config --list --global 查看所有的全局配置项

 git config user.name
 git config user.email

4.获取帮助信息

git help <verb>命令可在浏览器中打开帮助手册 

git help config打开帮助手册 

git config -h获取命令的快速参考

三、获取git仓库的两种方式

1.将尚未进行版本控制的本地目录转换为git仓库
2.从其他服务器克隆一个已存在的git仓库

四、在现有目录中初始化仓库

1在项目目录中,通过鼠标右键打开"Git Bash Here"
2.执行git init 命令将当前的目录转化为git仓库

git init 命令会创建一个名为.git的 隐藏目录,这个.git目录就是当前项目的git仓库,里面包含了初始的必要文件,这些文件是git仓库的必要组成部分。

3.检查文件状态git status

git status命令查看文件处于什么状态,在状态报告中可以看到新建的文件出现在Untracked files(未跟踪的文件)下面,未跟踪文件意味着git在之前的快照中没有这些文件,git不会自动将之纳入跟踪范围,除非明确表示需要git跟踪管理该文件。

以精简方式显示文件的状态,未跟踪文件前面有红色的??标记

git status -s

git status --short

4.跟踪新文件git add

使用git add开始跟踪一个文件。

要跟踪index.html输入命令git add index.html即可。此时再运行git status命令,index.html文件已被跟踪,并处于暂存状态

5. 提交更新git commit

现在暂存区中有一个index.html文件等待被提交到git仓库中进行保存。可以执行git commit命令进行提交,其中-m选项后面是本次的提交消息,用来对提交内容做进一步表述。

提交成功后,再次检查文件的状态。

6.对已提交的文件进行修改

目前,index.html文件已经被git跟踪,并且工作区和git仓库中的index.html文件内容保持一致。当我们修改index.html文件内容之后,再次运行git status -s命令

修改过的,没有放入暂存区的文件前面有红色的M标记。

7.暂存已修改的文件git add

git add命令有3 个功能

a.跟踪新文件

b.把已跟踪的,且已修改的文件放到暂存区

c.把有冲突的文件标记为已解决状态

8.提交已暂存的文件git commit -m "提交消息"

再次运行git commit -m "提交消息"命令,即可将暂存区中的index.html的快照提交到git仓库中进行再次保存。

9.撤销对文件的修改

把工作区中对应文件的修改,还原成git仓库中所保存的版本。

操作的结果:所有的修改会丢失,且无法恢复,慎重操作

git checkout -- index.html

10.向暂存区中一次性添加多个文件git add .

git add .

将新增和修改后的文件加入暂存区

11.取消暂存的文件

git reset HEAD 要移出的文件名称

12. 跳过使用暂存区域git commit -a -m '"描述消息"

git标准的工作流程是工作区→暂存区→ git仓库,但有时这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到git仓库,这时候git仓库工作流程简化为了工作区→ git仓库。

在提交的时候,给git commit 加上 -a,git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。

git commit -a -m '"描述消息"

13.移除文件git rm -f index.html

a.从git仓库和工作区中同时移出对应的文件

git rm -f index.html

b.只从git仓库中移出指定的文件,但保留工作区中对应的文件

git rm --cached index.html

14.忽略文件

文件.gitignore的格式规范

a.以#开头的是注释

b.以/结尾的是目录

c.以/开头防止递归

d.以!开头表示取反

e.可以使用glob模式进行文件和文件夹的匹配

glob模式是指简化了的正则表达式:*匹配零个或多个任意字符;[abc]匹配任何一个列在方括号的字符;?只匹配一个任意字符;[0-9]在方括号中使用短划线分割两个字符,表示所有在这两个字符范围内的都可以匹配;两个**表示匹配任意中间目录

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*node_modules
dist
dist-ssr
*.local# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
15.查看提交历史git log

git log 按照时间先后顺序列出所有的提交历史,最近的提交排在最上面

git log -2 只展示最新的两条提交记录,数字可以按需进行填写

git log -2 --pretty=oneline在一行上展示最近两天提交历史的信息

16.回退到指定的版本

git log --pretty=oneline在一行上展示所有的提交历史

git reset --hard <CommitID>根据指定的提交ID回退到指定版本

git reflog --pretty=oneline在旧版本中使用,查看命令操作的历史

git reset --hard <CommitID>再根据最近提交的Id,跳转到最新版本

五、本地仓库和远程仓库进行关联

 1.新建空白远程仓库

官网:https://gitee.com/

2.远程仓库的两种访问方式(HTTPS,SSH)

a.HTTPS:零配置,但是每次访问时,需要重复输入Github的账号和密码才能访问成功

b.SSH:需要进行额外的配置,但是配置成功后,每次访问仓库时,不需要重复输入Github的账号和密码 

3.基于HTTPS将本地仓库上传至Github

a.将本地仓库和远程仓库进行关联,并把远程仓库命名为origin

git remote add origin https://github.com/xxx/xxx.git

b.将本地仓库中的内容推送到远程的origin仓库中

git push -u origin master(第一次推送)

将本地最新代码同步到远程仓库中

git add 文件

git commit -m '描述信息'

git push origin master

4.生成SSH key

SSH key作用:实现本地仓库和Github之间的免登录的加密数据传输

两部分组成:id_rsa(私钥文件,存放于客户端的电脑中),id_rsa.pub(公钥文件,需要配置到github中)

打开git bash,输入ssh-keygen -t rsa -b 4096 -C '''注册邮箱',连续敲击回车3次,即可在C:/User/用户名文件夹/.ssh目录中生成id_rsa和id_rsa.pub两个文件

5.配置SSH key

打开id_rsa.pub文件,复制里面的内容

在浏览器中登录git,点击头像jian'tou→设置→安全设置/SSH公钥→添加公钥

 6.检查github的SSH key是否配置成功

打开git bash,输入ssh -T git@github.com命令回车

7.基于SSH将本地仓库上传到github

git init 初始化本地仓库

git status -s

git add .

git status -s

git commit -m '描述信息'

git status -s

新建远程仓库

a.将本地仓库和远程仓库进行关联,并把远程仓库命名为origin

git remote add origin git@github.com:xxx/xxx.git

b.将本地仓库中的内容推送到远程的origin仓库中

git push -u origin master(第一次推送)

六.将远程仓库克隆到本地git clone 

从其他服务器克隆一个已存在的git仓库

七、分支

1.master分支

在初始化git仓库时,git默认已经创建了一个名为master的分支。叫做主分支。

2.功能分支

程序员不能直接在master分支上进行功能开发,功能分支是专门用来开发新功能的分支,是临时从master分支上分叉出来的,当新功能完成后,最终需要合并到master主分支上。

3.查看分支列表git branch
4.创建新分支git branch 分支名称

基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样

执行完创建分支命令之后,用户当前所处的还是master分支

5.切换分支git checkout 分支名称

6.分支的快速创建和切换git checkout  -b 分支名称

7.合并分支git merge

切换到master分支,在master分支上运行git merge命令

git checkout master

git merge login

8.删除分支git branch -d 分支名称

9.遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,git就没法直接合并它们。需要打开这些包含冲突的文件然后手动解决

git checkout master

git merge reg

打开包含冲突的文件,手动解决冲突之后,再执行如下命令

git add .

git commit -m "解决了分支合并冲突"

八、远程分支操作

1.将本地分支推送至远端分支git push origin 分支名称

如果是第一次将本地分支推送至远程仓库需要运行如下命令,只在第一次推送的时候-u

git push -u 远程仓库的别名 本地分支名称:远程分支名称

如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化

git push -u origin 分支名称

git push origin 分支名称

2.查看远程分支列表

git remote show 远程仓库名称

3.跟踪分支git checkout 远程分支名称

从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程仓库分支名称相同

git checkout 远程分支名称

从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名

git checkout -b 本地分支名称 远程仓库名称/远程分支名称

4.拉取远程分支最新的代码

git pull

5.删除远程分支git push 远程仓库名称 --delete 远程分支名称

git push origin --delete login

九、其他

这些是在各种情况下使用的常见Git命令:

1.启动一个工作区(参见:git帮助教程)

clone将存储库克隆到一个新目录

init创建一个空的Git存储库或重新初始化一个现有的Git存储库

2.处理当前的变更(参见:git help everyday)

add将文件内容添加到索引中

mv移动或重命名文件、目录或符号链接

restore恢复工作树文件

rm从工作树和索引中删除文件

3.检查历史和状态(参见:git帮助修订)

bisect使用二进制搜索来查找引入bug的提交

diff显示提交、提交和工作树之间的更改

grep输出与模式匹配的行

log显示提交日志

show显示各种类型的对象

status显示工作树状态

4.成长,标记和调整你的共同历史

branch列出、创建、删除分支

commit提交将更改记录到存储库

merge将两个或多个开发历史记录连接在一起

rebase在另一个基本提示之上重新应用提交

reset将当前HEAD复位到指定状态

switch开关分支开关

tag创建、列出、删除或验证使用GPG签名的标签对象

5.协作(参见:git帮助工作流)

fetch从另一个存储库获取下载对象和引用

pull从另一个存储库或本地分支提取Fetch并与之集成

push更新远程参考和相关对象

'git help -a'和'git help -g'列出了可用的子命令和一些概念指南。参见'git help <command>'或'git help <concept>'阅读一个特定的子命令或概念。请参阅“git help git”了解系统概述。


http://www.ppmy.cn/ops/124298.html

相关文章

XSS全详解

前言 我们下面进行下一个漏洞——XSS的学习&#xff0c;XSS是常见漏洞之一&#xff0c;算是Web安全必学漏洞。我们之前一直都以CTFHub为主线进行学习&#xff0c;但由于我们对常见漏洞进行强化学习的目的&#xff0c;CTFHub的题目并不能满足我们。为探讨清楚XSS的诸多细节&…

Leetcode 3312. Sorted GCD Pair Queries

Leetcode 3312. Sorted GCD Pair Queries 1. 解题思路2. 代码实现 题目链接&#xff1a;3312. Sorted GCD Pair Queries 1. 解题思路 这一题的话坦率来说没有搞定&#xff0c;后来是找的大佬的代码抄了一下…… 整体来说这道题思路上还是比较暴力的&#xff0c;还是一个二重…

数据结构 -- 跳表

文章目录 概要跳表的结构跳表的查找过程插入操作删除操作补充 概要 跳表&#xff08;Skip List&#xff09;是一种基于链表的数据结构&#xff0c;通过增加多级索引来加速查找、插入和删除操作。它可以看作是链表与二分查找的结合体&#xff0c;能够在保持数据有序的同时&…

探索CI/CD:持续集成与持续部署的基本概念

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已经成为提高开发效率和产品质量的关键实践。本文将详细介绍CI/CD的基本概念、优势以及如何在实际项目中实施CI/CD。 一、什么是持续集成&#xff08;CI&#xff09;&…

ECMAScript与JavaScript的区别:深入解析与代码示例

目录 引言 ECMAScript与JavaScript的定义 ECMAScript JavaScript ECMAScript与JavaScript的关系 区别详解 定义上的区别 功能上的区别 实现上的区别 代码示例 ECMAScript 6 (ES6) 特性示例 箭头函数 模板字面量 JavaScript 特有的扩展 在Web开发中的应用 ECMAS…

【Unity基础】Unity用脚本实现内购(IAP)

本文介绍了如何使用脚本实现内购功能。 先看下脚本&#xff0c;代码中根据执行过程添加了序号。 using UnityEngine; using UnityEngine.Purchasing; using UnityEngine.UI;namespace Samples.Purchasing.Core.BuyingConsumables {public class BuyingConsumables : MonoBeha…

【Android】限制TextView大小并允许滑动

关于TextView大小限制 TextView本身支持大小限制&#xff0c;但只支持固定值 这里改用屏幕比例来判断&#xff0c;按照屏幕剩余空间的一定比例来现在TextView最大尺寸 TextView滑动 当TextView空间不足时&#xff0c;需要通过滑动来查看剩余文本 TextView默认是禁用滑动特…

QTday4

数据库头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QSqlDatabase> //数据库管理类 #include<QSqlQuery> //数据库查询类 #include<QSqlRecord> //记录类QT_BEGIN_NA…