git从入门到卸载

news2024/11/24 21:43:30

git是什么?

从git的官网Git可以找到:

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

Git是一个免费开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

Git易于学习,占地面积小,性能闪电般快。它优于Subversion、CVS、Perforce和ClearCase等SCM工具,具有廉价的本地分支、方便的暂存区和多个工作流等功能。

git的基本原理是什么?

从上图可以知道git分四个部分来记录文件状态

working directory:工作区,开发者直接修改的本地代码树

staging area:暂存区,用于临时保存开发者的改动

repository:本地仓库,安全存放数据的位置,这里有开发者提交所有版本的数据。其中HEAD指向最新放入仓库的版本

以上三个区域又是存储在我们各自工作的本地PC上,git通过.git/目录下的文件进行记录管理

remote repository: 远程仓库,托管代码的服务器 团队都能访问的公告远程服务器(如github)

为什么需要git?

随软件项目的日趋庞大、复杂,需要多版本并行开发,版本控制工具应运而生,而git就是目前最好的分布式版本控制系统。

git如何安装?

访问git官网:Git,找到Downloads,找到适合自己系统的版本,比如Window,电脑是64位就下载64-bit Git for Windows Setup.

git常用命令有哪些?

1.仓库

# 在当前目录新建一个Git仓库 
git init 

# 新建一个目录,将其初始化为Git代码库 
git init [project-name] 

# 从远程仓库下载一个项目 
git clone [url]

2.配置

# 显示当前的Git配置 
git config --list 

# 编辑Git配置文件 
git config -e [--global] 

# 设置提交代码时的用户信息 
git config [--global] user.name "[name]" 
git config [--global] user.email "[email address]"

3.增加/删除文件

# 添加指定文件到暂存区 
$ git add [file1] [file2] ... 

# 添加指定目录到暂存区,包括子目录
$ git add [dir] 

# 添加当前目录的所有文件到暂存区 
$ git add . 

# 删除工作区文件,并且将这次删除放入暂存区 
$ git rm [file1] [file2] ... 

# 停止追踪指定文件,但该文件会保留在工作区 
$ git rm --cached [file]

4.代码提交

# 提交暂存区到仓库区 
$ git commit -m [message] 

# 提交暂存区的指定文件到仓库区 
$ git commit [file1] [file2] ... -m [message]

5.分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 切换到上一个分支
$ git checkout -

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

6.标签

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag]

# 新建一个tag在指定commit
$ git tag [tag] [commit]

# 删除本地tag
$ git tag -d [tag]

# 删除远程tag
$ git push origin :refs/tags/[tagName]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

7.查看信息

$ git status

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 搜索提交历史,根据关键词
$ git log -S [keyword]

# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s

# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 显示指定文件相关的每一次diff
$ git log -p [file]

# 显示过去5次提交
$ git log -5 --pretty --oneline

# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"

# 显示某次提交的元数据和内容变化
$ git show [commit]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

# 显示当前分支的最近几次提交
$ git reflog

8.远程同步

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

9.撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

git怎么和idea结合使用?

安装好Git后,在idea配置路径

idea->Settings->搜索git,配置好Path to Git executable

然后就可以在可视化界面做各种git的操作

git常见问题集锦

1.有些文件不想交由git管理,怎么添加忽略文件?

在项目目录下面新增.gitignore文件,在里面添加需要忽略的文件。例如忽略idea下面的文件可如下配置:

2.已经通过git add . 添加到git管理,又想撤回如何处理?

git reset .

3.已经通过git commit提交到git暂存区,又想撤回如何处理?

# 通过git log查看提交日志,找到上一次提交的commitId
git log 
# 然后通过git reset 撤回到上一次提交
# [--soft | --mixed | --hard] 默认是--mixed:恢复到工作区,--soft:恢复到暂存区,--hard:恢复到上次提交,后面的内容直接从本地删除
git reset [commitId] [--soft | --mixed | --hard]

4.已经通过git push提交到远程仓库,又想撤回如何处理?

和问题3一样的操作

5.git如何进行分支合并?

# 合并指定分支到当前分支

git merge [branch]

6.不小心将别人的分支合并到自己要上线的分支,如何撤回?

# 找到上一次提交的commitId,然后git reset
git reset [commitId] --hard

7.同一个分支里面有很多个提交记录,只想上线其中几个提交的代码,如何处理?

# 选择一个commit,合并进当前分支
git cherry-pick [commit]

Git的学习网站

Git大全:Git 大全 - Gitee.com

Git命令学习:Learn Git Branching

Git在线项目托管网站

github:GitHub: Let’s build from here · GitHub

gitee:Gitee - 企业级 DevOps 研发效能平台

git如何卸载?

找到Git的安装目录,找到unins000.exe,双击拜拜!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/461145.html

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

相关文章

SANGFOR防火墙如何查看现网运行参数

环境: 防火墙 8.0.48 AF-1000BB1510 问题描述: 公司防火墙设备使用2年多了 AF-2000-FH2130B-SC;性能参数:网络层吞吐量:20G,应用层吞吐量:9G,防病毒吞吐量:1.5G,IPS吞…

python基础实战4-python基础语法

1、注释(Comments) 注释用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。 Python解释器在执行代码时会忽略注释,不做任何处理,就好像它不存在一样。 1.1 代码注释介绍 注释就是对代码的解…

计算机组成原理 指令系统(1)

本文是HIT计算机组成原理上课笔记,由于唐书有些内容讲的比较抽象,添加了一些王道的图片加以补充。 回忆计算机的工作过程 代码被编译器翻译成与之对等的机器指令,除了指令之外还会有一些数据同时被放到主存里 机器指令 指令格式 一条指令是…

第十四章 代理模式

文章目录 前言一、静态代理完整代码接口 ITeacherDao (代理类和被代理类都需要实现这个接口)被代理类 TeacherDao代理类 TeacherDaoProxy测试类 Client 二、JDK动态代理完整代码接口 ITeacher实现类TeacherDao代理工厂 ProxyFacyoryclient 测试 三、Cgli…

Java阶段二Day09

Java阶段二Day09 文章目录 Java阶段二Day09DQLSELECT基础查询全部查询WHERE子句连接多个条件ORDER BY子句分页查询在SELECT子句中使用函数在WHERE中使用表达式别名聚合函数 教师总结DQL语言-数据查询语言语法基础查询语法例 WHERE子句例连接多个条件例AND的优先级高于OR IN(列表…

vue使用原生bootstrap-fileinput无效(未解决)

这篇只记录一下踩到的坑,由于时间关系,此问题未解决 起因:要求替换项目框架,原先jq要替换成vue。之前bootstrap中自带的文件上传插件自带很多功能,上传进度条、上传内容预览等非常方便(如图)&a…

Netty核心源码分析(四)心跳检测源码分析

文章目录 系列文章目录一、心跳检测案例二、源码分析1、Netty心跳的三个Handler2、IdleStateHandler源码(1)四个关键属性(2)handlerAdded方法(3)四个内部类 3、读事件的run方法——ReaderIdleTimeoutTask4、…

easyrecovery16最新数据恢复软件密钥使用方法教程

easyrecovery是一款专业的数据恢复软件,其最新版本为easyrecovery2023将于2022年底发布。总之,easyrecovery是一款功能齐全、性能稳定的专业数据恢复软件,无论删除文件、格式化分区或磁盘故障,它都可以提供最高的恢复成功率。值得个人用户选用。此版本在功能和性能上有较大提升…

支持中英双语和多种插件的开源对话语言模型,160亿参数

一、开源项目简介 MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码…

HTB靶机-Lame-WP

Lame 简介: Lame is a beginner level machine, requiring only one exploit to obtain root access. It was the first machine published on Hack The Box and was often the first machine for new users prior to its retirement Tags: Injection, C…

Midjourney 注册 12 步流程教学

原文: https://bysocket.com/midjourney-register/ 先推荐一个 PromptHero 中文官网 https://promptheroes.cn/ :Prompt Heroes 官网是提供 AI 绘画相关提示词中文网站,包括 Midjourney(MJ)、 Stable Diffusion、DALL…

printf,echo,cat指令与输出重定向>,输入重定向<与追加重定向>>等

printf指令的功能(输出/追加重定向) 语法:printf “格式化数据” (>/>>重定向)功能:格式化输出(默认往显示器文件且不带换行符) 实例演示 echo指令的功能(输出/追加重定向) 语法&am…

使用chatgpt分析 too many open files 问题-未验证

java.io.IOException: Too many open files 怎么能定位到时哪行代码出的问题 ? 2023/4/25 19:46:33 当出现类似 "java.io.IOException: Too many open files" 的错误时,通常是因为程序打开了过多的文件句柄(File Handles&#xff…

【操作系统】第四章 文件管理

文章目录 知识体系4.1 文件系统基础4.1.1 文件的基本概念4.1.2 文件控制块和索引节点4.1.3 文件的操作4.1.4 文件保护4.1.5 文件的逻辑结构4.1.6 文件的物理结构 4.2 目录4.2.1 目录的基本概念4.2.2 目录结构4.2.3 目录的操作*4.2.4 目录实现4.2.5 文件共享 4.3 文件系统4.3.1 …

快速部署和测试API:使用APIfox的实战经验分享

最近发现一款接口测试工具--apifox,我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式,更能说明apifox可以做什么。 20分钟学ApiFox接口测试工具,结合30个项目实战讲解!_哔哩哔哩_bilibili20分…

十、v-model的基本使用

一、v-model的基本使用 表单提交是开发中非常常见的功能,也是和用户交互的重要手段: 比如用户在登录、注册时需要提交账号密码;比如用户在检索、创建、更新信息时,需要提交一些数据; 这些都要求我们可以在代码逻辑中…

LVS+KeepAlived高可用负载均衡集群

1. 高可用群集的相关知识 1. 1 高可用(HA)群集与普通群集的比较 普通群集 普通的群集的部署是通过一台度器控制调配多台节点服务器进行业务请求的处理,但是仅仅是一台调度器,就会存在极大的单点故障风险,当该调度器…

【MCS-51】51单片机结构原理

至今为止,MCS-51系列单片机有许多种型号的产品:其中又分为普通型51(8031、8051、89S51)和增强型52(8032、8052、89S52等)。它们最大的区别在于存储器配置各有差异。下面我举例子的都是8051这一系列的单片机…

如何用ChatGPT协助做内容分发?(文本变成直播/音频/视频脚本)

该场景对应的关键词库(14个): 直播博主、直播达人、音频主持人、产品特点、品牌故事、品牌活动、品牌logo、视频主角、画外音解说员、编剧身份、品牌内容分发方向、时长、脚本类型、产品 提问模板: 1、你是一名优秀的美妆达人&am…

零拷贝技术详解

文章目录 零拷贝技术前世数据的四次拷贝与四次上下文切换4 次 copy4 次上下文切换弊端 零拷贝诞生准备--DMA技术DMA 参与下的数据四次拷贝 零拷贝诞生零拷贝技术什么是零拷贝技术?零拷贝的实现方式技术总结1、DMA 技术2、使用 page cache 的 zero copy:3…