Git使用详细教程

news/2024/5/12 2:28:49/文章来源:https://blog.csdn.net/nanxun201314/article/details/127719569

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上,查看是否被删除

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

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

相关文章

Redis知识补充(1)

1)Redis本身就是在内存中进行存储数据的,那么为什么不直接定义一个变量来针对数据直接进行存储呢?因为Redis主要是应用于分布式系统,才能发挥它的最大威力,如果只是一个单机程序,通过变量存储数据的方式,是…

Kotlin~Composite组合模式

概念 能够帮助实现树状结构的模式。 主要特点 递归组合树状结构统一处理所有对象 角色介绍 Component: 组合接口Leaf: 叶子节点,无子节点Composite:枝节点,用来存储子部件 UML 代码实现 interface Organ {fun personCount():Int } cla…

[VUE学习】从头搭建权限管理系统前端-初始化

1.安装Node 2.安装Vue Cli vue的一个脚手架 npm install -g vue/cli 3.vue ui搭建vue项目 cmd 运行 vue ui 然后创建新项目 选择npm 选择配置 Babel 是编译的 Router 是路由 vuex 是状态保存的 Linter/fomatter 代码检测和格式化 创建完成 这个时候 代码在我们本地…

解决IDEA/WebStorm的Ctrl+Shift+F冲突失效

IDEA 的 CtrlShiftF 是全文或全项目搜索搜索快捷键,非常好用。 当这个快捷键偶而会失效时,基本可以确定是快捷键冲突了。 检查所有运行的软件的快捷键,若有设置为CtrlShiftF的则改掉。特别是输入法会占用较多的快捷键。 例如我这里的搜过输…

Skywalking高级使用

Skywalking高级使用 RPC调用监控Mysql调用监控Skywalking常用插件获取追踪ID过滤指定的端点告警功能Skywalking原理Open Tracing介绍 RPC调用监控 Skywalking(6.5.0)支持的RPC框架有以下几种: (1) Dubbo 2.5.4 -> 2.6.0 (2) Dubbox 2.8.4 (3) Apache Dubbo 2.7.…

Git gui教程---第四篇 Git gui的使用 添加文件,并提交

添加文件,并提交 新建一个txt文件点击扫描重新扫描,未缓存改动多了我们刚刚新建的文件。 点击缓存改动,文件位置变换。 如果缓存选错,想撤销,在菜单栏选择“提交”,“从本次提交撤销”,文件变更…

实例解释在lingo中使用集合模型

某部门有三个生产同一产品的工厂(产地),生产的产品运往四个销售点(销地)出售,各个工厂的生产量、各销地的销量(单位:吨)、从各个工厂到各个销售点的单位运价(…

动态规划之62 不同路径(第4道)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

debian to go

可以使用虚拟机操作,在运行镜像到安装步骤时选择 u盘 不需要手动分 /boot 分区之类的,“Automaction”自动分区就行,全安装到根目录。boot load 安装到 /dev/sdb,也就是硬盘本身 推荐使用gpt分区表,建议拿不用的盘练…

js实现图片压缩

创建一个type"file"的input标签&#xff0c;用于文件上传。 <input type"file" name"" id"upload" value"" />通过js实现图片压缩 window.onload function () {const upload document.getElementById("upload…

范德波尔方程可视化

Van der Pol方程如下所示 d x d t y d y d t − x ( 1 − x 2 ) y \begin{equation} \begin{aligned} \frac{dx}{dt} & y \\ \frac{dy}{dt} & -x(1-x^2)y \end{aligned} \end{equation} dtdx​dtdy​​y−x(1−x2)y​​​ 相应的程序如下 为了观看长期趋势&…

【LeetCode每日一题合集】2023.7.3-2023.7.9

文章目录 2023.7.3——445. 两数相加 II&#xff08;大数相加/高精度加法&#xff09;2023.7.4——2679. 矩阵中的和2023.7.5——2600. K 件物品的最大和&#xff08;贪心&#xff09;代码1——贪心模拟代码2——Java一行 2023.7.6——2178. 拆分成最多数目的正偶数之和&#x…

STM32的ADC模式及其应用例程介绍

STM32的ADC模式及其应用例程介绍 &#x1f4cd;ST官方相关应用笔记介绍资料&#xff1a;https://www.stmcu.com.cn/Designresource/detail/application_note/705947&#x1f4cc;相关例程资源包&#xff1a;STSW-STM32028&#xff1a;https://www.st.com/zh/embedded-software/…

MySQL数据库对象与数据备份和还原详解

目录 一、视图 1. 什么是视图 2. 视图与数据表的区别 3. 视图的优点 4. 创建视图 二、索引 1. 什么是索引 2. 为什么要使用索引 3. 索引优缺点 4. 何时不使用索引 5. 索引何时失效 6. 索引分类 6.1 普通索引 6.2 唯一索引 6.3 主键索引 6.4 组合索引 三、数据的…

Integration Objects OPC 所有产品Crack

OPC产品 OPC UA 升级到 OPC UA 以提高互操作性和安全性。 OPC 隧道 无需 DCOM 即可实现安全可靠的连接。 OPC 数据归档 将 OPC 数据存储到标准数据库或 CSV 文件中。 OPC 服务器 将任何通信协议转换为OPC标准。 OPC 客户端 读取、写入和传输您的 OPC 数据。 OPC 服务器工具…

axios的学习

axios是基于promise对ajax的一种封装 //将省份信息打印到网页上 <p class"my-p"></p> <script src"https://unpkg.com/axios/dist/axios.min.js"></script> <script>axios({url:http://hmajax.itheima.net/api/province}).…

图形学 | 期末复习(上)| games101笔记 | 补档

博客基于GAMES101-现代计算机图形学入门-闫令琪&#xff0c;但不是其完整笔记&#xff0c;基于复习要求有一定的删减。考试以图形学入门基本概念和核心研究内容为主&#xff0c;少量公式。即以论述概念为主&#xff0c;涉及少量算法。p1:29:12是对应的games101视频节点&#xf…

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…

基于深度学习的高精度球场足球检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度球场足球检测识别系统可用于日常生活中或野外来检测与定位球场足球目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的球场足球目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

【考研408计算机组成原理】第三章存储系统 第五节cache

3.5.1工作原理 局部性原理&#xff1a;在最近可能会使用到周围的数据和指令。 性能分析&#xff1a;访问数据的时间 例题&#xff1a; 提出问题 知识总结 3.5.2 cache和主存的映射方式 3.5.3 替换算法 3.5.4 cache写策略