廖雪峰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.进程定义的是私有数据结构PCB,管程定义的是公共数据结构,如消息队列等; 2.进程是由顺序程序执行有关操作,而管程主要是进行同步操作和初始化操作; 3.设置进程的目的在于实现系统的并发行,而管程的设置则是解决共享资源的互斥使用问题; 4.进程通过调用管程中的过程对共享数据结…

JCO 自定义DestinationDataProvider

要让JAVA程序能访问SAP系统&#xff0c;一般通过SAP JCO接口进行通讯&#xff0c;在获取到SAP的连接时需求提供一些连接参数&#xff0c;这些参数在最新的 JCO 3.0 中需要被保存到一个带有扩展名.jcoDestination的文件中&#xff0c;这个文件同时被保存在应用程序的安装目录中。…

android BLE Peripheral 手机模拟设备发出BLE广播 BluetoothLeAdvertiser

android 从4.3系统开始可以连接BLE设备&#xff0c;这个大家都知道了。iOS是从7.0版本开始支持BLE。android 进入5.0时代时&#xff0c;开放了一个新功能&#xff0c;手机可以模拟设备发出BLE广播&#xff0c; 这个新功能其实是 对标于 iOS系统的手机模拟iBeacon设备。先介绍一…

前端后台管理系统梳理

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

操作系统 --- 使用套接字进行网络通信

一个套接字就是一个通信标识类型的数据结构,包含了通信目的的地址、通信使用的端口号、通信网络的传输协议、进程所在的网络地址,以及针对客户或服务器程序提供的不同系统调用等,是进程通信和网络通信的基本构件。套接字是为客户/服务器模型而设计的,通常分为以下两类: 1.基于…

构造器执行顺序

转载于: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() …

操作系统 --- 线程与进程的比较

如果说,在操作系统中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS(操作系统)具有更好的并发性… 我们再回顾一下进程的两个基本属性: 1.进程是一个可拥拥有资源的独…

24种吸引人的营销文章标题写法,总有一个适合你!

在如今信息爆炸的互联网时代下&#xff0c;如何提高提高文章的阅读(新闻稿、软文宣传稿、微信公众号)&#xff0c;成为从业者们共同研究的课题?首先你得有一个足够吸引的标题&#xff0c;尤其是定向推送的时候&#xff0c;这将是由一个质变带来量变的过程。小编虽然不提倡标题…

[js] 处理字符串换行造成的json解析失败

需求&#xff1a;从数据库某个字段取出字符串出来&#xff0c;转为json&#xff0c;结果发现报错为 解析失败&#xff0c;发现是因为取出的字符串换行导致&#xff0c;现在需要将字符串里面的换行替换为&#xff0c;使字符串可依成功解析成json对象。 技术&#xff1a;依靠repl…

使用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…

angular --- ngDialog关闭当前层

今天做项目,使用ngDialog 弹出了一层,并且在弹出层上又弹出了第二层. 现在想点击确定按钮关闭第二层. 使用以前的ngDialog.close()会关闭掉全部ngDialog.open方法弹出来的层. 在网上查了一堆,找了好多,最后发现就一句话.$scope.closeThisDialog(); 注意, 要在controller:中传递…

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…

javascript --- Sortable一个拖拽的接口

最近项目里面要实现需要实现一个拖拽功能,自己实现很麻烦,就在网上找到了一个封装好的sortable函数,github(https://github.com/SortableJS/Sortable). 首先是依赖的引入:(也可以自己下载源代码导入,方式很多呢) <body><!-- Latest compiled and minified CSS -->…

个人发展战略6天课

第一课 冰山模型 【知道自己为什么会不喜欢一份工作】 衡量和一个岗位是否匹配、匹配程度如何 从上到下的要素 知识技能&#xff08;30%&#xff09;特定领域 - 可以后天学习的&#xff0c;显性的、容易看出来的 和工作的关系&#xff1a; 工作中有陌生的内容&#xff0c;每天…

《Web全栈工程师的自我修养》

1. 什么是全栈工程师 Full-Stack Engineer Facaebook只招全栈工程师&#xff1f; Web开发流程 产品经理-->交互设计-->视觉设计-->开发&#xff08;前端、后端&#xff09;-->测试-->发布 流水线的优势 “各司其职”的弊端 工程师职责不清导致效率低工程师缺乏主…

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(加法…