git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

b960d9026fd668593b34559159a8adaa.gif

2739d99e9cd053ffbd2255a46e81d46b.png

作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews)

fb785e33474a735a52c973016ea4745d.png

Git介绍

Git是目前世界上最先进的分布式版本控制系统,可以为我们管理项目、构建工程、多人协作提供便利,作为一个爱技术的你可以是必须要掌握的呀!!!

7994e06c52ba3d84a2b60ba77c755e45.png

Git安装(installation)

  • Linux上安装Git

1sudo apt-get install git
  • Windows安装Git

直接从Git官网下载安装程序,然后按默认选项安装即可。当我们安装完成后,还需要最后一步设置,在任意目录下Git bash Here在命令行输入:

1git config --global user.name "Your Name"
2git config --global user.email "email@example.com"

通过上述语句输入你的名字和Email地址。

417027867c17e52431bb2dd704a7435b.png

基本命令

基本操作

创建版本库,版本库又名仓库,我们可以理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以跟踪历史,或者在将来某个时刻可以“还原”。

  • 接下来在一个合适的地方,创建一个空目录:

1mkdir algorithms
2cd algorithms
3pwd
  • 通过git init命令把这个目录变成Git可以管理的仓库:

1git init
2>>>Initialize empty Git repository in ....

通过上面的命令我们创建了一个空的仓库,可以发现当前目录下多了一个 .git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然Git仓库就破坏了。

  • 文件添加到版本库

接下来我们编写一个文件或者脚本,比如一个markdown文件notes.md,具体内容如下:

1Git is a version control system.
2This is the first note

接下来我们利用命令git add将文件添加到仓库:

1git add notes.md

然后利用命令git commit告诉Git,把文件提交到仓库:

1git commit -m "write a notes file"

上面语句**-m后面输入的是本次提交的说明,可以输入任意内容,还要注意commit可以一次性提交很多文件,所以我们可以多次add**不同的文件。

  • 状态查看

接下来我们再修改一下notes.md文件,修改内容如下:

1Git is a version control system.
2This is the first note.
3This is the second note.

接下来我们可通过git status命令查看结果:

1git status

上述命令可以时刻掌握仓库当前的状态,通过运行上述命令我们可知,notes.md文件被修改了,但是还没准备提交修改。此外如果想查看具体修改了什么内容,可以通过git diff命令查看:

1git diff notes.md

修改完后就可以提交到仓库了,提交修改和提交新文件都是一样的,第一步git add:

1git add notes.md

在第二步git commit之前,可通过git status查看当前仓库的状态:

1git status

接下来我们就可以放心提交了:

1git commit -m "add second note"

提交后我们可以再次使用git status命令查看仓库的当前状态,Git告诉我们当前没有需要提交的修改,而且工作目录是干净的。

  • 版本回退

在实际工作中,我们可以通过git log命令查看版本控制系统的历史记录:

1git log

上述命令显示从最近到最远的提交日志,我们也可以加入**–pretty=oneline**参数来简化日志:

1git log --pretty=oneline

如果现在我们想把notes.md文件回退到上一个版本,该如何做呢?首先我们需要明确在Git中,用HEAD表示当前版本,上一个版本就是HEAD^, 上上一个版本就是HEAD^^, 当然往上100个版本写个100个 ^ 比较容易写不出来,可以写为HEAD~100

通过git reset命令进行回退:

1git reset --hard HEAD^

通过git log命令可以发现最新的版本已经不见了,那如果想回去该咋办呢?我们可以通过找到最新的版本的commit id为cf890…,于是就可以指定回到未来的某个版本:

1git reset --hard cf890

如果找不到最新版本的id,Git可以利用git reflog用来记录你的每一次命令:

1git reflog

通过上述命令你就可以找到commit id了。

属性查看

当我们安装配置之后,有时候需要查看当前配置的相关情况,可使用下面的命令:

1. 查看本地Git的用户名和邮箱

1git config user.name  # 用户名
2git config user.email # 邮箱

2. 查看global类型的配置情况

1git config --global --list

3. 如果你想切换用户,则还是可以通过设定用户名和邮箱的方式进行修改

1git config --global user.name "Your Name"
2git config --global user.email "email@example.com"

版本操作

工作区有一个隐藏目录 .git叫做Git的版本库,这里存了很多东西,其中最重要的称为stage(或index) 的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫做HEAD。相应的图示如下图所示:

27cc44c36c13a2856fc3db3777765b5c.png

则将文件往Git版本库添加时,分两步执行:

  1. 第一步用git add把文件添加进去,实际上就是把文件修改提交到暂存区;

  2. 第二步是用git commit提交修改,实际上就是把暂存区的所有内容提交到当前分支。

注:因为我们创建Gir版本库时,Git自动为我们创建了唯一一个master分支,现在的git commit就是往master分支上提交更改。在我们每次修改后,如果不用git add到暂存区,那就不会加入到commit中。

  • 撤销修改

当我们修改文件后,在没提交前,如果想删除不需要的文件,就可以直接进行删除后,利用git status查看,可以利用git checkout – file在工作区的修改全部撤销,有两种情况:

  1. 一种是notes.md自修改后就没有被放在暂存区,现在撤销修改就回到和版本一模一样的状态;

  2. 一种是notes.md已经添加到暂存区后,又做了修改,现在撤销修改就回到添加到暂存区后的状态。

总之就是让这个文件回到最近一次git commitgit add时的状态。

:git checkout – file命令中的 – 很重要,没有 – 就变成了“切换到另一个分支”的命令,后面分支管理会介绍。

如果你现在修改后已经通过git add到暂存区该咋办呢?利用git status查看后,Git告诉我们可以利用 git reset HEAD 把暂存区的修改撤销掉(unstage),重新放回工作区:

1git reset HEAD notes.md

接下来利用命令git checkout – notes.md丢弃对工作区的修改,这样就完成了。

  • 删除文件

当我们添加一个新文件到Git并且提交后,如果想删除文件直接在文件管理器中把没用的文件删除或者用rm命令进行删除,此时工作区和版本库就不一致了,然后利用命令git rm删除,并且git commit后,文件就从版本库删除了!

1git rm test.txt
2git commit -m "remove test.txt"

远程仓库

注册Github账户,就可以免费获得Git远程仓库,然而由于本地Git仓库和Github仓库之间的传输通过SSH加密的,因此需要设置:

第一步:创建SSH Key

1ssh-keygen -t rsa -C "youremail@example.com"

接下来一路回车,使用默认值即可,一切完成后就在用户主目录下有个 .ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对。

第二步:登陆Github,打开“Account settings",“SSH Keys"页面,然后点”Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,这样就可以在GitHub上免费托管的Git仓库。

注:GitHub允许添加多个Key

  • 添加远程库

通过上面的步骤在本地创建了一个Git仓库后,又在GitHub创建了一个Git仓库,并且让这两个仓库进行远程同步,这样GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举两得。

首先,登陆GitHub,在右上角找到“Create a new repo"按钮,创建一个新的仓库:

7e24387b39945e60e5436105c42bb6e0.png

填入Repository name,其他保持默认设置,点击“Create repository",就成功创建了一个新的Git仓库:

2e4ef267d5ade24a6459cfbd1a5b46da.png

通过上面的信息GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库。

通过上面的显示,在本地仓库运行下面的命令:

1git remote add origin https://github.com/edj19/Algorithms.git

添加后,远程库的名字就是origin,这是Git默认的叫法,接下来就可以把本地库的所有内容推送到远程库上:

1git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上就是把当前分支master推送到远程。

注:由于远程库是空的,第一次推送master分支时,加上了 -u参数,Git不但把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送就可以简化命令,采用下面的命令:

1git push origin master
  • 从远程库克隆

我们可以将远程库利用下面命令克隆到本地库:

1git clone https://github.com/edj19/Algorithms.git

好了通过上面的介绍一个简单的git操作以及与GitHub协作就整理的差不多,大家就可以愉快的学习了!!!!

原文链接:

https://blog.csdn.net/edj_13/article/details/104548375

【End】《原力计划【第二季】- 学习力挑战》正式开始!
即日起至 3月21日,千万流量支持原创作者,更有专属【勋章】等你来挑战a6895103d7d1f61173f7fb2928009f36.png推荐阅读 ☞微信七年「封链」史☞倾家荡产、隐私全无?独家揭秘撞库攻击!

☞Javascript函数之深入浅出递归思想,附案例与代码!

☞华为、阿里员工在听的英语资源,即将过期,请自取

☞不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码

☞智能合约编写之Solidity的基础特性

ad127b4d4b25fea30900e151341384f9.png你点的每一个在看,我认真当成了喜欢

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

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

相关文章

Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决

最近有windows7系统用户在开机的时候遇到了黑屏的问题,却提示“因以下文件的损坏或丢失,Windows无法启动windows/system32/config/system”的错误,导致无法开机,针对Windows7系统system文件丢失导致开机黑屏问题,本文就…

javafx阴影_JavaFX技巧来节省内存! 属性和可观察对象的阴影场

javafx阴影在 JavaFX的世界中, Properties API允许UI开发人员将值绑定到UI控件。 这种功能出奇的简单,但是当对象模型经常使用属性时,应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象,例如pojo类和表示模型对象。 此技术…

yum install -y 是什么意思_为什么你应该在docker 中使用gosu?

为什么要使用gosu?Docker容器中运行的进程,如果以root身份运行话会有安全隐患,该进程拥有容器内的全部权限,更可怕的是如果有数据卷映射到宿主机,那么通过该容器就能操作宿主机的文件夹了,一旦该容器的进程…

openshift_Openshift源中的高可用性Drools无状态服务

openshift嗨,大家好! 在这篇博客文章中,我想举一个简单的示例,展示使用Openshift 3(Docker和Kubernetes)扩展我们的Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务&…

ibm服务器芯片架构,IBM x366 服务器技术详解

背景资料IBM eServer x366 提供了突破性的 4 路性能,采用机架优化的 3U服务器设计,结合了源自大型机灵感的 eServer X3技术的高可用性,具有最新 64 位Intel Xeon MP 处理器带来的 64位性能,可创建面向商业企业应用程序、虚拟化及 …

python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python

python antlr我喜欢出于多种目的处理代码,例如静态分析或自动重构。 对我来说,有趣的部分是推理从抽象语法树(AST)构建的模型。 为此,您需要一种从源文件中获取AST的方法。 可以使用ANTLR轻松完成此操作,并…

rostcm6情感分析案例分析_卷积情感分析

这是一个面向小白(比如,本人)的关于情感分析的系列教程 [1]。老鸽子整理了“4 - Convolutional Sentiment Analysis.ipynb”中的内容。本文任务:使用卷积神经网络(CNN)来实现句子分类。简介CNN用于分析图像,包含一个或多个卷积层,…

java jigsaw_60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld

java jigsaw到目前为止,您可能已经听说过Java 9的新模块系统,即项目Jigsaw。 如果您不了解Java 9的新模块系统,则应该访问Mark Reinhold的论文“模块系统的状态” 。 另外,您应该在nipafx上查看 Nicolai Parlog的优秀博客&#xf…

opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...

学习目标在本章中,我们将学习用于跟踪视频中对象的Meanshift和Camshift算法。MeanshiftMeanshift背后的直觉很简单,假设你有点的集合。(它可以是像素分布,例如直方图反投影)。你会得到一个小窗口(可能是一个圆形),并且必须将该窗口…

vue.jsr入门_JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性

vue.jsr入门Java 8引入了JSR-308,它为Java语言添加了新的注释功能。 最重要的是:键入注释。 现在可以像下面这样设计怪物了: 比注解更疯狂的是类型注解。 在数组上。 谁认为这是有效的Java代码? pic.twitter.com/M9fSRRerAD — …

数组索引必须为正整数或逻辑值_Office 365函数新世界——动态数组

革新一个旧的函数体系,无外乎从这么几个方面入手,函数的运行效率、函数的编写方式以及扩展新的函数功能。今天咱们就学习一下,看看365新函数是如何通过这三个方面打破旧函数条条框框的。365函数系列推出了一个新的概念,叫做动态数…

【Android OpenGL ES 开发 (零)】创建一个新的工程

创建符合要求的AndroidApp 使用Android Studio开发,Android Studio下载地址 1.先创建Native C 2.项目相关添加 3.使用C11标准 学习使用JNI为Java提供API 1.在cpp中定义相关接口,格式如下 2.外部调用这个API 把so改成自己想要的名字 1.需要在cmake文件…

java方法参数类型不确定_一个Java方法能有多少个参数类型?这个好奇coder做了个实验...

选自 justinblank机器之心编译参与:李志伟、张倩在 JVM 中,一个 Java 方法,最多能定义多少参数呢?这是一个很无聊的问题,即使能定义一万个,十万个,谁又会真的去这么做呢。但是作为一个 coder&am…

lagom的微服务框架_您的第一个Lagom服务– Java Microservices入门

lagom的微服务框架在撰写我的下一份OReilly报告时,我一直很沮丧,并且一段时间内没有足够的时间来撰写博客。 是时候赶快来这里,让您真正快速地开始使用名为Lagom的新微服务框架。 它与您从Java EE或其他应用程序框架中可能了解到的有所不同。…

【Android OpenGL ES 开发 (一)】使用c++开发opengles 与 日志功能 及 加载assets

创建OpenGLES视口 1.App窗口改成OpenGL窗口,是通过java调用C,在以下位置修改如下内容 package com.example.learnogles;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.opengl.GLSurfaceView; import android.o…

水印相机定位不准确怎么办_禄来的广角双反相机(2020版)

点击上方胶卷迷俱乐部快速关注,胶卷迷们坚实的阵地内容主要原创,配图来自群友和网络,所有水印保留最下方为微信自带广告,支持请点击(本号可获微量收入)4.0德国禄来公司以双反相机名震天下,其中的2.8,3.5两个…

【Android OpenGL ES 开发 (二)】渲染管线与Shader

计算出每一帧耗费的时间 1.在头文件中加入time.h,cpp中实现如下计算时间接口 float GetFrameTime(){static unsigned long long lastTime0,currentTime0;timeval current;gettimeofday(&current, nullptr);//取当前时间currentTime current.tv_sec * 1000 current.tv…

【Android OpenGL ES 开发 (三)】Shader 扩展

编译Shader代码 1.封装一个编译shader的接口 GLuint CompileShader(GLenum shaderType,const char *shaderCode){GLuint shaderglCreateShader(shaderType);glShaderSource(shader,1,&shaderCode,NULL);glCompileShader(shader);GLint compileResultGL_TRUE;glGetShaderi…

css阴影属性_第三场阴影场与属性访问器接口

css阴影属性这是“ 影子字段与属性访问器”界面的 第3轮 。 如果您是新手,但不确定要怎么做,请查看我以前的文章或关于开发JavaFX应用程序时节省内存的第一篇文章 。 作为Java开发人员,我主要关心的是在开发JavaFX域模型时在性能 &#xff0c…

js if判断多个条件_JS条件判断小技巧(一)

经常code review,我发现JS newbie很容易写出一堆冗长的代码。今天就列几个比较常见的“解决之道”,看看如何减少JS里的条件判断。提前返回,少用if...else“if...else是编程语言的精华。——鲁迅”但是过多的嵌套,还是挺令人抓狂的…