Git使用详细教程

1. cmd面板的常用命令

  • clear:清屏
  • cd 文件夹名称----进入文件夹
  • cd … 进入上一级目录(两个点)
  • dir 查看当前目录下的文件和文件夹(全拼:directory)
  • Is 查看当前目录下的文件和文件夹
  • touch 文件名----创建文件
  • echo 内容 > 创建文件名----创建文件并写入内容
  • rm 文件名----删除文件
  • mkdir 文件夹名称----创建文件夹 mk:make
  • rmdir 文件夹名称----删除文件夹 rm:remove
  • cat 文件名----查看文件内容 :cat .git/HEAD
  • cat 1.txt >> 2.txt 将文件1.txt内容写入到2.txt

2. VIM常用命令

  • i 表示编辑模式
  • esc键 表示退出编辑模式
  • :wq! 表示保存文件并关闭文件
  • vim 文件名 打开文件

git的流程图

请添加图片描述

3. Git和GitHub基础操作(参考资料)

git入门
git常用命令大全
git原理及使用
git工作开发流程
Git Code Review设置与使用
腾讯工工蜂使用文档

4. git安装

1.在终端,检查git是否安装
git --version
2.没有安装的话去,官网,下载git
3.一直点下一步即可
4.安装后在终端检查git是否安装好
5.设置用户名和邮件地址(最好和GitHub的用户名/邮箱保持一致)
git config --global user.name “自己的用户名”
git config --global user.email “自己的邮箱”
#检查是否配置成功
git config --global --list

5. git工作流程图

请添加图片描述

6. 仓库的概念以及如何创建

概念:仓库是源代码的管理中心,每一个项目都会存入对应的仓库,该仓库会对源代码进行管理以及对项目进度进行管理

创建仓库:
1.登录GitHub
2.登录后,页面右上角点击头像
请添加图片描述
3.进入仓库首页,在右上角点击new按钮
请添加图片描述
4.进入新仓库创建页面(仓库命名要求:不能使用中文 ,不能使用大写字母 ,复杂名称使用中横线连接)
请添加图片描述

7. 如何上传代码到GitHub

1.在本地创建项目文件夹test-demo
2.在test-demo文件夹下,创建demo.html/demo.css/demo.js请添加图片描述
3.在根目录下,创建.gitignore文件,用于设置忽略文件,不需要git管理的文件

#直接书写需要被忽略的文件名或者文件夹名称
1.txt

4.打开终端,进行git仓库初始化

git init

请添加图片描述

5.在终端,添加git仓库追踪文件

git add .

6.在终端,提交本地源代码到本地仓库

git commit -m “第一次提交git测试代码”

7.查看本地仓库状态

git status

8.通过https协议,将 本地仓库(在自己电脑上) 和 远程仓库(在github网站上) 进行连接

git remote add origin https://github.com/Ocean490724726/test-demo.git
#查看远程分支
git remote -v
#删除远程分支
git remote rm origin

9.将本地仓库代码 push到 远程仓库(此时可能提示输入用户名和密码:指的是github上的)

git push -u origin master
#以上完整写法:git push --set-upstream origin master:master
#表示1.将代码从本地下流master分支 推送到 远程上流分支master
#表示2:下流master和上流master建立连接,以后直接使用git push即可,默认推送到上流master分支

第一次push之后,输入远程仓库的用户名和密码提示(之后就不会提醒了)请添加图片描述
代码push远程仓库成功提示请添加图片描述

8. 如何将远程仓库代码拉到本地

1.克隆

git clone 远程仓库地址 【本地仓库名称】
git clone https://git.code.tencent.com/git-class-001/git-test.git

9.独自使用git的基本操作

查看提交记录
  • git status 查看当前分支状态
  • git log 查看当前提交记录
  • 结束git log命令:英文状态下按Q就可以了

10.想要修改项目中的文件时,如何进行操作?

1.查看当前分支状态
2.根据两种情况:

  如果都在工作区,未被追踪,
  或者有些在工作区,有些在暂存区(add了)
   git add .

3.此时都在暂存区

  git commit -m “”

4.如果都在本地仓库

  git push -u origin master

11.删除不需要的文件时,如何操作

1.查看当前分支状态

  git status

2.手动删除或者命令行删除文件

  #手动删除:
  命名行删除文件,可以直接进入git commit -m “”
  git rm 文件名

3.查看当前分支状态

  git status

4.追踪修改(命令行删除文件可以跳过该步骤)

  git add .

5.查看当前分支状态

  git status

6.提交修改

  git commit -m “”

7.查看当前分支状态

  git status

12.想要给文件重命名时,如何操作?

  手动重命名

1.查看分支状态

  git status

2.删除重命名前的文件名

  git rm test1.html

3.追踪重命名后的文件名

  git add demo.html

4.查看状态

  git status

5.提交

  git commit -m “手动重命名”

6.查看提交记录

   git log
——————————————————————————————————
  命令行重命名(推荐)

1.重命名

  git mv 原文件名 新文件名
  git mv demo.html test1.html

2.查看状态

  git status

3.提交

  git commit -m “命令行重命名”

4.查看提交记录

  git log

13.想要移动文件到其他位置时候,如何操作

  移动文件,并重命名

1.查看状态

  git status

2.移动文件,并重命名

  git mv 原文件名称 文件夹名/新文件名
  git mv ./test2.html ./home/home2.html

3.查看状态

  git status

4.提交

  git commit -m “移动文件,并重命名”

5.查看状态和提交记录

  git status
  git log
//结束查看log
  q

14. 独自使用git的常见问题及解决方法

文件有变化时,如何查看文件前后变化
方式一:

1.查看指定文件的所有被修改记录

  git log --pretty=oneline home/home2.html

2.根据上面返回的commitId,查看某一次修改详情

  #git show 上面获取的commitid
  git show c1b64f1eb07c3a024957156fc7590fda7676996d

方式二:直接查看

git log -p home/home2.html
q

15.操作失误的情况下,如何实现一键还原到上一次提交状态

所有修改文件都是工作区状态下,撤销修改操作,一键还原

1.查看当前文件状态

  git status

2.一键还原操作失误文件

  git checkout – 文件名
  git checkout – * 一键还原所有文件的操作
  git checkout – test.html test3.html home/test1.html

16. 不再追踪时如何实现撤销追踪操作

当文件已经被add了,处于暂存区,撤销追踪操作

1.查看当前文件状态

  git status

2.撤销追踪操作

  git reset HEAD 文件名
  git reset HEAD test3.html
  本次add的文件撤销到工作区
  git reset HEAD *

3.一键还原到上次提交状态

  git checkout – test3.html

17. 想要回到上一版本或者指定版本时如何进行操作

1.在根目录下,创建version.html 和 v.html两个文件,添加内容(h1 版本1 /h1)视为”版本1“,并提交

  git add .
  git commit -m “版本1”
  git status
  git log --pretty=oneline

2.将内容改为“版本2”,追踪并提交

  git commit -am “版本2”
  git status
  git log --pretty=oneline
执行git commit -am "提交描述"即可将add和commit操作合并, 不需要先git add file 再 git commit -m “提交描述” 了

3.按照第二步骤,继续提交版本3,版本4,版本5

  不要忘记修改h1标签里的内容

4.查看所有历史记录

git log --pretty=oneline

5.回到上一版本,已经提交,没有push

#git reset --soft 上一个commitID 撤销commit
  git reset --soft 版本4的commitID # 撤销版本5的commit

#git reset --mixed 上一个commitID 两个动作
  git reset --mixed 版本4的commitID 撤销版本5的commit和add两个动作

#撤销并舍弃版本号之后的所有提交记录,使用需要谨慎!!!
#撤销后,工作区是版本4的代码,版本5丢失了,谨慎使用!!!
  git reset --hard HEAD^
#回到上两个版本
  git reset --hard HEAD^^
#回到上三个版本
  git reset --hard HEAD~3
#方式二:通过commit id的前7位,回到指定版本(往前/往后都可以)
  git reset --hard 473233

6.已经提交,且push

#由于远程仓库版本号为版本5 低于 本地仓库版本4 ,不需要push,拒绝push
  git reset --hard 版本4的commitID
#撤销,但是保存了提交记录
  git revert 当前的版本5的commitID # commitID是最新提交的commitID,
#再进行push到远程仓库
  git push

7.查看当前状态

git status

18. 想要将某一文件回到指定版本时如何进行操作
1.当前所有文件都处理版本5

#确认状态是否为干净的
  git status
  git log --pretty=oneline
2.为了验证其他文件还在版本5,只有指定文件回到指定版本,标记一下其他文件请添加图片描述

3.根据commit id,回退指定文件到指定版本

  git log --oneline 查看所有提交过的版本
  git checkout commitID – 指定回退文件
  git checkout 62cad8 – version.html

4.回退后截图

请添加图片描述

5.查看当前状态

  git status

6.追踪并提交

  git commit -m “将指定文件回退到指定版本”

7.查看状态

  git status
  git log --pretty-oneline

19.想要修改内容之后推送至远程仓库时如何进行操作
1.本地创建项目,初始化,并提交到本地仓库

请添加图片描述
请添加图片描述

2.在github创建远程仓库
3.提交到远程仓库

请添加图片描述

4.新增css/js文件,并提交到本地仓库

   git status
  git add .
  git commit -m “”

5.push到远程仓库

  git push -u origin master

20.想要给每个版本创建一个独特标签,做所有版本标签管理时如何操作

1.创建标签(默认给最近的一次commit)
#git tag v版本号
  git tag v1.0

2.查看标签

  git tag

3.查看标签添加位置

  git log

4.给指定commit,添加标签

  git tab v版本号 commitID
  git tag v0.5 69d113

5.查看是否添加标签

  git tag
  git log --pretty=oneline

6.删除指定标签

  git tag -d v0.5

7.将添加标签v1.0,push到远程仓库

  git push origin v1.0

8.在github上查看tag

请添加图片描述

21.想要创建、切换、删除分支时如何及逆行操作
1.创建分支

  git branch 分支名
  git branch dev

2.查看所有分支

   #当前活动分支 带* 并且高亮
  git branch

3.创建test分支

  git branch test
  git branch

4.切换分支

  #git checkout 分支名 注意:切换前提:保证当前分支工作区clean状态
  git checkout dev
  查看当前分支
  git branch

5.删除分支

  #查看当前所有分支
  git branch
   #git branch -d 分支名
   #不能删除当前活动分支 也不能删除 commit之后 但 没有merged的分支(即> 处于本地仓库的分支)
  git branch -d test

6. 创建并切换到新创分支

  git checkout -b test

7.测试处于本地仓库的分支,能否被删除

7.1在test分支,commit一段代码
  git add .
  git commit -m “”
7.2切换到dev分支
  git checkout dev
  #删除test分支,是否报错,如果需要强制删除,git branch -D test
  git branch -d test
7.3如果需要强制删除
  git branch -D test

22.想要合并分支时如何进行操作
1.在dev分支,开发会员系统,并提交到本地仓库
2.切换到master分支

  git checkout master
  git branch --查看分支状态

3.将dev分支的代码合并到master分支,dev分支不变,master分支代码会被覆盖,结果使用dev分支的代码

  git merge dev

23.当合并分支有冲突时如何正确的合并分支

如果分工明确,细致,可以避免冲突,但是一旦发生冲突?

1.在master分支,修改test.html中h1标题的内容为“master分支”,并提交
2.切换到dev分支,修改同一个文件的相同位置的内容“dev分支”,并提交
3.切换到master分支,将dev分支合并到master

   git merge dev
请添加图片描述
解决方式一:撤销合并:直接使用master分支代码,舍弃忽略其他分支代码
   #放弃忽略合并
     git merge --abort
   #重新合并,复现冲突,为演示解决方式二准备
     git merge dev
解决方式二:和冲突分支的开发人员协商,确定最终保留代码,手动删除冲突
和冲突分支的开发人员协商,确定最终保留代码,手动删除冲突请添加图片描述
查看当前分支状态,并提交
   git status
   git add .
   //这里不需要描述 -m,接下来会进入一个可编辑的页面:这里输入描述
   git commit
请添加图片描述
此时在英文模式下,按i,进入可编辑状态
请添加图片描述
先按 按键esc 退出编辑状态,在英文状态下,再按 :wq ,退出该页面请添加图片描述
查看状态
git status --用这一个也可以
git log --pretty=oneline
git push -u origin master

24.git分支管理

请添加图片描述
请添加图片描述

基础分支

 1.master
 2.develop
一个项目的代码库至少要有master和develop这两个分支。团队成员从主分支(master)获得的都是处于可发布状态的代码,而从开发分支(develop)应该总能够获得最新开发进展的代码。

  • 从master上获得的代码一定要保证是和线上运行的程序是一致的。
  • 从develop上获得的应该是最新的稳定版本的代码。

除了基础分支外,我们还需要辅助分支。辅助分支大体包括如下几类:“管理功能开发”的分支、“帮助构建可发布代码”的分支、“可以便捷的修复发布版本关键BUG”的分支。
辅助分支的最大特点就是“生命周期十分有限”,完成使命后即可被删除。

辅助分支
  • Feature branch
  • Release branch
  • Hotfix branch
Feature branch

从develop分支检出,最终也会合并于develop分支。常用于开发一个独立的>新功能,且其最终的结局必然只有两个,其一是合并入“develop”分支,其二>是被抛弃。最典型的“Fearture branches”一定是存在于团队开发者那里,而>不应该是“中心版本库”中。
通过下面的命令来解释这个流程
  git checkout -b myfeature develop
  #在myfeature上开发完代码之后,需要合并到develop分支上
  git checkout develop
  git merge myfeature
  git branch -d myfeature
  git push origin develop

Release branch

从develop分支检出,最终合并于“develop”或“master”分支。这类分支建议命名为“release-*”。通常负责“短期的发布前准备工>作”、“小bug的修复工作”、“版本号等元信息的准备工作”。与此同时,“develop”分支又可以承接下一个新功能的开发工作了。在一>段短时间内,在“Release branch”上,我们可以继续修复bug。在此阶段,严禁新功能的并入,新功能应该是被合并到“develop”>分支的。“Release branch”产生新提交的最好时机是“develop”分支已经基本到达预期的状态,至少希望新功能已经完全从“Feature >branches”合并到“develop”分支了。
经过若干bug修复后,“Release branches”上的代码已经达到可发布状态,此时,需要完成三个动作:第一是将“Release >branches”合并到“master”分支,第二是一定要为master上的这个新提交打Tag(记录里程碑),第三是要将“Release branches”>合并回“develop”分支。
通过下面的命令来解释这个流程
  git checkout -b release-1.2 develop
  #修改版本号等元信息的准备工作或者小bug的修复工作后 要合并到master
  git checkout master
  git merge release-1.2
  git tag -a 1.2 #发布前要建立里程碑
  #如果有bug的修改,还需要合并到develop
  git checkout develop
  git merge release-1.2
  git branch -d release-1.2 #最后删除这个发布分支,它已经完成使命

Hotfix branch

从“master”检出,合并于“develop”和“master”,通常命名为“hotfix-*”
建议设立“Hotfix branches”的原因是:线上总是可能产生非预期的关键BUG,希望避免“develop分支”新功能的开发必须为BUG修复让路的情况。
BUG修复后,需要将“Hotfix branches”合并回“master”分支,同时也需要合并回“develop”分支
通过下面的命令来解释这个流程
  git checkout -b hotfix-1.2.1 master
  #修复完BUG之后,要合并到master
  git checkout master
  git merge hotfix-1.2.1
  git tag -a 1.2.1 #修改线上BUG需要打标签
  #修复完BUG之后,也要合并到develop
  git checkout develop
  git merge hotfix-1.2.1
  git branch -d hotfix-1.2.1 #最后hotfix的分支使命完成,删除之
这就是一个非常好的分支管理模型。
所以,在我们的gitlab上面我们一定至少要有2个分支
master 永远保持和线上代码同步,在上线部署时从这个分支拉去代码打包。如果我们的DI工具到时的功能完善,则DI工具直接从这个分支去代码打包发布
develop 我们的持续集成工具从每天从这个分支上取代码编译大包部署到测试环境(KVM,Docker)。
每次上线前都要建立里程碑Tag

25.git多人分支集成协作时的常见场景
不同人想要查看版本路线如何进行操作
git log --oneline 查看简化的提交记录

git log --oneline --graph 查看当前分支提交版本路线
git log --oneline --graph --all 查看所有分支的版本路线图
git log --oneline --graph 【-number】 查看当前分支提交版本路线图
请添加图片描述

不同人想要删除不想要的分支如何操作
  1.在github上dev分支下,创建两个xiaoli分支和xiaohuang分支   2.在本地复制一份代码:命名为xiaoli 和xiaohuang

  3.分别在以上两个项目下,进行如下操作:
在终端fetch远程仓库代码
git fetch
查看所有的分支
git branch -av
删除远程分支 #删除远程分支之前,确保该分支不用了 以及 确保该分支代码都merge到主分支上
git push origin --delete xiaoli
在github上,查看是否被删除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESP32 官方AT固件编译(从零开始环境搭建到编译完成全过程)

1、下载VMware免费版 https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe 2、下载Ubuntu (ubuntu-22.04.2-desktop-amd64.iso)** https://releases.ubuntu.com/jammy/ubuntu-22.04.2-desktop-amd64.iso…

Solr原理剖析

一、简介 Solr是一个高性能、基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,并实现了强大的全文检索功能、高亮显示、动态集群,具有高度的可扩展性。同时从Solr 4.0版本开始,支持SolrCl…

vue element ui el-tree 通过子节点反向递归查找父节点

今天做了一个项目采用的是element tree组件,要求子父节点不强关联,但是当我点击子节点时,会反向的选择所有的父节点,如下图: 当我点击电话时,往上一层的“电话”和“我的”均为父级以上的节点,全…

服务器负载均衡算法有哪些

算法举例 服务器负载均衡算法是用于分配网络流量到多个服务器的策略,以实现负载均衡和提高系统性能。以下是一些常见的服务器负载均衡算法的详细说明: 轮询(Round Robin)算法: 轮询算法是最简单且常见的负载均衡算法之…

kubernetes 证书更新

参考: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/https://kubernetes.io/zh-cn/docs/tasks/tls/certificate-rotation/ 查看证书 查看 kubelet是否支持证书自动轮换,默认轮换的证书位于目录 /var/lib/kubele…

Clion配置与使用记录

Clion与ROS2、docker 为了能够在Docker中使用ROS2环境,同时Clion能够在编辑代码时可以有代码提示以及函数、变量跳转等功能 Docker配置 参考:Docker SSH配置 启动Docker,需要将端口映射,添加如下参数: -p 8024:22&…

iOS transform rotate总结

研究了一下transform的旋转设置,调了半天还以为是旋转写错了,发现是两个不同的view对象写错了,不管怎么说,还是记录一下旋转相关的操作吧。 参数都是弧度。 以一个图片来举例。 let img UIImageView.init() img.image UIImage…

MySQL 储存过程

目录 🧿MySQL存储过程简介 🧿MySQL储存优点 🧿 MySQL创建存储过程(CREATE PROCEDURE) 🧿MySQL修改存储过程(ALTER PROCEDURE) 🧿MySQL删除存储过程(DROP …

手动搭建gateway,项目集成gateway实现Token效果

目录 背景步骤1、首先创建springboot项目2、引入依赖3、配置文件!!!!!(超级重要!!!根据自己的需要进行配置)4、相关类我们在服务中进行的白名单中接口的操作如…

基于 FFmpeg 的跨平台视频播放器简明教程(七):使用多线程解码视频和音频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

生产环境Session解决方案、Session服务器之Redis

目录 一、服务器配置 二、安装nginx 三、安装配置Tomcat: 四、配置session Session服务器之Redis Redis与Memcached的区别 安装部署redis 一、服务器配置 IP地址 主机名 软件包列表 192.168.100.131 huyang1 nginx 192.168.100.133 huyang3 JDK Tomca…

[STL]list使用介绍

[STL]list使用 注:本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…

位图和布隆过滤器+哈希切分思想

文章目录 一.位图(bitset)底层实现: 二.布隆过滤器(bloomFilter)底层实现: 三.哈希切分思想 一.位图(bitset) 位图是一种以一个比特位为数据记录单元的哈希表 ,以无符号整数为key值,采用直接定址法(不存在哈希冲突的问题),其哈希映射函数为 f ( k e y ) k e y ( k e y 的存在…

快速排序qsort讲解

hello大家好,我是c语言boom家宝,今天为大家分享的博客内容是qsort快速排序,简称快排的一个知识点的讲解。 在讲到快排之前,允许博主先提一嘴冒泡排序。大家在c语言的学习过程中,冒泡排序是必不可少会学习到的一个思想&…

Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突

文章目录 解决spark模块依赖冲突2.2.6 执行编译命令2.2.7 编译成功 下一章 核心概念后记 解决spark模块依赖冲突 修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。 1)修改hudi-spark-bundle的pom文…

kafka集群

目录 broker ZooKeeper consumer group(消费者组) 分区(Partitions) 副本(Replicas) 主题(Topic) 偏移量(offset) broker 一个kafka进程就是一个broker…

备战秋招 | 笔试强训17

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、假设A为抽象类,下列声明()是正确的 A. int fun(A); B. A Obj; C. A fun(int); D. A *p; 2、虚函数可不可以重载为内联? A. 可以 B. 不可以 C. 语法…

uni-app踩坑记

打包h5如何配置域名: 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/,否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada,页面样式会整个错乱,解决方案就是引入官方…

低代码开发平台源码

什么是低代码开发平台? 低代码来源于英文“Low Code,它意指一种快速开发的方式,使用最少的代码、以最快的速度来交付应用程序。通俗的来说,就是所需代码数量低,开发人员门槛低,操作难度低。一般采用简单的图…

学习笔记|大模型优质Prompt开发与应用课(二)|第二节:超高产文本生成机,传媒营销人必备神器

文章目录 01 文字写作技能的革新,各行各业新机遇四大类常见文字工作新闻记者的一天新闻记者的一天–写策划prompt 新闻记者的一天–排采访prompt生成结果prompt生成结果 大模型加持,文字写作我们如何提效营销创作营销创作-使用预置法为不同平台生成文案p…