首页 > Git与github基本操作

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 [email protected]   (这里的   [email protected] 是你注册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 “[email protected]”(这个里面的邮箱和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  删除已有的信息。

更多相关:

  • 一、 Git 常用命令速查   git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释  git remote add origi...

  • 安装githttps://www.git-scm.com/download/ 点击 安装好了之后,在开始菜单里面找到Git Bash git config --global user.name "你的github用户名" git config --global user.email “你的github邮箱” 查看是否登录账户配置成...

  • 了解Git和GitHub、虚幻引擎C++项目的版本控制等等! 你会学到: Git是如何工作的 如何从命令行使用Git 使用GitHub、GitHub桌面应用程序、Visual Studio中的Git工具和VS代码等Git工具 在虚幻引擎5和虚幻引擎4中使用Git跟踪虚幻引擎项目 在Visual Studio和Visual Stu...

  • 在 oh-my-zsh 进入 包含 git 仓库目录时,执行 ls 时会比较卡顿 原因: oh-my-zsh 要获取 git 更新信息 解决办法: 设置 oh-my-zsh 不读取文件变化信息(在 git 项目目录执行下列命令) $ git config --add oh-my-zsh.hide-dirty 1 如果还是...

  • gitlab创建项目a及一个主分支master 本地整体复制已有项目b 本地克隆gitlab上新创建的项目a(git clone gitlab地址) 将本地克隆过来的a文件夹下的.git目录拷贝到b项目下(cp -r .git …/b,注意是两个点,不是三个点,写两个点后,编辑器一直给输出三个点,晕) 删除本地克隆过来的项目a,将本地...

  • 英语的重要性,毋庸置疑!尤其对广大职场人士,掌握英语意味着就多了一项竞争的技能。那,对于我们成人来说,时间是最宝贵的。如何短时间内在英语方面有所突破,这是我们最关心的事情。英语学习,到底有没有捷径可以走,是否可以速成?周老师在这里明确告诉大家,英语学习,没有绝对的捷径走,但是可以少走弯路。十多年的教学经验告诉我们,成功的学习方法可以借...

  • 展开全部 其实IDLE提供了一个显32313133353236313431303231363533e78988e69d8331333365663438示所有行和所有字符的功能。 我们打开IDLE shell或者IDLE编辑器,可以看到左下角有个Ln和Col,事实上,Ln是当前光标所在行,Col是当前光标所在列。 我们如果想得到文件代码...

  • 前言[1]从 Main 方法说起[2]走进 Tomcat 内部[3]总结[4]《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spri...

  • 【本文摘要】【注】本文所述内容为学习Yjango《学习观》相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用。阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英语学习方面,我们的症结所在。学习英语这类运动类知识,需要把握四个原则第一,不要用主动意识。第二,关注于端对端第三,输入输出符合实际情况第四,通过多个例子...

  • 点云PCL免费知识星球,点云论文速读。文章:RGB-D SLAM with Structural Regularities作者:Yanyan Li , Raza Yunus , Nikolas Brasch , Nassir Navab and Federico Tombari编译:点云PCL代码:https://github.co...

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...