当前位置: 首页 > 编程日记 > 正文

Git与github基本操作

一.  git安装与简单配置

1.      git的安装

首先进入git的官方网站git-scm.com

下载自己电脑对应的git版本,然后点击安装即可


点击上图的红色部分进行下载

安装的时候直接默认即可

找到你的Git安装位置,把快捷方式中的git bash发送到桌面,以后我们使用的就是git bash进行的操作


2.      git的基本配置

打开git bash 为自己配置一个用户名和邮箱

输入命令:git config –global user.name name  (name这里你可以输入任意你喜欢的名字)

然后输入命令:git config –global user.email hello@163.com (这里的 hello@163.com 是你注册github账号用到的注册邮箱,关于github接下来的文章会提到)

 

为git的命令配置别名

比如我们给checkout取别名co输入命令:git config –global alias.co checkout

比如我们给branch取别名br 输入命令:git cnfig –global alias.br branch

我们在以后的学习中会经常的时候git commit –m “xxx” 其中xxx是你输入的一些备注信息,这里我想把commit –m 取一个别名cm,输入命令:git config –global alias.cm “commit -m”

我们还经常使用的一个命令是git push origin master 那么我想为这个命令取一个别名pom,输入命令:gitconfig –global alias.pom “push origin master”,这样做之后我们每次想输入git pushorigin master 的时候就只需要输入git pom即可,其他的别名的使用类似

3.      获取git仓库

获取git仓库有两种方式分别使用git init 是初始化一个git仓库,另外一个命令是git clone从github上面下载一个git仓库

首先打开git bash 然后使用cd命令进入我们使用的一个目录下面然后输入命令:git init hello  (这里面的hello是我们给这个仓库取得一个名字),这样一个git仓库就建好了

但是这里我们使用比较多的是,把一个本地已有的一个文件夹初始化成git仓库,该如何做呢,首先我们使用cd命令进入到我们我们需要初始化的文件夹,然后直接输入命令:git init即可

4.      git的一些基本命令操作

我这里在一个文件下面新建了一个git仓库,输入命令:git init hello,作为以后的演示仓库

查看git仓库的状态,首先使用cd命令进入一个hello仓库下,然后新建一个文件,输入命令:touch a,这个新建文件的过程我们也可以在Windows下的对应的文件下,即这个仓库下面新建,然后输入git status


这个时候我们发现a是一个红色的标记,上面的英文解释是当前仓库下面有一个文件a,但是该文件没有git追踪

为了是a被记录,我们输入下面的命令:git add a

意思就是让该git仓库记录下这个文件

再次输入git status,就发现刚刚的那个a已经被记录下来了


 

此时我们想删除一个文件又该怎么做呢,这个时候使用的命令:git rm a,此时如果我们输入ls就会发现这个目录下面什么都没有了

这里需要解释的一点是,当我们在一个仓库下面新建一个文件时,这个是我们的工作区,如果我们使用git add a之后,这个a就被添加到我们的暂存区,意思就是它此时还不是git的一个文件,只有当我们使用git commit –m “xxx”之后才把这个文件提交了

二.  Git远程协作,github代码托管

1.      Git秘钥的配置

首先进入到github的官网,用邮箱注册一个账号,接下来要做的就是配置秘钥,进入到git bash 然后输入命令:ssh-keygen –t rsa –C “hello@163.com”(这个里面的邮箱和github上面的注册账号保持一致),然后根据提示回车或者输入密码,这些密码最好和你github的登录密码保持一致。当出现下图的图样时,就表示你的秘钥生成成功。


然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码(下面的灰色字体部分大家不用管)

输入如下命令让git bash 记住刚刚输出的密码:ssh-agent –s

然后输入如下命令:ssh-add ~/.ssh/id_rsa,输入一次密码,然后秘钥就保存了

下面的工作是将生成的密码记录到自己的github账号上面去,我们在本地中找到C盘-用户-主用户文件夹下,找到.ssh文件夹,然后记事本打开一个文件id_rsa.pub,(git bash下,输入命令:vim ~/.ssh/id_rsa.pub),然后复制里面的内容。随后进入到自己的github上面去,添加key,打开github账号后,找到settings选项,然后找到ssh选项,添加key,


把刚刚的内容粘贴到上面即可,然后还要给这个秘钥起一个名字。

这样你的秘钥在本地的配置和github上面的配置就成功了。

2.      Git上传代码到github上面

首先我们需要在github上面创建一个仓库,然后找到该仓库的一个URL,如下图所示,复制该URL然后进入到git bash的终端,将刚刚创建的仓库clone下面,输入下面的命令:git clonehttps://github.com/NeilZhy/SmallProject.git  (这个地址我的地址,大家根据自己的实际地址进行改动)


这样之后那个仓库就clone下来了。

这个时候我们可以在git bash下面进入到这个仓库下面,就会发现在github对应仓库的内容了,如果我们在github上面的仓库里面新建了一个文件,那么在本地的仓库如何获取呢,我们在git bash下的对应的仓库目录下输入git fetch,这样更新的文件就被下载下来了。

如果我们在github上面修改了一个文件,我们在本地同时修改了一个文件,这个时候我们想把本地的修改同步到github上面去,我们使用git add a.txt   (这里假设我在仓库里面新建的一个文件是a.txt),然后输入命令:git commit –m “哈哈”,再输入命令:git push,此时因为本地和github上面均有修改,这样会报错,此时git bash会提示我们使用git pull命令,这个命令的作用是,将github上面的内容下载下来,然后和本地的内容进行合并,此时又会提示让我们手动去修改,因为在本地和github上面的内容不一样。我们使用vim a.txt进行文件的修改(此时的a.txt是github修改和本地修改合并后的一个结果)。然后git add a.txt,然后git commit –m “哈哈”,最后再次使用git push就成功了。

 

总结:当我们把在本地生成秘钥之后,把秘钥在本地和github上面配置好之后,对于初学者来说用的最多的就是git clone xxx  (xxx部分是你的github上面的仓库的URL) ,然后在本地进入到这个仓库之后,把你的文件放在这个仓库下面之后,就可是使用git add a.txt,git commit –m “哈哈”,git pushorigin master 。使用上面的三步就可以是你的代码上传到你的github上面了。

三.  Github Pull Request—如何为一个开源项目做贡献

学习了上面的内容后,我们已经可以给自己的github上面上传代码了,那么我们不由的想问,如何查看一个别人的开源项目,又如何给这个开源项目做贡献呢,如何把自己的代码推送到别人的github账号上面去呢

1.      在github上面fork项目

首先登陆到自己的github账号上面去,然后搜索你想要fork的项目或者用户,这里我搜索的是一个用户,然后点击账户,进入到别人的github下面去


进入到别人的github下面之后,我们找到自己需要的一个仓库,然后点击进入该仓库,点击fork,这个时候,别人的项目就被下载到自己的github账号上面了。


既然这个项目已经被我们拷贝到自己的github下面了,我们想往里面添加内容,这个时候我们同样需要将其clone下来。打开终端,进入到一个你想将这个仓库clone下来的文件夹,然后输入命令:git clone xxx  (这个xxx是你fork下来的仓库的URL)。一般情况下,我们要为一个项目做贡献的时候,我们会选择新建一个功能分支,这里我们首先进入到这个目录下面,然后输入命令:git checkout –b xxx  (xxx是分支名,可以自己取)。我们可以把刚刚下载下来的仓库里面的内容进行一些修改,然后在上传,使用git add a.txt,然后git commit –m “测试”,然后是git push origin xxx (注意这里面的xxx要是你刚刚的分支名)。

然后登陆我们的github进行查看,进入到我们刚刚fork的仓库下面,然后点击下图的红色部分,点击xxx,就可以查看我们刚刚上传的代码了。


接下来我们需要创建一个New pull request,点击上图中第一个红框旁边的New pull request,这个时候我们可以查看和比较我们提交的一些内容和自己分支以及和我们下载的别人的分支的一个比较。然后点击下图的红色部分,因为一般默认的master分支,我们需要改成我们的xxx分支,就可以查看我们的具体上传的内容了。显示的代码部分主要是别人这个仓库的某一分支下的内容,和我们仓库下xxx分支下的一个差异内容。

我们点击Create pull request,给这个pull request添加一些基本的信息。


基本信息填写好之后,我们点击Create pull request,这个贡献就发送成功了。

这个时候我们登录对方的github账号,当然这个对方的账号其实是我的另一个账号,然后系统会提示有人给发送了一些代码,然后我们把这些代码合并,或者给对象提示,让他继续写。

 

下面我们想做一个优化,就是我们本地下载的是我们自己的github账号下的fork别人的仓库,那么我本地需要更新别人的代码,可以直接通过本地的一些指令去拉去别人的代码呢。

这次我们同样还是需要别人的那个仓库的URL,我们打开自己的git bash终端,进入一个自己想要下载的目录下,然后输入命令:git remote add aaa xxx (其中的aaa是我们取得一个名字,可以理解为别人仓库的名字,xxx就是刚刚赋值的URL)这里做的意思实际就是一个让本地的git bash记录一下这个URL。我们首先回到我们的主分支上面去git checkout master下次我们更新别人仓库的代码的时候,直接输入命令:git fetch aaa。这样之后别人的代码就被更新下来了。然后输入git merge aaa/master,这一步的意思是将下载下来的代码和本地的代码合并。

Remote可以理解为一个通讯录,这里补充几个关于remote的几条命令:git remote rename aaa hhh  这里是改名字的意思,gitremote  这里是查看有几个信息。git rmhhh  删除已有的信息。

相关文章:

容器 root权限运行_【漏洞通告】Containerd容器逃逸漏洞通告 (CVE202015257)

2020年12月1日,Containerd发布更新,修复了一个可造成容器逃逸的漏洞CVE-2020-15257,并公开了相关说明。通过受影响的API接口,攻击者可以利用该漏洞以root权限执行代码,实现容器逃逸。深信服安全研究团队依据漏洞重要性…

IOS成长之路-NSMutableURLRequest实现Post请求

NSData *bodyData [[bodyString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]dataUsingEncoding:NSUTF8StringEncoding];//把bodyString转换为NSData数据 NSURL *serverUrl [[NSURL URLWithString:RequestUrl] URLByAppendingPathComponent:urlStr];//获…

rsync ssh文件同步

参考链接 下载 manual #rsync -avP -e ssh ./filename root192.68.1.38:/root/paths/ (本地到远程) #rsync -avP -e ssh root192.68.1.38:/root/paths/test.tar.gz /root /paths (远程到本地) rsync -av --progress --inpl…

【转】Linux思维导图

【原文】https://www.toutiao.com/i6591690511763898888/ 1、Linux学习路径: 2、Linux桌面介绍: 3、FHS(文件系统目录标准): 4、Linux需要特别注意的目录: 5、Linux 内核学习路线: 6、Linux Security Coaching&#xf…

Python中lxml库的安装(Windows平台)

之前写过《Python中requests包的安装》,今天我需要安装lxml库,这里我尝试之前安装requests方式,但是没有成功,几经周折,终于总结出来了一个方法,这里拿出来给大家分享。 首先就是自己的电脑已经安装好了Py…

hadoop fs命令无法使用_「大数据」「Hadoop」HDFS的配置与管理

HDFS(Hadoop Distributed File System)是Hadoop三个基础组件之一,为另外的组件以及大数据生态中的其他组件提供了最基本的存储功能,具有高容错、高可靠、可扩展、高吞吐率等特点。HDFS运行在java环境中,因此我们都需要安装JDK。安装完成之后是…

Oracle 触发器 Update 不能操作本表的疑问

今天要解决一个需求,类似表A有个字段叫flag存储的是0 or 1 ,当一行记录更改为1的时候,其他行同字段要变为0。 这样的需求第一个思路想尝试下能否用触发器来实现 create or replace trigger tr_equiptreeweatherstation before UPDATE ON con…

前景检测算法_3(GMM)

摘要 本文通过opencv来实现一种前景检测算法——GMM,算法采用的思想来自论文[1][2][4]。在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应。然后在测试阶段&…

ADO.Net五个对象

Connection Command DataAdapter DataSet DataReader 取5个单词的首字母CCDDD,在拼音输入法里面打一下,出来5个字,然后就记忆为曹操打豆豆。 制作了一张图片,用来帮助记忆曹操打豆豆。 Reference ADO.NET的五大对象转载于:ht…

XPath与多线程爬虫

一. Xpath的介绍与配置 1. XPath是什么 XPath是一门语言 XPath可以在XML文档中查找信息 XPath支持HTML XPath通过元素和属性进行导航 总结: XPath可以用来提取信息(和正则表达式类似) XPath比正则表达式更加厉害 XPath比正则表…

html无序列表空心圆_列表样式的使用CSS入门基础(018)

今天我们分享关于列表样式的内容。列表项list-sytle-type:在HTML学习中,我们知道有有序列表和无序列表,都是使用type属性来定义的。1、有序列表有序列表 有序列表 有序列表 属性值type:1,数字1、2、3……&#xff1b…

2013年3月百度之星B题

Sigma Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Problem Description 小H是一个程序员。他很喜欢做各种各样的数学题,尤其喜欢做《水泥数学》。 在看了《水泥数学》的2.5章后,小H终于会用9种计算 1^22^2...n^…

TCP/IP 10.1集成IS-IS协议

樱桃小小的 软软的甜甜的好吃哈&#xff01;感谢上帝 &#xff0c; 恩呢 &#xff0c; 让我吃的这么满足&#xff0c;开心&#xff01;第十章 集成IS-IS协议建议在学习ISIS的时候联系2个<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office"…

运维基础-文件权限管理

Linux是一个多用户操作系统&#xff0c;在多用户操作系统上我们需要一种方法来允许或者拒绝访问特定的文件和目录。文件有所属人和相关的单个组。我们可以设置所属人或者租的权限&#xff0c;以及所有其他人的权限。 文件只具有三个应用权限的用户类别。文件的所有者&#xff0…

android帧动画实现方法之一

好多动画离不开帧动画的使用&#xff0c;下面就实现帧动画的制作方式之一&#xff0c;以后会推出其他方法。 上面是文件存放位置。 a.xml文件的代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"…

python技术晨讲_python系列教程14

声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好的理解人工智能技术&#xff0c;我让助理负责分享这套python系列教程&#xff0c;希望能帮到大家&#xff01;好了&#xff0c;是开始…

三字母词和转义字符

1. 三字母词 在C语言中有一种三字母词的说法&#xff0c;trigraph sequences&#xff0c;目前为止有九种三字母词&#xff0c;如下 ?? # ??) ] ??! | ??( [ …

写了个Python脚本监控nginx进程

写了个Python脚本监控nginx进程 Xiaoxia[PG]写了个Python脚本监控nginx进程接上一文用iptables让SSH服务对陌生人说不。还是有点担心这个学期内&#xff0c;nginx可能会因为系统各种原因而出现异常退出&#xff0c;导致Web服务暂停。所以&#xff0c;又来了一个方案。view pla…

Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory

今天遇到一个很诡异的问题&#xff0c;一直运行很正常的shell脚本失败了&#xff0c;只是昨天增加了一个参数而已。 报错信息&#xff1a; /bin/bash^M: bad interpreter: No such file or directory 后来发现root cause, 昨天修改文件的时候在windows中修改保存&#xff0c;然…

C语言volatile关键字详解

volatile提醒编译器它后面所定义的变量随时都有可能改变&#xff0c;因此编译后的程序每次需要存储或读取这个变量的时候&#xff0c;都会直接从变量地址中读取数据。如果没有volatile关键字&#xff0c;则编译器可能优化读取和存储&#xff0c;可能暂时使用寄存器中的值&#…

python储存数据的容器_Python基础四容器类数据

一、上周内容回顾int bool str 之间的互相转换int str:str(int)int(str) #字符串必须是数字组成int bool:bool(int):非零即TrueTrue --->1 Fasle --->0bool str:str-->bool #非空即Truestr&#xff1a;BIF自己去背吧二、列表why&#xff1a;1.取值费劲。2.对字符串…

Android 清单文件 详解

转载于:https://www.cnblogs.com/mohe/archive/2013/03/31/2991642.html

android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》

2019独角兽企业重金招聘Python工程师标准>>> 看世界杯的空闲 时间&#xff0c;翻译一下 官方文档。分辨率 问题是大家都很关心的&#xff08;720480会不会悲剧&#xff09;&#xff0c;而关于这个问题&#xff0c;android官方的文档无疑最有说服力。由于不是所有的人…

010 并发的三个特性

一 . 概述 在之前,我们使用synchronized关键词解决了原子性的操作,本节我们分析一个JVM内存模型导致的另外的两个问题. 二 . 可见性 为了加速线程的运行的速度,JVM的内存模型中设置了线程栈中的缓存,当一个线程使用了堆内存的数据的时候,首先会将这个数据缓存到线程栈之中, 当这…

LeetCode: Longest Consecutive Sequence

想到map了&#xff0c;可惜没想到用erase来节省空间&#xff0c;看了网上答案 1 class Solution {2 public:3 int longestConsecutive(vector<int> &num) {4 // Start typing your C/C solution below5 // DO NOT write int main() function6 …

python做测试书籍推荐_学习pytest应该观看的书籍?

这本书有中文版了pytest是动态编程语言Python专用的测试框架&#xff0c;它具有易于上手、功能强大、第三方插件丰富、效率高、可扩展性好、兼容性强等特点。《pytest测试实战》深入浅出地讲解了pytest的使用方法&#xff0c;尤其是具有特色的fixture的用法。作者通过丰富的测试…

路由器、路由与路由表

2019独角兽企业重金招聘Python工程师标准>>> 路由器、路由与路由表 路由器就是一台网络设备&#xff0c;它配备多个网络接口卡(NIC)&#xff0c;能利用它的网络知识正确转发入口流量。 决定一个入口封包应当送给本地主机还是转发所需要的信息&#xff0c;以及在转发…

Hadoop虚拟机的jdk版本和本地eclipse的版本不一致怎么办

在本周学习Hadoop遇到了一个问题&#xff0c;困扰了半天&#xff0c;本人在安装Hadoop时是按照视频来的&#xff0c;结果发现Hadoop上的jdk版本和本地eclipse的版本不一致&#xff0c;导致本地的程序到处jar包传到虚拟机上运用Hadoop不能正常运行&#xff0c;如果你遇到相同的问…

操作符和表达式

一. 操作符 1. 算术操作符 - * / % 除了%之外其余的几个操作符既可以用于计算整型也可以用于计算浮点型数据&#xff0c;%只能计算整型数据&#xff0c;得到的结果是余数 2. 移位操作符 << 左移位操作符 >> 右移位操作符 <<左移…

kuayu react_react跨域解决方案

react跨域解决方案1.开发环境:reactaxioselement2.电脑系统:windows10专业版3.在使用react开发的过程中,我们总是会遇到跨域的问题,下面我来分享一下,在react中跨域处理方法!4.我使用的是axios向后台发送请求,安装axios:npm i axios --save5.安装代理中间件(http-proxy-middlew…