git学习笔记_CheerTan的博客-程序员ITS203

技术标签: 学习笔记  

基本操作

版本查看、回退

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:git reset --hard HEAD^

丢弃工作区某个文件修改:

git checkout -- file

如果已经add到暂存区,一样可以丢弃:

git reset HEAD <file>

创建分支并切换到分支:

git checkout -b branchname

分支:

查看分支:git branch
查看远程分支和本地分支:git branch -a
创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

临时紧急修复bug如何保留当前未完成的工作:

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply [email protected]{0}

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

远程库

//查询当前远程的版本
$ git remote -v
//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master  [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]
//查看版本差异
$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev   [示例2:查看本地dev与远端origin/dev的版本差异]
//合并最新代码到本地分支
$ git merge origin/master  [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]

推送本地分支到远程分支:

git checkout -b localbranch
git push origin localbranch/remotebranch
#(origin远程仓库别名可能为其他,自定义名称),可以通过git remote -v来查看你的远程仓库别名,此时如果远程仓库没有该分支,会新建一个分支
#下次如果已经在该分支上,想要推到远程分支,只需
git push origin remotebranch

拉取远程分支到本地

#先同步一下远程仓库的信息
git fetch origin
git checkout -b ac_branch origin/ac_branch
#上一命令创建了本地新分支,并跟远程分支同步
#如果本地已经有该分支了,只要切换到该分支后
git push origin ac_branch

分支下再创建分支

团队项目开发时,常常会进行分模块开发,一个小团队负责一个模块的功能开发,当该模块功能太多时,又需要进行分块,这时需要怎么办呢?废话不多说,马上进入正题:

门派之争

下面举个例子,现在主分支master为武林,武林下有华山派,华山派下又有气宗,剑宗。先创建好华山派的分支:

git branch HuaShang

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ cat HuaShang.txt
华山派

下面开始创建华山派下的气宗分支:

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ git checkout -b QiZong HuaShang
Switched to a new branch 'QiZong'
M       HuaShang.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ ls
HuaShang.txt  Kongfu.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ touch Qizong.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git add Qizong.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git commit -m "add qiaong"
[QiZong 370e45c] add qiaong
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Qizong.txt
[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ ls
HuaShang.txt  Kongfu.txt  Qizong.txt

切回华山派看看,是否有气宗的内容

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git checkout HuaShang
Switched to branch 'HuaShang'
M       HuaShang.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt

发现华山派里暂没有气宗门派,是时候将他合并到华山里,

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ git merge QiZong
Updating 3086bd3..370e45c
Fast-forward
 Qizong.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Qizong.txt

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt  Qizong.txt

这时华山派已有气宗,那么主分支武林里呢?照理来说是没有的,因为这是华山派的分支

[email protected] MINGW64 /d/Personal/Desktop/Temp/gitexercise (master)
$ ls
Kongfu.txt  ShaoLin.txt

参考教程:https://stackoverflow.com/questions/4470523/create-a-branch-in-git-from-another-branch
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43877605/article/details/100892636

智能推荐

git pull --rebase PK git pull_渴望成长的菜鸟的博客-程序员ITS203_git pull rebase

在使用git的日常开发过程中,经常遇到如下情况:1、某个时间你通过git clone/git fetch拉取了远程仓库代码到本地仓库2、开始本地调试并开发某个功能,经过几天的奋斗,终于功能调试好了3、当你开心地准备通过git push分享你的成果时,遇到git push失败,提示本地代码非最新,需要先更新本地代码原来在你调试过程中,有人“偷偷地”提交了代码,导致出现类似下面所示的情况......

Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法_songhuanlinux的博客-程序员ITS203

Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法经常在ubuntu 64位下运行 ./xxx 会跳出来说没有这个文件或者目录,但是ls看又有这个文件,很是奇怪。其实原因很简单,是因为他没有32位的运行库 ia32-libs 会出这种八杆子打不着的奇怪提示。直接安装即可。apt-get install ia32-libs

CUDA快速入门讲解、硬件结构、软件程序!_帅的发光发亮的博客-程序员ITS203

CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构。做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体系结构和C语言编程知识储备的同学上手CUDA编程应该难度不会很大。本文章将通过以下五个方面帮助大家比较全面地了解CUDA编程最重要的知识点,做到快速入门:文章目录1. GPU架构特点2. CUDA线

企业级 ##MySQL 5.7 数据库多台主从复制 基于GTID主从复制 半同步##_China_zgd的博客-程序员ITS203

一.配置安装数据库:【server1】主库配置1.下载安装包:mysql-community-client.x86_64 0:5.7.17-1.el6 mysql-community-common.x86_64 0:5.7.17-1.el6 ...

jquery如何在元素后面添加一个元素_weixin_33896069的博客-程序员ITS203

jQuery添加插入元素技巧:jquery添加分为在指定元素的里面添加和外面添加两种: 里面添加使用(append 和prepend)里面添加又分为在里面的前面添加和后面添加里面的前面添加使用prepend和prependTo里面的后面添加使用append  或appendTo外面添加使用(after和before)外面添加又分为在外面的前面添加和后...

python入门用什么软件好_适合Python入门的8款工具_weixin_39711914的博客-程序员ITS203

Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小,且拥有各式各样的工具,因此比Java和C++等语言更具优势,同时丰富的库赋予了Python完成各种伟大任务所需的能力。下面是程序员和学生最常使用的一些Python工具:1、IDLE在安装Python时,默认也会安装IDLE。这是最...

随便推点

java判断俩个时间之间差的小时数,分钟数,秒数_未有lp的博客-程序员ITS203_判断两个时间差

java判断俩个时间之间差的小时数,分钟数,秒数给出任意两个时间, 计算出该时间段内白天小时数, 夜晚小时数, 以及白天次数夜晚次数,白天时间段为 7:00-21:00;public class DateTest { // 给出任意两个时间, 计算出该时间段内白天小时数, 夜晚小时数, 以及白天次数夜晚次数, // 白天为 7:00-21:00; 白 14 夜 10 /** * 先计算俩个时间之间的差多少天,在计算中间差多少个小时 */

Weblogic基本配置(一)_whx_ls的博客-程序员ITS203_weblogic配置

Weblogic基本配置介绍了目前最常用的weblogic 11g 的使用, 包括安装、目录讲解、配置、MyEclipse中配置。 - Weblogic介绍 1.中间件 中间件(middleware)是基础软件的一大类, 属于可复用软件的范畴. 顾名思义,中间件处于操作系统软件与用户的应用软件的中间. Apache专门开发中间件的组织(可以推动整个行业技术的发展和应用) 每个中...

opporeno3详细参数_opporeno3pro参数配置详情-opporeno3pro手机性能评测_weixin_39656435的博客-程序员ITS203

opporeno3pro是opporeno3同系列手机机型,这款手机主打的就是手机拍摄性能,在手机拍照方面还是可圈可点的,那么这款手机值不值得买呢?下面就是小编为大家带来的opporeno3pro详细周到的参数性能对比,感兴趣的用户快来看看吧!一、opporeno3pro详细参数配置基本参数发布时间2019年冬季,12月26日型号Reno 3 Pro手机类型5G手机,4G手机,智能手机,拍照手机...

linux服务器立即关机命令,Linux服务器重启/关机命令(shutdown/halt/reboot/init/poweroff)..._不住人间的博客-程序员ITS203

Linux服务器重启命令有shutdown、halt、reboot、init和poweroff,Linux百科网分享各个重启命令参数及使用方法:以下关于Linux服务器重启命令写的比较详细,如果你着急重启服务器,可以直接使用重启命令:shutdown -r now或者reboot。Linux服务器重启命令本文Linux百科网介绍的Linux服务器重启命令shutdown、halt、reboot、i...

噪声种类及Matlab添加噪声_qq_45479499的博客-程序员ITS203_matlab加噪声

文章目录一、噪声种类二、Matlab添加高斯噪声三.添加椒盐噪声四.添加泊松噪声五.添加乘性噪声六.产生均匀分布的噪声七.产生指数分布的噪声一、噪声种类1 高斯噪声 源于电子电路噪声和由低照明度或高温带来的传感器噪声(可通过空域滤波的平滑或图像复原技术来消除)2 椒盐噪声(双极脉冲噪声)负脉冲:黑点(胡椒点) 正脉冲:白点(盐点)(中值滤波消除)3 均匀分布噪声4 指数分布噪声5 伽马分布噪声参考链接:浅析“高斯白噪声”,“泊松噪声”,“椒盐噪声”的区别https://www.jiansh.

服务器单板维护,【专家级】GPON网络的日常维护经验总结_疯狂的Java说书酱的博客-程序员ITS203

GPON设备作为新兴的光接入设备,目前在很多地区已大规模使用。为了保证设备的稳定健康运行,需要注意日常例行维护工作的规范性,通过例行维护随时了解设备运行的情况,以便及时发现和解决GPON网络中的各种隐患。GPON网络是由OLT、ONU和ODN三部分组成,其网络结构如图1所示。LT为接入网提供网络侧与核心网之间的接口,通过ODN与各ONU连接。作为PON系统的核心功能器件,OLT具有集中带宽分配、控...

推荐文章

热门文章

相关标签