Github基本操作的学习与温习

GitHub是最先进的分布式版本控制工具,下面是我学习中总结的操作流程,仅供参考

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Git安装

                   下载git的windows版本并安装,不予详述(直接打开安装包,按默认的流程一步步进行即可,任意位置点击鼠标右键弹出git 字样的选项时即为安装成功)

                   安装成功后输入下面命令进行设置

                            $ git config --global user.name "你的git账号"

$ git config --global user.email "你注册git账号的邮箱"

Git操作:

                    创建版本库

  1. 选择一个地方创建空目录(所有目录名必须是英文的,中文的会出bug)
  2. 输入下列命令

$ mkdir learngit //learngit为仓库名,可以自己命名

$ cd learngit

$ pwd      //显示当前目录

                            $ git init  //将目录变为git管理的仓库

  1. 添加文件,在learngit文件夹下创建文件,输入下列命令

$ git add 文件名      //文件名是创建文件的名字

$ git commit -m "注释"//-m后面提交的是文档说明,这个必须要有,否则报错

                   修改版本库:

  1. 查看仓库状态:

$ git status

  1. 查看修改内容:

$ git diff 文件名

  1. 查看历次版本历史纪录

$ git log

  1. 回退上次版本

$ git reset --hard HEAD^

  1. 回退到任意一个版本

$ git reset --hard num //num 为要回退到某个版本的版本号,部分即可

  1. 查询历史命令

$ git reflog

  1. 查询工作区和版本库里面的最新版本的区别

$ git diff HEAD -- 文件名 //要查询文件的名字

  1. 放弃工作区文件的修改(此命令中的两个横杠很重要,不能少写)

$ git checkout -- 文件名 //放弃修改的文件名称

  1. 撤销暂存区文件的修改

$ git reset HEAD 文件名

Git工作时候实际上是工作区->暂存区(stage)->分支(master为git自动创建的分支),HEAD为指向master 的一个指针。Git add实际上是将文件提交到了暂存区。Git commit是将暂存区的所有内容都提交到分支,可以先执行多个add,

再使用一个commit提交。

                   如果直接将文件管理器中的文件删除或者使用rm命令删除,工作区和版本库的内容就会不一致,此时:

  1. 可以选择直接从版本库中删除文件

$ git rm 文件名

$ git commit

  1. 文件删除错误,这时可以从版本库里还原文件

$ git checkout -- 文件名

连接git网站:

  1. 创建SSH Key,在user目录下(用户主目录),查看是否有.SSH文件,并且查看其下面有无id_rsa(私钥,不能告诉别人)和id_rsa.pub(公钥,可以告诉别人)文件,如果没有可以运行命令创建

$ ssh-keygen -t rsa -C "邮箱名"

  1. 登陆GitHub网站,打开“SSH Key”页面,点击“new SSH”,输入任意名,粘贴公钥内容

有本地库后创建远程库:

  1. 登陆网站,点击“create a new repository”,创建新库,设置名称learngit,点击创建
  2. 将本地内容关联到远程库里面去

$ git remote add origin git@github.com:账户名/learngit.git

  1. 把本地库的内容推送到远程库上,

$ git push -u origin master

第一次推送时使用-u参数关联,后面推送时候就可以简化命令$ git push origin master

从远程库克隆库

  1. 登陆网站,假设已经创建了一个库gitskill
  2. 克隆库到本地

$ git clone git@github.com:账户名gitskill.git

$cd gitskill       //创建本地文件夹

$ls

创建与删除分支:

  1. 创建另一个分支dev,并将指针HEAD切换到另一个分支上去

$git checkout -b dev  //dev为另一个分支名,记住中间是一个横杠

-b表示创建并切换

  1. 查看所有分支

                            $ git brach

  1. 切换分支

$ git checkout master//切换回master分支

  1. 合并分支

$ git merge dev  //将dev分支合并到当前分支上来

  1. 删除分支

$ git branch -d dev  //删除dev分支

分支冲突:

                   当创建一个新分支并且做出修改后回到原分支再次修改文件,此时git无法将两个修改的文件进行快速合并,必须将某一个文件修改后或使其完全一致方可。查看分支合并情况:

                            $ git log --graph --pretty=oneline --abbrev-commit  //查看冲突分支的合并情况

No-ff模式(禁用fast forward模式)

                            Fast forward模式下合并分支会丢失分支信息,禁止后在执行合并分支操作时能从分支历史上看到分支信息。 禁用模式下执行合并命令:

                            $ git merge  --no-ff -m "注释"

储存工作状态:

                   在处理bug等必须暂时离开时,可以保存现在的工作状态

  1. 储存当前工作状态:

$ git stash   //存储当前分支

  1. 修复bug(假如在master中修复bug)

$ git checkout master    // 转到master分支

$ git checkout –b issue-101   //创建新的分支issue-101来修复bug

  1. 修复完成后:

$ git checkout master   //切换回master

$ git merge –no-ff –m “注释” issue-101 //修改完bug的分支合并到master中去,并保留痕迹

$ git branch –d issue-101   //删除临时分支

                            4.切换回原来的工作状态

                                     $ git checkout dev

此时工作区是没有东西的,原来的stash内容被存在别的地方,可以用$ git stash list来查看。此时工作现场还在,此时可以执行:

       $ git stash apply   // 恢复存储内容

       $ git stash drop    // 删除储存的工作状态文件

或者一次恢复并删除工作状态文件:

       $git stash pop

删除分支:

当分支创建完毕即将合并时,突然不使用这个分支了,要将其删除。此时使用强行删除命令(此时没有合并,不能使用git branch来删除分支):

                            $ git branch –D feature   //feature 是要删除的分支名字

多人协作:

  1. 查看远程库的信息

$ git remote    

或者使用命令

$ git remove –v    //查看远程库更详细的内容

  1. 推送分支到公共库

$ git push origin 分支名   // origin是远程库的默认名称

注意:

l  Master 是主分支,需要时刻与远程库同步

l  Dev为开发分支,也需要同步

l  Bug 分支只用于本地修复bug,没必要推送

l  Feature 是新功能开发分支,这个取决于是否与他人合作开发

  1. 抓取分支,当开发者同时更新dev分支时,可以先抓取这个分支到本地,解决冲突后再上传

$ git branch –set-upstream dev origin/dev  //指定本地和远程库dev文件的链接

$ git pull                  //抓取网上的dev文件

创建标签:

                            为每一个分支创建一个版本号:

                                               $ git branch    //查看分支

                                               $ git checkout master   //转到需要加版本号的标签

                                               $ git tag v1.0    //为分支创建版本号标签,v1.0为版本号

                                               $ git tag      //查看所有版本号标签

                                               $ git show tag    //查看所有版本号标签的详细信息

创建带有说明的标签:

                   $ git tag –a 版本号  -m “说明文字“

看版本号的说明文字

                   $ git show 版本号 

操作标签:

          删除标签:

                                     $ git tag –d 版本号

         推送标签到远程:

                                     $ git push origin 版本号

         推送所有标签名到远程:

                                     $ git push origin –tags

         如果标签已经推送到远程,可以先删除本地的,再 删除远程的

                                     $ git tag –d 版本号  //  删除本地的

                                     $ git push origin :refs/tags/版本号

转载于:https://www.cnblogs.com/wuheng1991/p/5443001.html

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

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

相关文章

excel统计行数_值得收藏的6个Excel函数公式(有讲解)

收藏的Excel函数大全公式再多,几天不用也会忘记。怎么才能不忘?你需要了解公式的运行原理。小编今天不再推送一大堆函数公式,而是根据提问最多的问题,精选出6个实用的,然后详细的解释给大家。1、计算两个时间差TEXT(B2…

Studio One正版多少钱 Studio One正版怎么购买

随着版权意识的增强,打击盗版的力度越来越大,现在网络上的盗版资源越来越少,资源少很难找是一方面,另一方面使用盗版软件不仅很多功能不能使用,而且很多盗版软件都被植入各种木马病毒,从而带来各种各样的风…

DNS简述

常见DNS记录SOA:域权威开始NS:权威域名服务器A:主机地址CNAME:别名对应的正规名称MX:邮件传递服务器PTR:域名指针 (用于反向 DNS)查询过程浏览器缓存->hosts->LDNS->LDNS缓存->ISP->ISP缓存…

cuda gpu相关汇总

1.Ubuntu16.04:在anaconda下安装pytorch-gpu 转自:Ubuntu16.04:在anaconda下安装pytorch-gpu_莫等闲996的博客-CSDN博客 1 创建虚拟环境并进入 conda create -n pytorch-gpu python3.6 conda activate pytorch-gpu 2 下载对应的安装包和配件 方法一(推荐)&#…

普通人学python有意义吗_学python难吗

首先,对于初学者来说学习Python是不错的选择,一方面Python语言的语法比较简单易学,另一方面Python的实验环境也比较容易搭建。学习Python需要的时间取决于三方面因素。(推荐学习:Python视频教程)其一是学习者是否具有一定的计算机…

karatsuba乘法

karatsuba乘法 Karatsuba乘法是一种快速乘法。此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表。[1]此算法主要用于两个大数相乘。普通乘法的复杂度是n2,而Karatsuba算法的复杂度仅为3nlog3≈3n1.585(log3是以2为底…

在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure

【题外话】 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在其他机器上运行程序,进而需要远程调试功能&#xff0c…

服务器定期监控数据_基础设施硬件监控探索与实践

本文选自 《交易技术前沿》总第三十六期文章(2019年9月)陈靖宇深圳证券交易所 系统运行部Email: jingyuchenszse.cn摘要:为了应对基础设施规模不断上升,数据中心两地三中心带来的运维挑战,深交所结合现有基础设施现状,以通用性、灵…

LeetCode206:Reverse Linked List

Reverse a singly linked list. 分别用迭代和递归实现 struct ListNode {int val;struct ListNode *next; }; 迭代实现: struct ListNode* reverseList(struct ListNode* head) {struct ListNode *pre NULL;struct ListNode *cur head;while( cur ! NULL ){struct…

VS2010问题汇总

问题1:error C3872: "0xa0": 此字符不允许在标识符中使用 error C3872: "0xa0": 此字符不允许在标识符中使用 或者 error C3872: 0xa0: this character is not allowed in an identifier 解法:这是因为直接复制代码的问题。0xa0是…

交叉编译HTOP并移植到ARM嵌入式Linux系统

原创作品,允许转载,转载时请务必以超链接形式标明文章、作者信息和本声明,否则将追究法律责任。 最近一直在完善基于Busybox做的ARM Linux的根文件系统,由于busybox是一个精简的指令集组成的简单文件系统,其优点就是极…

vue如何获取年月日_好程序员web前端教程分享Vue相关面试题

好程序员web前端教程分享Vue相关面试题,Vue是一套构建用户界面的渐进式框架,具有简单易用、性能好、前后端分离等优势,是web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能。接下来好程序员web前端教程资源就给大家分享…

Underscore.js (1.7.0)-函数预览

集合(Collections)(25) - each- map- reduce- reduceRight- find- filter- where- findWhere- reject- every- some- contains- invoke- pluck- max- min- sortBy- groupBy- indexBy- countBy- shuffle- sample- toArray- size- partition数组&#xff0…

react dispatch_React系列自定义Hooks很简单

React系列-Mixin、HOC、Render Props(上)React系列-轻松学会Hooks(中)React系列-自定义Hooks很简单(下)我们在第二篇文章中介绍了一些常用的hooks,接着我们继续来介绍剩下的hooks吧useReducer 作为useState 的替代方案。它接收一个形如(state, action) > newStat…

三大UML建模工具Visio、Rational Rose、PowerDesign的区别

本文源自http://developer.51cto.com/art/201006/207993.htm UML建模工具Visio 、Rational Rose、PowerDesign的比较 ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建模的支持,但是在现在…

内核中的内存申请:kmalloc、vmalloc、kzalloc、get_free_pages 之间的区别

kmalloc vmalloc kzalloc get_free_page()是内核空间申请内存空间函数 malloc是用户空间申请内存函数 一 ,kmalloc() 与 kfree() 和get_free_page的区别 1,用于申请较小的、连续的物理内存:使用的是内存分配器slab一小片。申请的内存位于物理内存…

前端 保存后端传来数据的id_一篇来自前端同学对后端接口的吐槽

前言去年的某个时候就想写一篇关于接口的吐槽,当时后端提出了接口方案对于我来说调用起来非常难受,但又说不上为什么,没有论点论据所以也就作罢。最近因为写全栈的缘故,团队内部也遇到了一些关于接口设计的问题,于是开…

2018-2019-1 《信息安全系统设计基础》教学进程

《信息安全系统设计基础》教学进程 目录 考核方式暑假准备教学进程 第01周学习任务和要求第02周学习任务和要求第03周学习任务和要求第04周学习任务和要求第05周学习任务和要求第06周学习任务和要求第07周学习任务和要求第08周学习任务和要求第09周学习任务和要求第10周学习任务…

python字符串是什么_python字符串详解

字符串详解 在python中引号引起来的就是字符串 字符串是用来存储少量数据 索引 索引(下标) 通过索引可以精确的定位到某个元素 name "meat" meat 每一个字母叫做一个元素 # 0123 从左向右代表每一个字母 #-4-3-2-1 从右向左每一个字母 print(name[-1]) 输出 t name …

最小编辑代价

最小编辑代价问题: 对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。 给定两个字…