我的GIT练习Four

2023-11-06

目录

前言

GIT安装教程

Git作者

GIT优点

GIT缺点

为什么要使用 Git

GIT练习Four

C1:初始化项目

C2:设计项目首页

C3:设计登录页面

C4:实现登录功能

C5:设计后台页面

C6:设计注册页面

C7:实现注册功能

C8:编辑后台功能菜单

C9:实现登录功能的优化

扩展练习

总结


前言

Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理

GIT安装教程

点击进入查看教程:点击进入

Git作者

作者:Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰

GIT优点

  •     适合分布式开发,强调个体。
  •     公共服务器压力和数据量都不会太大。
  •     速度快、灵活。
  •     任意两个开发者之间可以很容易的解决冲突。
  •     离线工作。

GIT缺点

  •     不符合常规思维
  •     代码保密性差,一旦把代码克隆下来那么完全可以暴露所有的代码版本信息
  •     模式上比SVN(很流行的开源代码版本控制系统)更加的复杂

为什么要使用 Git

  •     可以离线工作
  •     和他人协同工作更加轻松
  •     分支很轻松
  •     合并很容易
  •     git系统速度快,同时也很灵活

GIT练习Four

 根据上图实现以下操作,其中C1~C9表示的是9次提交,有三个分支,分别为:

  • 主分支:masterW
  • 实现登录功能的分支:feature-login
  • 实现注册功能的分支:feature-reg

前期准备:

1)在gitee中注册帐号,配置SSH公钥,如果已经配置,则删除重新配置

2)在gitee中创建远程仓库,命名为:pms

# 进入用户目录
$ cd ~

# 删除 .ssh 目录
$ rm -rf .ssh

# 重新生成公钥、私钥文件 - 一路回车
$ ssh-keygen -t rsa -C "114729040@qq.com"

$ cd .ssh
$ cat id_rsa.pub

C1:初始化项目

1)创建本地仓库,命名为product-ms,为此仓库添加用户名:tomcat,而邮箱使用全局的

# 初始化仓库
$ git init product-ms
$ cd product-ms

1.1针对当前仓库配置帐号

# 针对当前仓库配置帐号
$ git config --local user.name tomcat

2)添加忽略文件,忽略以下内容

# 创建忽略文件,并添加配置需要忽略的文件
$ vim .gitignore

*.class
*.txt
.idea
*.iws
*.iml
*.ipr
.vscode/
target/
out/

3)添加文件:1.html2.html3.htmlreadme.txtHello.classREADME.md

# 在工作区中,创建相关的文件 - 其中 Hello.class 被忽略
$ touch 1.html 2.html 3.html readme.txt Hello.class README.md

4)创建target文件夹,并添加11.html,22.html,33.html文件

# 在工作区中,创建target目录,并在此目录下创建相关的文件 - 此目录被忽略
$ mkdir target
$ cd target
$ touch 11.html 22.html 33.html

5)添加远程仓库:pms

# 暂存提交版本
$ git add .
$ git commit -m 'C1:初始化项目'

# 查看远程仓库
$ git removte -v

# 添加远程仓库
$ git remote add origin git@gitee.com:zing173/pms.git

6)提交本地仓库,描述信息为:C1:初始化项目,并推送到远程仓库

# 推送远程仓库 - 第一次提交使用 -u 参数
$ git push -u origin master

注意:观察远程仓库与本地仓库的文件是否一致!

C2:设计项目首页

1)创建文件夹:images,css,js

# 创建目录
$ mkdir images css js

2)往images文件夹中放一张照片,js文件夹中,添加JQ的函数库和Vue的框架文件

# 在各目录下创建或添加相关的文件
$ cd images
$ touch girl.jpg

$ cd ..
$ cd js
$ touch jquery.js vue.js

$ cd ../css

3)在css文件夹中,创建index.css,并添加内容如下所示:

$ vim index.css

h1 {color:red}

4)重命名1.html为index.html。并加添加内容如下所示:

# 修改文件名称并添加内容
$ git mv 1.html index.html
$ vim index.html

<h1>这是首页</h1>
<img src="images/xxx.jpg"/>

6)提交本地仓库,描述信息为:C2:设计项目首页,并推送到远程仓库

# 暂存提交
$ git add .
$ git commit -m 'C2:设计项目首页'

# 推送
$ git push

7)在此版本中,创建一个标签(v1.0.0),并推送到远程仓库中

# 创建本地标签并推送远程仓库
$ git tag v1.0.0
$ git push origin v1.0.0

注意:看不懂上面7个步骤,直接看这里也是一样的:

# 创建目录
$ mkdir images css js

# 在各目录下创建或添加相关的文件
$ cd images
$ touch girl.jpg

$ cd ..
$ cd js

$ touch jquery.js vue.js

$ cd ../css
$ vim index.css

# 修改文件名称并添加内容
$ git mv 1.html index.html
$ vim index.html

# 暂存提交
$ git add .
$ git commit -m 'C2:设计项目首页'

# 推送
$ git push

# 创建本地标签并推送远程仓库
$ git tag v1.0.0
$ git push origin v1.0.0

C3:设计登录页面

1)创建并切换分支(feature-login),并提交远程仓库

# 创建并切换分支,推荐远程仓库
$ git checkout -b feature-login
$ git push --set-upstream origin feature-login

2)在此分支创建login.html文件,并添加内容为:

# 编辑文件,添加内容
$ vim login.html

<h1>这是登录页面</h1>

3)提交本地仓库,描述信息为:C3:设计登录页面,并推送到远程仓库

# 暂存、提交、推送
$ git add .
$ git commit -m 'C3:设计登录页面'
$ git push

C4:实现登录功能

1)创建Login.java文件,添加内容为:“这是登录功能的实现"

$ echo 这是登录功能的实现 > Login.java

2)提交本地仓库,描述信息为:C4:实现登录功能

$ git add .
$ git commit -m 'C4:实现登录功能'

3)推送远程仓库

$ git push

C5:设计后台页面

要求:切换为master分支,实现以下操作

1)在git仓库中,删除2.html文件

git rm 2.html

2)编辑3.html文件,输入内容为“这是后台页面”

$ git checkout master

$ vim 3.html

3)提交版本

$ git add .
$ git commit -m 'C5:设计后台页面'

4)即回退到上一个提交,也就是上一个版本

$ git reset --hard HEAD~1

5)重命名2.htmlbackend-index.html,并输入内容为“这是后台页面”

$ git mv 2.html backend-index.html
$ echo 这是后台首页 > backend-index.html

6)修改index.html的内容为“欢迎光临”

$ vim index.html

<h1>欢迎光临</h1>

7)提交版本

$ git add .
$ git commit -m 'C5:设计后台页面'

8)推送远程仓库

$ git push

C6:设计注册页面

1)创建并切换分支(feature-reg),重命名3.htmlreg.html,并添加内容为:"这是注册页面"

$ git checkout -b feature-reg
$ git mv 3.html reg.html
$ echo 这是注册页面 > reg.html

$ git checkout -b feature-reg
$ git mv 3.html reg.html
$ echo 这是注册页面 > reg.html


2)提交版本

$ git add .
$ git commit -m 'C6:设计注册页面'


3)推送远程仓库

# git push - 失败 - 远程仓库并不存在 feature-reg 这个分支
$ git push --set-upstream origin feature-reg

C7:实现注册功能

1)创建Reg.java文件,添加内容为:“这是注册功能的实现";

$ echo 这是注册功能的实现 > Reg.java


2)编辑index.html文件,内容修改为:"这是首页"

$ vim index.html

<h1>这是首页</h1>


3)提交版本,并推送远程仓库

$ git add .
$ git commit -m 'C7:实现注册功能'

# 修改最后一个提交版本的描述信息
$ git commit --amend

$ git push

C8:编辑后台功能菜单

要求:切换回master分支,并实现以下操作

1)编辑backend-index.html,修改内容为:

$ git checkout master

$ vim backend-index.html

<h1>欢迎登录Xxx系统后台页面</h1>
<h3>用户管理</h3>
<h3>商品管理</h3>
<h3>订单管理</h3>

2)编辑index.html,内容修改为:好好学习,天天向上

$ vim index.html

<h3>好好学习</h3>

3)提交版本,然后合并feature-login分支

$ git add .
$ git commit -m 'C8:编辑后台功能菜单'

# 注意:在这里会创建一个新的版本提交(上图没有画出来)
$ git merge feature-login

C9:实现登录功能的优化

要求:master分支中合并feature-reg。并实现以下操作:

1)解决合并冲突问题

# 合并分支
$ git merge feature-reg

2)编辑Login.java,追加内容为“完成了登录功能的优化”

# 编辑文件,修改内容
$ vim index.html
$ vim Login.java

<h3>完成了登录功能的优化</h3>

3)提交版本

# 暂存,提交版本
$ git add .
$ git commit -m 'C9:实现登录功能的优化'

4)撤销上一个版本和恢复上一个版本

# 撤销、恢复
$ git reset --hard HEAD~
$ git reflog
$ git reset --hard 版本号

5)推送远程仓库

# 推送
$ git push

6)在此版本中,创建标签(v1.1.0),并推送到远程仓库

# 创建、推送标签
$ git tag v1.1.0
$ git push origin v1.1.0

扩展练习

# Gitt操作(略)

# 拉取远程仓库
$ git pull

# 删除标签
$ git push origin --delete v1.0.0
$ git tag -d v1.0.0

# 切换其它目录,克隆远程仓库
$ git clone https://gitee.com/zing173/pms.git

# 查看分支
git branch

# 删除分支
$ git branch -d feature-login
$ git push origin --delete feature-login

$ git branch -d feature-reg
$ git push origin --delete feature-reg

好了,这上面就是我初学GIT的时候的练习习题,有兴趣的小伙伴,可以跟着一起学习呀!

总结

每一次的练习,都是对自身知识的巩固,以及对自身知识的一个测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的GIT练习Four 的相关文章

  • TortoiseGit - 更改默认合并消息

    系统描述 Windows 7的 git版本2 10 1 windows 1 乌龟Git 2 3 0 0 I want 合并提交消息在不同的情况下有所不同fully自动方式 no manual amend Summary 在windows上
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 使用 GitHub,在添加现有存储库时如何推送所有分支?

    我创建了一个新的 GitHub 存储库 我想将现有的存储库放在那里 我按照说明操作 cd existing git repo git remote add origin email protected cdn cgi l email pro
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

    当做一个git tag 我并不总是擅长记住 HEAD 6 例如 是包含的还是排他的 鉴于我的大多数提交都以问题号为前缀 我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA 我知道这很容易做到git log并从那里开始工作 但
  • GitHub API 获取用户/组织总数

    Using GitHub API https developer github com v3 如何计算请求时的用户 组织总数 Users https developer github com v3 users and 组织机构 https
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never
  • 如何在 git 中将我的功能分支变基到开发分支,尽可能减少冲突?

    我的功能分支已超过大约 30 次或更多提交 与此同时 在开发分支中 其他开发人员还推出了一些其他功能 因此 每次在开发中发布新功能时 我都会被要求 将开发分支重新建立到我的功能分支上 解决冲突 如有 继续在您的功能分支中开发 问题 第二步就
  • 为什么我无法推送这个最新的 Git 子树?

    我将 Git 子树与我正在开发的几个项目一起使用 以便在它们之间共享一些基本代码 基本代码经常更新 升级可能发生在任何项目中 最终所有项目都会更新 我遇到了一个问题 git 报告我的子树是最新的 但推送被拒绝 例如 git subtree
  • “git merge”和“git rebase”有什么区别?

    有什么区别git merge and git rebase 假设最初有 3 次提交 A B C 然后开发人员 Dan 创建了提交D 开发者 Ed 创建了提交E 显然 这一冲突应该以某种方式得到解决 为此 有两种方法 MERGE 两者都提交D
  • 从 `git commit` 调用时 Vim 使用非标准配置?

    我注意到每当我编写提交消息时 git 似乎都会使用不同的 vim 设置 我有git svn安装 Macports 我已经检查过 MYVIMRC变量 它被设置为正确的文件 尽管如此 每次我提交消息时 我都会受到每行 80 个字符的限制 区分大
  • 如何调试 git Remote set-url 不起作用

    我无法更改 git 远程 urlgit to https 如下图所示 git remote set url不工作 git remote v 来源 git github com userName repoName git 获取 原点 git
  • 如何在 Gitolite 配置中添加存储库的描述

    我正在使用 gitolite 为我的 GIT 服务器进行用户维护 除了仓库描述之外 一切正常 我已经在 gitolite conf 中设置了存储库的描述 例如 reponame repo description 早期版本 v3 x 之前 可
  • Git 预提交挂钩未在 Windows 上运行

    我刚刚开始研究 Git 挂钩 但我似乎无法让它们运行 我设置了一个本地存储库 因此我的项目文件夹中现在有一个 git 目录 我已将名为 pre commit cmd 的 cmd 文件添加到 C path to my project git

随机推荐

  • Flink服务器无响应,apache-flink

    在这种情况下 我们有3个kafka主题 每个主题有50个分区 它们具有不同的消息 而所有这些消息都具有 用户名 字段 topic 1 gt Message01 String username about 50 000 messages pe
  • 分析Java线程池执行原理

    Java并发编程源码分析系列 分析Java线程池的创建 上一篇已经对线程池的创建进行了分析 了解线程池既有预设的模板 也提供多种参数支撑灵活的定制 本文将会围绕线程池的生命周期 分析线程池执行任务的过程 线程池状态 首先认识两个贯穿线程池代
  • Vue2.0 Vue脚手架 插件

    Vue当中有一个特别强大但写起来特别简单的一个东西 名字叫 插件 有什么作用 可以帮我们去增强一下Vue 先配置好项目 自己写的话 main js 项目执行npm run serve后第一个进入的 import Vue from vue i
  • maven报错‘has elapsed or updates are forced“

    使用 U强制更新参数运行maven命令
  • 少儿机器人编程有什么用

    少儿机器人编程有什么用 小孩的学习一直以来都是家长们非常关心和重视的一件事情 很多的家长在培养孩子的学习方面也可以说是相当的耐心的 会给孩子选择一些能更有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于
  • 解决Enter passphrase for key

    两种解决方案 提示 Permissions 0644 for ssh id rsa pub are too open 解决方法 使用chmod 0600 ssh id rsa pub更改将公钥权限改成 600 提示 Enter passph
  • Java中的静态变量&静态方法

    静态变量 静态方法 静态变量又叫做类变量 静态方法又被称为类方法 均被static修饰 未被static修饰的成员变量和方法分别被称为实例变量和实例方法 1 静态方法中不需要它所属类的任何实例就可以访问 所以在静态方法中不可以使用this关
  • Swift语法学习--运算符与流程控制

    文章目录 运算符 循环 条件 预处理器指令 运算符 普通的运算符加减乘除 与或非 三元运算我觉得没必要再赘述了 就记录一下我不熟悉的 循环 条件 预处理器指令
  • SQL Server 数据库中添加文件组和数据文件

    SQL Server 现有数据库中添加文件组和数据文件 use CURRENT DB 进入当前操作数据库 go alter database CURRENT DB add filegroup FG1 向CURRENT DB 数据库添加FG1
  • idea安装插件plugin(主要针对网络连接不上的情况)

    STEP1 ctrl alt s 打开settings STEP2 在输入框键入 Plugins STEP3 输入你想要的插件名称 我这边输入的是nodejs 因为最近在学 我这边是安装过的 所以这样显示 STEP4 点开中下方的前两个按钮
  • 在windows下编译glib库

    glib库是跨平台的C语言函数库 是Gtk 库和Gnome的基础 glib可以在多个平台下使用 比如Linux Unix Windows等 glib为许多标准的 常用的C语言结构提供了相应的替代物 先从官网下载下载 https downlo
  • Linux网络通信总结

    网络IO之阻塞 非阻塞 同步 异步 单播 多播 组播 广播 多路复用POLL SELECT epoll 超时 read write accept connect 超时 实现 1 用select来设置超时机制 2 使用setsockopt 函
  • React 子向父级组件通信时,state为旧的数据

    问题描述 当嵌套太深的子组件触发更新父组件时 父组件获取到的state map传入子组件 是旧的 问题场景 初始子组件仅为1个Input输入框 新增后有2个Input输入框 此时触发222输入框的修改 通知上级组件保存修改的内容时 父组件存
  • 数据结构—单链表C语言刷题2

    目录 1 链表分割 2 链表的回文结构 3 相交链表 4 环形链表 5 环形链表II 1 链表分割 题目链接 链表分割 题目描述 现有一链表的头指针 ListNode pHead 给一定值x 编写一段代码将所有小于x的结点排在其余结点之前
  • Debug下出现debug assertion failed

    出现debug assertion failed界面后点击重试跳到这句ASSERT m hObject NULL 采用注释查找错误的方式定位至 if CFrameWnd OnCreate lpCreateStruct 1 return 1
  • 获取referer中的请求参数_Http请求头中的referer

    Referer是 HTTP请求header 的一部分 当浏览器 或者模拟浏览器行为 向web 服务器发送请求的时候 头信息里有包含 Referer 比如我在www google com 里有一个www baidu com 链接 那么点击这个
  • 在Linux内核中添加自己的驱动程序

    就说一下怎么添加进去吧 首先你要把驱动程序写好 我已添加 首先在drivers目录下面创建GPIO文件夹 文件夹下面创建三个文件 分别是 gpio c Kconfig Makefile 三个文件 gpio c是你的驱动程序 Kconfig是
  • Spring复习笔记

    1 Spring 1 1 简介 优点 Spring是一个轻量级控制反转 IoC 和面向切面 AOP 的容器 轻量级 低侵入 松耦合 框架粘合剂 更容易整合其他框架 支持事务处理 官网 https spring io projects spr
  • 不怕死就上这些网站

    1 hxxp www dj3344 com 打开后 重启时你的主页就变成它的 并通过QQ向他人传播 现在正飙行 奇坏无比 2 hxxp www qq168 net 打开后 重启时你的主页就变成它的 并通过QQ向他人传播 而且传波病毒 还狠些
  • 我的GIT练习Four

    目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习Four C1 初始化项目 C2 设计项目首页 C3 设计登录页面 C4 实现登录功能 C5 设计后台页面 C6 设计注册页面 C7 实现注册功