Git操作教程

9 篇文章 0 订阅
订阅专栏
本文详细介绍了Git的分支管理,包括分支概念、作用、操作,如master分支、Merge分支、Topic分支的创建与合并。此外,还讲解了如何在分支间切换、合并、删除,以及解决合并冲突的方法。同时,阐述了与远程数据库交互的操作,如pull、fetch和push。最后,涉及了标签的使用及提交的改写技巧,如修改、取消、回退提交。
摘要由CSDN通过智能技术生成


参考 猴子都能懂得GIT入门高级篇

一. 分支

1. 分支概念

1.1 什么是分支

分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响,所以在同一个数据库里可以同时进行多个修改。

1.2 分支的作用

方便多人同时对同一代码进行修改和提交,同时也方便日后对修改和提交的记录进行查看。

1.3 master分支

在数据库进行最初的提交后,Git会创建一个名为master分支,之后的提交在切换分支前会自动添加到master分支里。

2. 分支的运用

2.1 Merge分支

是为了可以随时发布release而创建的分支,还能作为Topic分支的源分支使用。保持该分支的稳定性很重要,如果要进行更改,通常需要先创建Topic分支,而针对该分支,可以使用Jenkins之类的CI工具进行自动化编译和测试。通常,会将master分支当作Merge分支使用

2.2 Topic分支

为了开发新功能或修复Bug等任务而建立的分支,若要同时进行多个修改任务,应该创建多个Topic分支。该分支应该从稳定的Merge分支上创建,修改后,应该将其合并到Merge分支上。

3. 分支的切换

3.1 checkout

git checkout 目标分支名

3.2 HEAD

HEAD指向的是现在使用中的分支的最后一次更新。通常默认指向master分支的最后一次更新。
通过使用**~和^符号**可以指定某个提交的相对位置。通过移动HEAD,可以变更使用的分支。
~和^的用法

3.3 stash

还未提交的修改内容以及新添加的文件,留在索引区域或工作树的情况下切换到其他的分支时,修改内容会从原来的分支移动到目标分支。
但如果目标分支上该文件也有修改,checkout会失败。这时要么需要先提交修改内容,要么需要使用stash暂时保存修改内容然后再切换分支。
stash是临时保存文件修改内容的区域。stash可以暂时保存工作树和索引里还没提交的修改内容,您可以事后再取出暂存的修改,应用到原先的分支或其他的分支上。
在这里插入图片描述

4. 分支的合并

点击查看merge和rebase合并的异同点

5. 分支的常见操作

5.1 新建git库

git init
在这里插入图片描述

5.2 新建分支

查看本地分支:git branch
查看远程分支:git branch -a
新建分支:git branch branchname

5.3 切换分支

切换到已存分支:git checkout branchname
创建新的分支并切换:git checkout -b branchname

5.4 添加修改并提交

添加修改:git add filename
提交修改:git commit -m "commit description"
一般commit description具有如下格式:
TicketNo:xxxxxx
Description: xxxxxxx
Team:OTHERS
Feature or Bugfix:Bugfix
Binary Source:No

5.5 合并分支

将指定分支导入到HEAD指向的分支,即当前分支:git merge branchname
例如将issue1分支的内容修改合并到master分支上,需要做如下操作:

  • 切换到master分支:git checkout master
  • 执行合并指令:git merge issue1

则前后分支情况的变化如下:
操作前:
在这里插入图片描述
操作后:
在这里插入图片描述

5.6 删除分支

删除本地指定分支:git branch -d branchname
删除远程指定分支:git push origin --delete branch_name或者git branch -dr remote_server/branch_name

5.7 并行操作

例如基于master分支某节点创建了issue2和issue3分支:
git branch issue2;
git branch issue3;
git checkout issue2;

在这里插入图片描述

依次切换到issue2和issue3分支上,并对同一文件同一位置作修改和提交后,分支情况如下:
在这里插入图片描述

5.8 解决合并冲突

把步骤6中issue2和issue3中的修改合并到master分支上,需要:
切换到master分支上:git checkout master
使用merge方式合并issue2分支:git merge issue2
执行的是fast-forward的合并方式
在这里插入图片描述
接着合并issue3分支:git merge issue3
自动合并失败,因为在同一文件同一行进行了修改,所以产生了冲突:

在这里插入图片描述
需要解冲突,做如下修改:

在这里插入图片描述
因为这次合并中修改了冲突部分,所以会重新创建合并修改的提交记录,这种合并不是fast-forward合并了,而是non fast-forward合并方式。
在这里插入图片描述

5.9 使用rebase合并

使用rebase方式合并issue3分支会使提交的历史记录更加简洁,现在暂时先取消刚刚的合并:
git reset --hard HEAD~
在这里插入图片描述
切换到issue3分支后,对master分支执行rebase:
git checkout issue3
git rebase master
会提示有冲突,和merge合并方式时一样需要解冲突,解冲突后提交不是使用commit命令,而是执行rebase命令指定 - -continue选项,若要取消rebase,指定 - -abort选项。
git add modified_file.txt
git rebase --continue后分支情况如图:
在这里插入图片描述
此时,就可以在master分支上使用fast-forward方式合并issue3分支了:
git checkout master
git merge issue3

rebase合并方式最后的文件修改内容和merge合并方式是一样的,但是历史记录更加简洁:
在这里插入图片描述

二. 远端数据库

在这里插入图片描述
远程库、本地库、本地暂存区、本地工作空间

图片来源: http://3ms.huawei.com/km/blogs/details/5946823

1. pull

git pull <远程主机名> <远程分支名>:<本地分支名>
从远程主机的远程分支拉取最新内容到本地分支
会从指定的远程分支拉取最新内容到本地分支,并且自动合并到当前分支,相当于git fetch 和 git merge结合体

git pull --rebase
拉取当前分支对应的远程分支上的最新代码,并合并到本地分支
与上面的指令区别是拉取本地分支对应的远程分支上的代码到本地,而不是指定远程分支

如果远程分支与本地分支具有冲突,将不能实现合并,需要解冲突后才能合并
在这里插入图片描述

2. fetch

执行fetch可以取得远程数据库的最新历史记录,取得的提交会导入到没有名字的分支,这个分支可以从FETCH_HEAD节点切换。
在这里插入图片描述
命令:git fetch remote_server_name
查看remote_server: git remote -v

3. push

git push <远程主机名> <本地分支名>:refs/for/<远程分支名>
常用:git push origin HEAD:refs/for/<远程分支名> 
HEAD指向的就是当前分支上最新的一次提交。
远程分支如果没有指定,则会推送到本地分支对应的远程分支上,没有则会创建一个。

三. 标签

1. 概念

在这里插入图片描述

2. 标签操作

添加标签:

  • 添加轻标签:
    添加一个tag在当前的commit(HEAD):git tag tag_name
    添加一个tag在指定的commit:git tag tag_name commit_id
  • 添加注解标签:
    使用-a选项来添加注解标签,使用-m选项添加注解:git tag -am "description for this tag"

列出所有标签:git tag
显示标签的列表和注解:git tag -n
删除本地tag:git tag -d tag_name
删除远程tag:git push origin :refs/tags/tag_name
查看tag信息:git show tag_name
提交指定tag:git push remote_server_name tag_name
提交所有的tags:git push remote_server_name --tags
新建一个分支,指向某个tag:git checkout -b branch_name tag_name
查看带有标签的git log:git log --decorate
在这里插入图片描述

四. 改写提交

1. 修改最近一次的提交

指定amend选项执行提交的话,可以修改同一个分支最近的提交内容和注解:git commit --amend
主要使用场合:

  • 添加最近提交时漏掉的档案
  • 修改最近提交的注解

2. 取消过去的提交(否定)

在这里插入图片描述
创建否定指定提交的commit的命令:git revert commit_id

3. 放弃提交(回退)

使用reset命令来回退到指定的commit节点上,执行回退时可以根据影响的范围而指定不同的模式,可以指定是否复原索引或工作树的内容。
在这里插入图片描述
在这里插入图片描述
上表中索引指的就是暂存区,工作树指的就是工作区
主要使用场合:

  • 复原修改过的索引的状态(mixed)
  • 彻底取消最近一次的提交(hard)
  • 只取消提交(soft)

常用指令:
重置暂存区和工作区,回退到上次提交的指令:git reset --hard或者git reset --hard HEAD~1
重新还原到reset前的状态:git reset --hard ORIG_HEAD
回退到指定commit,只重置暂存区,工作区不变:git reset commit_id
回退到指定commit,重置暂存区和工作区:git reset --hard commit_id
重置当前分支的HEAD为指定commit,但是保持暂存区和工作区不变:git reset --keep commit_id

4. 提取提交(挑单)

在这里插入图片描述
选择一个commit,合并进当前分支:git cherry-pick commit_id

5. 汇合提交

在这里插入图片描述
实例:
在这里插入图片描述
汇合当前HEAD和过去指定的commit节点一起提交:git rebase -i HEAD~~
在这里插入图片描述

使用rebase -i 修改提交
在这里插入图片描述
在这里插入图片描述

GitLab使用流程
08-11
GitLab使用流程
Git简易教程(木有高深内容)(转)
02-26 533
git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 创建新仓库 创建新文件夹,打开,然后执行  git init 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository  如果是远端服务器上的仓库,你的命令会是这个样子: git clone username@host:/path/to/
提交MR这个词儿您知道是什么意思吗?
最新发布
liwenxiang629的博客
09-02 1151
作为测试的同学,是不是经常会听研发同学说提交MR呢?那么究竟什么是提交MR呢?在这篇文章中会告诉大家! 在Git中,提交MR(Merge Request,合并请求)是在进行协作开发的一种常见方式,允许开发者向代码仓库的主分支提交自己的代码修改,并请求审核和合并。
github merge request(MR)流程说明
Alaska_State的博客
12-09 9299
1. 每次新增功能,要基于master分支创建新分支 git操作:确认当前处于master分支, git checkout -b 【新分支名】 2. 在网站上发起MR 在新分支修改完代码后,在请求合并页面,点击“新建”发起MR流程;源分支即新建的分支,目标分支为master分支 3. MR评审要求 需要自验材料:视频或图片 + 测试链接 尽量保持 一个功能一次commit;合并commit可通过rebase命令实现: git rebase -i 【commit ID】(rebase到要合并的co
git提交MR完整flow
qq_44818816的博客
09-03 1197
git提交MR完整flow和其他常用命令
gitlab拉取代码、提交代码、提MR流程
热门推荐
Delicia_Lani的博客
12-18 2万+
以前在小公司实习,只需要简单提交代码,没有涉及代码分支,请求合并分支等,现在入职到大公司,代码规范要求较高,且多人协作开发,这一必须的技能要会,手忙脚乱之余,终于搞懂了整个流程。 第一个疑问:我从gitlab上面拉代码的时候要不要切分支? git clone代码之前,可以直接拉取master分支上的代码,master分支的代码要求时刻处于部署的状态,是完整的。 代码拉下来之后,本地代码也...
git操作教程
11-29
Git 操作教程旨在引导初学者快速掌握 Git 这一强大的分布式版本控制系统。Git 自2008年以来,随着 GitHub 的兴起,已经成为众多开源项目首选的版本控制工具,无论是 jQuery、PHP 还是 Ruby 等知名项目,都依赖于 Git...
Git 操作教程完整资源
08-19
这是一份详尽而系统的Git操作教程资源,专为希望深入掌握Git版本控制系统的开发者、软件工程师及IT专业人士设计。本教程Git的基础概念讲起,逐步引导学习者理解Git的分布式架构、工作流程以及核心命令。
Git全套教程文档,git操作教程这一个文档就够了
01-07
包含Git全套教程,从0到git大神,包含内容有: 1.版本管理工具概念2.版本管理工具介绍 3.Git发展简史4.Git的安装 5.Git工作流程 6.Git的基本使用01-TortoiseGit 操作本地仓库 7.Git的基本使用02-TortoiseGit操作本地...
git官方教程(中文版和英文版)
10-27
1. 类型: 文字版pdf,代码和内容可直接复制,非图片扫描版。 2. 简介: 这是官方git教程,资源压缩包里自带中文版和...3. 内容: 这是初学者学习git的最好教程,主要讲解了git的原理,以及git命令的使用。非常地amazing!
实际开发中完整的git操作流程
丑小鸭变黑天鹅的博客
07-26 5089
实际开发中完整的git操作流程一、获取 Git 仓库1、在现有目录中初始化仓库2、克隆现有的仓库3、实际操作二、记录每次更新到仓库1、检查当前文件状态2、跟踪新文件3、暂存已修改文件4、查看已暂存和未暂存的修改5、提交更新6、移除文件7、查看提交历史8、撤消操作9、取消暂存的文件10、撤消对文件的修改三、远程仓库的使用1、查看远程仓库2、添加远程仓库3、从远程仓库中抓取与拉取4、推送到远程仓库5、查看远程仓库6、远程仓库的移除与重命名四、Git 分支1、分支简介2、分支创建3、分支切换4、分支的新建与合并1
基于Gitlab的代码审查流程(Code-Review)方案
03-25
本文档主要介绍了基于Gitlab搭建代码审查平台以及基于Gitlab-CI搭建持续集成平台。本文档最重要的内容是提供了一套基于Gitlab的代码审查流程的可落地的详细操作方案。
GIT的使用
qq_42064119的博客
08-30 215
(1)安装GIT 在网上随便搜索一个下载安装就可以了 (2)使用GIT SSH连接GIT Lab 窗口命令模式: (1)安装Git之后再任意位置右键,点击GIt bash,进入黑窗口,然后输入  ssh-keygen -t rsa   :生成ssh密钥,连敲四个回车就行了,不用按其他的, 这个时候在里面的用户路径之下就会多了个.ssh的文件 (2)找到id_rsa这个文件,然后进...
git操作步骤
qq_36765732的博客
01-15 333
1.初始化 git init 2.关联git线上地址 git remote add origin https://..... 3.拉主线代码 git pull origin master 4.本地代码修改后要先拉下线上的防止与解决冲突 git pull 5.上传本地代码到远程分支上 git add . 6.将代码上传到本地分支上 git commit -m ''提交代码描述"...
git学习第二篇(git最基本的流程)
mr~li的博客
10-31 393
众所周知,平时我们在工作时,提交代码的流程基本上都是: ①修改/添加新文件(一个或者多个) ②git add *** ③git commit -m "***" 解释: ①:一般情况下,都是人为执行git add命令后,git会将我们做的修改直接添加到了暂存区 ②:但是大多数人都不知道的是,git在将代码添加到暂存区之前,还做了一步,那就是将代码添加到版本库,也就是生成git对象(也就是说,当我们执行git add命令时,git首先会将代码生成git对象添加到版本库,这里对多少个文件做了修改,就会响
Git】005-Git的工作原理(核心)
訾博(ZiBo)的博客
10-27 210
目录 一、工作区域 Git本地有三个工作区域: 文件在这四个区域之间的转换关系如下: 本地的三个区域确切的说应该是git仓库中HEAD指向的版本: 二、工作流程 一、工作区域 Git本地有三个工作区域: 工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory); 如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域; 提交顺序:工作目录——暂存区——资源库——远程仓库;
git开发流程
m0_61983575的博客
03-01 532
dev:开发环境,从feature去mrtest: 测试环境,从feature去mrpre: 预生产环境,从master去mr,为了验证master代码master: 生产环境,从feature去mrfeature: 开发分支----小功能,创建的时候,从master拉取hotfix: bug修复分支,从,master拉取。
Git从入门到精通
Umbrella Corporation
10-12 1万+
集中式与分布式 中心服务器 工作流 分支实现 冲突 Fast forward 分支管理策略 储藏(Stashing) SSH 传输设置 .gitignore 文件 Git 命令一览 参考资料 # 集中式与分布式 Git 属于分布式版本控制系统,而 SVN 属于集中式。 集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 集中式版本控制有安全性问题...
Git 上传项目过程
Mr_linjw的专栏
05-31 630
Git 上传项目过程   1、登录GitHub新建repository (如:seatour) 2、将来repository拉到本地:git clone https://github.com/mrlinjw/seatour.git 3、之后将你的代码copy到这个目录中。 4、git add -A  此操作是把Test文件夹下面的文件都添加进来 5、git init  把这个目
写文章

热门文章

  • 如何实现两个电脑之间通过以太网(网线)实现文件互传 7349
  • 如何在python中调用Java函数? 5085
  • perl依赖包安装方法 3320
  • 如何使用python下载和解压网上压缩包【requests模块】 3292
  • 如何使用python连接clickhouse数据库 2184

分类专栏

  • 数据库 2篇
  • 计算机网络 2篇
  • C++ 7篇
  • C++工程技能 4篇
  • 软件工程技能 9篇
  • 学海无涯 6篇
  • Android 16篇
  • Java 11篇
  • 数结与算法 4篇
  • Python 6篇
  • Python工程技能 3篇

最新评论

  • Java泛型

    CSDN-Ada助手: 如何定义和调用 Python 函数?

  • 【Java反射一】反射机制介绍

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。

  • 【四大组件】-- 内容提供器 ContentProvider

    普通网友: 写的很详细,感谢博主的分享。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 【安卓跨进程通信IPC】-- Binder

    普通网友: 每当我阅读你的编程博客文章时,我总能感受到你的专业水平和耐心解答的精神。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 【安卓基础】-- 汇总

    CSDN-Ada助手: 如何实现 Android 应用的数据持久化?

最新文章

  • 【性能功耗稳定性分析】
  • 【随手笔记】
  • 【数据结构与算法进阶】1
2024
09月 6篇
08月 2篇
07月 2篇
06月 7篇
05月 1篇
04月 6篇
03月 11篇
02月 3篇
01月 2篇
2023年13篇
2021年18篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家商场美陈猪北碚玻璃钢花盆厂家校园玻璃钢花盆多少钱绿园区玻璃钢雕塑工程电话玻璃钢雕塑的制作过程仿真玻璃钢雕塑鲨鱼福州抽象玻璃钢雕塑联系方式贵州小区玻璃钢雕塑雕塑翻制玻璃钢价格玻璃钢卡通雕塑的意义营业执照能不能加商场美陈哪有卖玻璃钢雕塑浙江玻璃钢商场美陈衢州大型玻璃钢雕塑订做价格宜昌广场玻璃钢雕塑广东玻璃钢花盆设计厂家玻璃钢雕塑设计合作公司江苏户外商场美陈制造山西酒店玻璃钢造型雕塑制作金堂玻璃钢卡通雕塑佛像玻璃钢雕塑哪家好河南多彩玻璃钢雕塑批发耒阳玻璃钢花盆花器大玻璃钢花盆种什么花好看双鸭山玻璃钢雕塑制作厂家商场美陈万圣芜湖商场美陈深圳环保玻璃钢雕塑价位绍兴玻璃钢雕塑摆件售价玻璃钢雕塑装饰作用价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化