百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

git基本用法 git用法教程

bigegpt 2024-10-29 13:01 10 浏览

git 状态

git status 通过可以查看文件的当前状态

Git 在管理文件时,所有文件都具有三种状态,已修改、已暂存、已提交。

Git 在本地仓库中由三部分组成,工作区、暂存区、版本库。

Git 管理的文件夹下都有一个名为 .git 的隐藏文件夹。

对应关系如下:

已修改 → 工作区

已暂存 → 暂存区(.git 文件夹下的 index 文件中)

已提交 → 版本库

git 用户的配置

查看配置信息

git config --list

配置用户名

git config --global user.name “你的名字” 全局配置

配置邮箱

git config --global user.email “你的邮箱” 全局配置

git 暂存区

提交到暂存区

git add 文件名/路径

git add.

git add -A

. 和 -A 两个参数均为全部提交到暂存区,. 只监控修改、添加文件的变化,-A 监控修改、添加、删除文件

删除暂存区

git rm --cached 文件名 在git status 时显示文件未未跟踪状态

git rm --cached . -r 删除全部暂存区

git 版本库

暂存区 提交到 版本库

git commit -m “版本消息”

工作区 提交到 版本库(需要之前添加过暂存区

git commit -a -m “版本信息”

git 提交日志

查看每次commit的记录

git log

git log --oneline 简洁展示

git log --graph --pretty=oneline --abbrev-commit

显示所有分值的提交信息

git 标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签

我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签

a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 推荐一直创建带注解的标签

git 三区比较

工作区和暂存区 当前分支

git diff

工作区和版本库 跨分支比较

git diff 分支名

暂存区和版本库 当前分支

git diff --cached

git撤销操作

撤销操作:将暂存区的代码覆盖工作区的代码

git checkout 文件名 单文件

git checkout . 整个暂存区

不小心将错误代码提交到暂存区,暂存区需要回退上一次暂存区内容(只能是上一次),此时工作区代码不变

git reset HEAD 文件名

git回退版本

查看所有提交的版本,包含分支

reset 方式 回退到指定版本后的所有版本记录被清除

git reset --hard HEAD^ 上一个版本

git reset --hard 指定版本号

git checkout 版本号 文件名

某个文件按指定版本的内容覆盖到工作区和暂存区

revert方式 回退到指定版本不影响已经提交过的版本记录

git分支

举例,项目1是公司的基础架构项目(master),现在要做一个项目2,用到项目1作为基础架构,此时的做法就应该创建一个分支(pro1)

举例,项目1 版本1上线了,根据需求继续开发版本2,但是中途版本1出现bug,在不影响版本2情况下 处理bug

分支命令

查看分支

git branch

创建分支

git branch 分支名

切换分支

git checkout 分支名

创建并切换分支并切换到分支

git checkout -b 分支名

以某个版本未基点创建分支并切换到分支

git checkout -b 分支名 版本号

切换分支之后工作区和暂存区将随之也切换

git合并分支

git merge 指定的分支名

git 解决冲突

当创建分支后,分支和 master 主分支分别提交代码到版本库,此时切换回 master 主分支,合并分支会出现冲突,需手动处理后,重新提交到暂存区并提交到版本库。

需要手动进行冲突处理,保留需要的代码 然后再次提交commit

git 文件忽略

在根目录创建 .gitignore 文件用于记录上传时被忽略的文件夹,内容(可根据需要自行配置)如下:

Git 上传时会自动忽略空文件夹或者文件

git 远程仓库

关联远程仓库

git remote add origin 远程仓库地址

origin:是远程仓库的别称

查看关联的远程仓库

git remote -v

删除远程仓库的关联

git remote rm 地址别名

推送代码到远程仓库

git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:

git push <远程主机名> <本地分支名>

git push origin master

git push origin master:master

将本地的 master 分支推送到 origin 主机的 master 分支

git push -u origin master

如果加上了 -u 参数,以后再次提交时可省略地址别名和分支名称,直接执行下面命令进行提交。

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

git push --force origin master

拉取远程仓库的代码

在提交代码时,如果直接提交到远程仓库,会将当前代码覆盖到远程仓库,如果别人之前也向远程仓库提交了代码,会在远程仓库中造成冲突,所以一般在提交代码之前先拉取远程仓库的代码与本地代码进行合并,并产生一个新的历史记录,若出现冲突,手动处理冲突后再统一提交到远程仓库。

拉取但不合并代码(与 merge 配合,不常用):

git fetch origin master

拉取并合并代码(常用):

git pull origin master

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...