Git常用操作

embedded/2024/9/24 13:16:11/

目录

    • 1 初始化
    • 2 仓库
    • 3 四个区域
    • 4 文件状态
    • 5 基本概念
    • 6 特殊文件
    • 7 添加和提交
    • 8 分支
    • 9 合并分支
    • 10 撤销和恢复
    • 11 查看状态
    • 12 stash
    • 13 远程仓库
    • 14 GitFlow
    • 15 参考

1 初始化

查看版本

git -v

配置用户名

git config --global user.name "Zhang Beihai"

配置邮箱

git config --global user.email "zhizi@wto.com"

存储配置

git config --global credential.helper store

2 仓库

创建一个新的本地仓库(省略project-name则在当前目录创建)

git init <project-name>

克隆远程仓库

git clone <url>

3 四个区域

  • 工作区(Working Directory)

资源管理器中实际看到的目录

  • 暂存区(Stage/Index)

暂存区也叫索引,用来临时存放未提交的内容,一般在.git目录下的index中。

  • 本地仓库(Repository)

Git在本地的版本库,仓库信息存储在.git这个隐藏目录中。

  • 远程仓库(Remote Repository)

托管在远程服务器上的仓库,如GitHub、GitLab、Gitee。

4 文件状态

  • 已修改(Modified)

修改了但是没有保存到暂存区的文件

  • 已暂存(Staged)

修改后已经保存到暂存区的文件

  • 已提交(Committed)

暂存区文件提交到本地仓库后的状态。

5 基本概念

  • main/master

    默认主分支

  • origin

    默认远程仓库

  • HEAD

    指向当前分支的指针

  • HEAD^

    上一个版本

  • HEAD~4

    上四个版本

6 特殊文件

  • .git

    Git仓库的元数据和对象数据库

  • .gitignore

    忽略文件,不需要提交到仓库的文件

  • .gitattributes

    指定文件的属性,比如换行符

  • .gitkeep

    使空目录被提交到仓库

  • .gitmodules

    记录子模块的信息

  • .gitconfig

    记录仓库的配置信息

7 添加和提交

添加一个文件到仓库

git add <file>

添加所有文件到仓库

git add .

提交所有暂存区的文件到仓库

git commit -m "message"

提交所有已修改的文件到仓库

git commit -am "message"

8 分支

查看所有本地分支,-r 查看远程分支,-a查看所有分支

git branch

创建一个新分支

git branch <branche-name>

切换到指定分支,并更新工作区

git checkout <branch-name>

切换分支推荐使用

git switch <branch-name>

创建一个新分支,并切换到该分支

git checkout -b <branch-name>

删除一个已经合并的分支

git branch -d <branch-name>

删除一个分支,不管是否合并

git checkout -D <branch-name>

给当前提交打上标签,通常用于版本发布

git tag <tag-name>

9 合并分支

合并分支a到分支b,–no-ff参数表示禁用Fast forward模式,合并后的历史有分支,能看出曾经做过合并,而-ff参数表示使用Fast forward模式,合并后的历史变成一条直线

git merge --no-ff -m "message" <branch-name>
git merge --ff -m "message" <branch-name>

合并&挤压(squash)所有提交到一个提交

git merge --squash <branch-name>

rebase 不会产生新的提交,而是把当前分支的每一个提交都“复制”到目标分支上,然后再把当前分支指向目标分支,而merge会产生一个新的提交,这个提交有两个分支的所有修改。

rebase操作可以把本地未push的分叉提交历史整理成直线,看起来更直观。但是,如果多人写作时,不要对已经推送到远程的分支执行rebase操作。

git checkout <dev>
git rebase <main>

10 撤销和恢复

移动一个文件到新的位置

git mv <file> <new-file>

从工作区和暂存区中删除一个文件

git rm <file>

从索引/暂存区中删除文件,但是本地工作区还在,只是不希望这个文件被版本控制

git rm --cached <file>

恢复一根文件到之前的版本

git checkout <file> <commit-id>

创建一个新的提交,用来撤销指定的提交,后者的所有变化将被前者抵消,并且应用到当前分支。

git revert <commit-id>

重置当前分支的HEAD为之前的某个提交,并且删除所有之后的提交。
–hard 表示重置工作区和暂存区
–soft 表示保留工作区和暂存区
–mixed 默认参数,表示保留工作区,重置暂存区

git reset --mixed <commit-id>

撤销暂存区的文件,重新放回工作区(git add的反向操作)

git restore --staged <file>

11 查看状态

查看仓库状态

git status

查看记录

git log
git log --oneline

查看未暂存的文件更新了哪些部分(工作区VS暂存区)

git diff

工作区VS本地仓库

git diff HEAD

暂存区VS本地仓库

git diff --cached
git diff --staged

查看两个提交之间的差异

git diff <commit-id> <commit-id>
git diff HEAD~ HEAD

查看两个分支之间的差异

git diff <branch_name> <branch_name>

查看仓库文件

git ls-files

查看历史操作记录

git reflog

12 stash

stash操作可以把当前工作现场储藏起来,等以后恢复现场后继续工作。
-u 表示把所有未跟踪的文件一并存储
-a 把所有未跟踪文件和忽略的文件一并存储
save参数表示存储的信息,可以不写

git stash save "message"

查看所有stash

git stash list

恢复最近的一次stash

git stash pop

恢复指定的stash,stash@{2}表示第三个stash,stash@{0}表示最近的stash

git stash pop stash@{2}

重新接受最近一次stash。pop 和 reply 的区别是,pop会把stash内容删除,apply不会。

git stash apply

删除所有stash

git stash clear

13 远程仓库

添加远程仓库

git remote add <remote-name> <remote-url>

查看远程仓库

git remote -v

删除远程仓库

git remote rm <remote-name>

重命名远程仓库

git remote rename <old-name> <new-name>

从远程仓库拉取代码,默认拉取仓库名origin的master/main分支。

git pull <remote-name> <branch-name>

将本地改动的代码rebase到远程仓库最新代码。

git pull --rebase

推送代码到远程仓库。

git push <remote-name> <branch-name>

获取所有远程分支。

git fetch <remote-name>

查看远程分支。

git branch -r

fetch某一个特定的远程分支。

git fetch <remote-name> <branch-name>

14 GitFlow

GitFlow是一种流程模型。

  • 主分支(master/main):代表了项目的稳定版本,每个提交到主分支的代码都是经过测试和审核的。
  • 开发分支(develop):用于日常开发。所有的功能分支、发布分支和修补分支都应该从开发分支派生出来。
  • 功能分支(featue):用于开发单独的功能或者特性。每个功能分支抖音该从开发分支派生,并在开发完成后合并回开发分支。
  • 发布分支(release):用于准备项目的发布。从开发分支派生,并在准备好发布版本后合并回主分支和开发分支。
  • 热修复分支(hotfix):用于修复主分支上的紧急问题。热修复分支应该从主分支派生,修复完成后,合并回主分支和开发分支。

15 参考

https://geekhour.net/


http://www.ppmy.cn/embedded/44446.html

相关文章

EI稳定检索--人文社科类会议(ICBAR 2024)

【ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024) 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 【高录用•快检索&#xff0c;ACM独立出版-稳定快速EI检索 | 往届均已完成EI, Scopus检索】 【见…

对简单工厂模式、工厂方法模式、抽象工厂模式的简单理解

简单工厂模式 三部分组成 抽象类一些抽象类的具体实现类工厂类 把创建对象的任务交给一个工厂类来实现&#xff0c;对业务进行封装。 优点&#xff1a;实现了任务分离&#xff0c;客户端不用关心业务的具体实现&#xff0c;交由工厂来“生产”。 缺点&#xff1a;违背开闭原…

TypeScript 学习笔记(十一):TypeScript 与微服务架构的结合应用

TypeScript 学习笔记(十一):TypeScript 与微服务架构的结合应用 1. 引言 在前几篇学习笔记中,我们探讨了 TypeScript 的基础知识、前后端框架的结合应用、测试与调试技巧、数据库以及 GraphQL 的结合应用。本篇将重点介绍 TypeScript 与微服务架构的结合应用,包括如何使…

521源码-免费手游下载-【烽火中原H5】深度体验:横版网页国战手游及WIN学习手工端

【烽火中原H5】深度体验&#xff1a;横版网页国战手游及WIN学习手工端全面解析,烽火中原H5】横板网页国战手游WIN学习手工端语音视频教程营运后台CDK授权后台, 喜欢国战手游的玩家们&#xff0c;你们期待已久的【烽火中原H5】现已上线&#xff01;这款游戏以横版网页的形式呈现…

基于springboot+vue的社区医院管理服务系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Flutter 中的 NestedScrollViewViewport 小部件:全面指南

Flutter 中的 NestedScrollViewViewport 小部件&#xff1a;全面指南 Flutter 是一个功能丰富的 UI 工具集&#xff0c;它提供了多种布局和控件来帮助开发者构建美观且功能强大的应用。在 Flutter 的滚动控件中&#xff0c;NestedScrollView 是一个特别的存在&#xff0c;它允…

千亿级开源大模型Qwen110B部署实测

近日&#xff0c;通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。 千亿级大模型普通显卡是跑不了推理的&#xff0c;普通人一般也没办法本地运行千亿级大模型。 为了探索千亿级大模型到底需要计算资源&#xff0c;我用云计算资源部署了Qwen1.5-110B-…

raid 磁盘阵列

raid 磁盘阵列&#xff1a; **条带化存储&#xff1a;**数据分散在多个物理磁盘上的存储方式。利用多个磁盘并行读取和写入。 条带化的存储性能和读写性能是最好的。 磁盘的组成方式不同&#xff0c;也就是不同的raid级别&#xff1a; **raid 0&#xff08;条带化存储&#x…