廖雪峰git教程学习

廖雪峰git教程
git – Linus在2周内用c写的

1.1 基本概念

  • 版本控制系统,追踪文本文件的改动,文件、视频等二进制文件则不可追踪(微软的word也是二进制文件)
  • HEAD 指向当前分支,表示当前版本(最新的提交)
  • HEAD^ 上一版本
  • HEAD^^ 上上版本
  • HEAD~100 往上100个版本
  • 创建Git版本库时,Git自动为我们创建了唯一一个master分支
  • 只要没有git add,那么修改的内容就不会被放入暂存区,就不会被提交
  • 远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

1.2 常用指令

mkdir learngit
pwd  -- 用于显示当前目录
ls -ah -- 可查询隐藏的文件夹,如.git
cat -- 读取文件的内容
rm test.txt -- 删除文件
git init -- 将某个目录变成Git可以管理的仓库
git add -- 告诉git,把文件添加到仓库(暂存区)git add . -- 将工作区中所有未跟踪或者修改的文件添加到暂存区
git commit -m ""   -- 把文件提交到仓库(master分支)
git log -- 告诉我们修改的历史记录(由近到远)
/ 或者只显示一行 git log --pretty=oneline
git reset --hard HEAD^   -- 回退到上一版本
git reset --hard 1094a -- 回退到某一版本(需要知道commit id,并输入前几位)
git reflog -- 即使关闭了git bash之后,依然能记录之前每个步骤
git status -- 查询工作区的状态(是否有新增文件,文件是否有修改,比如切回dev分支时,可以先查询工作区的状态)
git diff HEAD -- readme.txt -- 查看工作区和版本库里面最新版本的readme文件的区别
git rm test.txt -- 你在工作区删除了test,git status检测到了,在确认要删除后,使用git rm+git commit
git checkout -- test.txt -- 刚刚在工作区误删了test,但是暂存区还有,还原回来
git remote add origin -- 在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作
git remote -- 查看远程仓库信息
git remote -v -- 显示更详细信息
git push -u origin master -- 实际上是把本地当前分支master推送到远程(第一次推送加 -u)
git push origin master -- 之后再有提交,推送无需加-u
git clone + git仓库地址(https或ssh,ssh协议速度最快)
git checkout -b dev -- 创建dev分支(-b 表示branch?创建并切换)
git branch -- 查看当前分支(当前分支前面会标一个*号)
git checkout master -- 先切回master分支,再合并
git merge dev -- 把合并指定分支(dev)到当前分支(master)
git merge --no-ff -m "不使用Fast forward模式合并" dev -- Fast forward模式下,删除分支后,会丢掉分支信息
git branch -d dev -- 合并完成后,就可以放心地删除dev分支了
git switch -c dev -- git的新命令,创建并切换到新的dev分支
git switch master
git log --graph -- 可以看到分支合并图
vim 文件名 -- 当不同分支合并产生冲突时,可以查看文件
git log --graph --pretty=oneline --abbrev-commit -- 查看分支合并情况
git stash -- 把当前工作现场“储藏”起来,等以后恢复现场后继续工作(场景:当前dev分支还没开发完,不能进行提交,但有临时紧急任务,需要新建分支来修复bug)
git stash apply + git stash drop -- 恢复工作区,或者:
git stash pop (恢复的同时把stash内容也删了)
git stash list -- 查看被暂存的工作现场
git stash apply stash@{0} -- 恢复stash@{0}暂存
git cherry-pick 4c805e2 -- 能复制一个特定的提交(4c805e2,修复bug的提价)到当前分支(比如在master分支上修复了bug,但是dev分支上也有这个bug,通过复制的方式解决dev上的bug)
git branch -D feature -- 丢弃一个没有被合并过的分支,加-D强行删除
git tag v1.0 -- 打标签(默认标签是打在最新提交的commit上的)
git tag v0.9 f52c633 -- 在历史提交的特定commit id上打标签
git tag -a v0.1 -m "version 0.1 发布" 1094adb -- 添加备注
git tag -d v0.1 -- 删除标签
git tag -d v0.9 + git push origin :refs/tags/v0.9 -- 删除已推送到远程的标签
git push origin v1.0 -- 推送标签到远程
git push origin --tags -- 一次性推送全部尚未推送到远程的本地标签
git tag -- 查看所有标签
git show v0.9 -- 查看某标签的详细信息

在这里插入图片描述
在这里插入图片描述
写了不该写的,但是还没git add,使用git checkout -- readme.txt可以撤销工作区的修改;
写了不该写的,还git add了,使用git reset HEAD readme.txt可以撤销暂存区的修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

1.3 创建合并分支过程图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分支合并冲突
在这里插入图片描述
在这里插入图片描述
手动修改冲突后,不需要merge了
在这里插入图片描述

1.4 多人协作

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin < branch-name>推送自己branch-name分支的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
  3. 如果合并有冲突,则解决冲突,并在本地提交(即使没有冲突,后push的同学不得不先pull,在本地合并,然后才能push成功);
  4. 没有冲突或者解决掉冲突后,再用git push origin < branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=origin/dev dev(指定本地dev分支与远程origin/dev分支的链接)

1.5 记录一个在学习git的过程中,遇到的问题

  1. 学习时,使用了以前创建的ying文件夹,这个文件夹其实和以前github上的ying仓库关联了(但是我忘了这件事)
    在这里插入图片描述
    在这里插入图片描述

  2. 当我在推送ying工作区的内容到learngit2020时,出现以下错误。因为此时,我的本地ying和远程仓库的内容已经不一致了
    在这里插入图片描述

  3. 先使用git pull --rebase origin master 取回远程主机某个分支的更新,再与本地的指定分支合并 (变基:把分叉的提交历史“整理”成一条直线,看上去更直观)在这里插入图片描述
    看看此时的工作区,多出了Users文件夹:
    在这里插入图片描述

  4. 再执行git push -u origin master
    在这里插入图片描述
    看看远程仓库ying的变化,最新的已经更新上去了
    在这里插入图片描述
    ** 注意:这里并没有实现推送到新的远程仓库learngit2020

  5. 本地库ying关联到远程库ying后,再关联到另一个远程库learngit2020

git remote set-url origin git@github.com:StephanieHuang0801/learngit2020.git
git push origin master:master

在这里插入图片描述
在这里插入图片描述

现在看看远程库learngit2020
在这里插入图片描述

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

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

相关文章

前端后台管理系统梳理

再梳理一遍 一、商品后台管理系统 1. 功能 1.1 服务端情况 开启了CORS跨域支持需要授权的 API &#xff0c;必须在请求头中使用 Authorization 字段提供token 令牌&#xff08;axios拦截器&#xff09;baseUrl&#xff0c;接口地址&#xff1a;http://localhost:8888/api/…

构造器执行顺序

转载于:https://www.cnblogs.com/a6948076/p/8045801.html

Java08-java语法基础(七)构造方法

Java08-java语法基础&#xff08;七&#xff09;构造方法 一、构造方法 1、什么是构造方法&#xff1f; 构造方法&#xff08;类方法&#xff09;是一个方法名和类名相容的特殊的成员方法。 2、构造方法的作用&#xff1f; 当使用new关键字创建一个对象时&#xff0c;为新建对象…

安装mysql8.0.20,报错“找不到VCRUNTIME140_1.dll”

写在最前&#xff0c;指令集合 以管理员身份运行cmd mysql -uroot -p 【进入】mysql mysql > exit 【退出】 net stop mysql 【暂停】 net start mysql 【启动】 mysql -u root -p&#xff08;命令后输入临时密码&#xff0c;进入mysql&#xff09; ALTER USER USER() …

使用mockjs模拟数据

一、安装 简单粗暴 npm install mockjs 二、引入 CommonJS引入 let Mock require(mockjs) let userInfo Mock.mock({data: {responseCode: 200,responseMessage: success,userMessage: {name: "cname",email: "email",msg: cparagraph(2)}} })或者ES…

lodash源码分析之compact中的遍历

小时候&#xff0c; 乡愁是一枚小小的邮票&#xff0c; 我在这头&#xff0c; 母亲在那头。 长大后&#xff0c;乡愁是一张窄窄的船票&#xff0c; 我在这头&#xff0c; 新娘在那头。 后来啊&#xff0c; 乡愁是一方矮矮的坟墓&#xff0c; 我在外头&#xff0c; 母亲在里头。…

[HAOI2008]移动玩具

这又是一道神奇的搜索题。。。只要记录每种状态。。。然后暴力判断这种状态往后一步的情况。。。 广搜出最优解即可。。。 呆码&#xff1a; #include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std;int dx[5]{0…

div设置overflow-scroll滚动之后,jq获取其子元素的offset.top出现问题。

先上个图&#xff1a; 布局很简单&#xff0c;左右超过屏幕的部分自行滚动。 1. html <div class"ce-container"><div class"ce-leftBox">//左边的内容</div><div class"ce-rightBox">//右边的内容 </div…

javascript --- 利用Sortable实现一个可视化公式编辑器

Sortable的依赖引入和简单使用参见:https://blog.csdn.net/piano9425/article/details/90437182 先简单的介绍一下可视化公式编辑器的功能(样式没有调,毕竟每个人的需求都不一样): 首先会有2个需要计算的(我称为操作数)A_XiangRaoZuWenSheng和AYKZQ_CS,以及两个操作符ADD(加法…

使用uni-app搭建微信小程序

0 问题待解决 import { } 与否为什么要封装对齐问题每次重启项目&#xff0c;sitemap就会消失动态修改标题失效图片问题多多 &#xff1a;高度自适应 改成image固定高度&#xff0c;mode&#xff1a;aspectFill微信小程序文档b站视频链接后端接口文档 一、知识点 uni-app 是…

HttpTomcat

本节内容&#xff1a; Http协议Tomcat服务器下面开始的一系列内容都是JavaEE的内容&#xff0c;主要的内容见下图。JavaEE主要是做服务器端开发。 JavaEE全部规范&#xff1a;有13门技术&#xff0c;主要做web开发的需要学习servlet和jsp。其他技术&#xff0c;像EJB、 JNDI、J…

python---线程与进程

一 线程 1.1 概述 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 Threading用于提供线程相关…

javascrpt --- 使用jquery添加dom元素和Angular ng-repeat生成select性能比较

今天用两种方法实现了动态的给select添加option的功能. 第一种是用jquery. // html <select id"drag-pointList"></select> // js $(#drag-pointList).children(option).remove(); // 清空之前的option let list res.data.list ; // res是ajax请…

【C语言及程序设计】项目2-15:模块化的简单银行系统设计

问题描述&#xff1a; https://edu.csdn.net/course/play/456/4808 // 银行系统.cpp: 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <stdlib.h> #pragma warning (disable: 4996)int PassTest(); void ibalance(); void withdraw(); void de…

Android 6.0 动态权限申请

1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予&#xff0c;运行时应用不再需要询问用户。在 Android 6.0 或更高版本对权限进行了分类&#xff0c;对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这样就不需要在安装时被强迫同意某些权限。 2. …

el-input输入金额,保留两位小数

需求&#xff1a;“只允许输入金额保留两位小数”&#xff0c;有2种实现方法 方法一&#xff08;通过正则控制&#xff09;&#xff1a; html&#xff1a; <el-inputv-model"inputTable.amount"input"formatNum(form.amount, amount)" ></el-i…

斜率DP总结

chunlvxiong的博客 T1&#xff1a;防御准备 三个月后第一次写博客&#xff0c;我们从这个题开始&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3156。 这道题DP方程比较好写&#xff1a;用dp[i]表示1到i全部被控制的最小代价&#xff0c;那么dp[i]min{dp[j](i-…

前端使用react-intl-universal进行国际化

一、国际化 / i18n 目前国际化&#xff0c;就是开发者写对象&#xff0c;一个key关联若干语种的翻译。相比于浏览器自带的翻译功能&#xff0c;语义更加准确。 “国际化”的简称&#xff1a;i18n&#xff08;其来源是英文单词 internationalization的首末字符i和n&#xff0c;…

2021前端面试题

基础知识与素养 JS基本功训练与思考 程序设计的渗透与应用 业务技巧的积累与训练 生产力转换 项目的组织架构 转换专业人才的全面生产力 什么样的技术水平决定了你应该学习什么样的知识与技术&#xff0c;什么样的知识与技术水平决定了你到什么样的公司&#xff0c;到什么样的公…

glog日志库使用笔记

日志能方便地诊断程序原因、统计程序运行数据&#xff0c;是大型软件系统必不可少的组件之一。glog 是google的开源日志系统&#xff0c;相比较log4系列的日志系统&#xff0c;它更加轻巧灵活。 在Github上下载glog&#xff0c;解压后用CMake生成VS2017工程&#xff08;默认生成…