Github基本操作的学习与温习
GitHub是最先进的分布式版本控制工具,下面是我学习中总结的操作流程,仅供参考
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Git安装
下载git的windows版本并安装,不予详述(直接打开安装包,按默认的流程一步步进行即可,任意位置点击鼠标右键弹出git 字样的选项时即为安装成功)
安装成功后输入下面命令进行设置
$ git config --global user.name "你的git账号"
$ git config --global user.email "你注册git账号的邮箱"
Git操作:
创建版本库
- 选择一个地方创建空目录(所有目录名必须是英文的,中文的会出bug)
- 输入下列命令
$ mkdir learngit //learngit为仓库名,可以自己命名
$ cd learngit
$ pwd //显示当前目录
$ git init //将目录变为git管理的仓库
- 添加文件,在learngit文件夹下创建文件,输入下列命令
$ git add 文件名 //文件名是创建文件的名字
$ git commit -m "注释"//-m后面提交的是文档说明,这个必须要有,否则报错
修改版本库:
- 查看仓库状态:
$ git status
- 查看修改内容:
$ git diff 文件名
- 查看历次版本历史纪录
$ git log
- 回退上次版本
$ git reset --hard HEAD^
- 回退到任意一个版本
$ git reset --hard num //num 为要回退到某个版本的版本号,部分即可
- 查询历史命令
$ git reflog
- 查询工作区和版本库里面的最新版本的区别
$ git diff HEAD -- 文件名 //要查询文件的名字
- 放弃工作区文件的修改(此命令中的两个横杠很重要,不能少写)
$ git checkout -- 文件名 //放弃修改的文件名称
- 撤销暂存区文件的修改
$ git reset HEAD 文件名
Git工作时候实际上是工作区->暂存区(stage)->分支(master为git自动创建的分支),HEAD为指向master 的一个指针。Git add实际上是将文件提交到了暂存区。Git commit是将暂存区的所有内容都提交到分支,可以先执行多个add,
再使用一个commit提交。
如果直接将文件管理器中的文件删除或者使用rm命令删除,工作区和版本库的内容就会不一致,此时:
- 可以选择直接从版本库中删除文件
$ git rm 文件名
$ git commit
- 文件删除错误,这时可以从版本库里还原文件
$ git checkout -- 文件名
连接git网站:
- 创建SSH Key,在user目录下(用户主目录),查看是否有.SSH文件,并且查看其下面有无id_rsa(私钥,不能告诉别人)和id_rsa.pub(公钥,可以告诉别人)文件,如果没有可以运行命令创建
$ ssh-keygen -t rsa -C "邮箱名"
- 登陆GitHub网站,打开“SSH Key”页面,点击“new SSH”,输入任意名,粘贴公钥内容
有本地库后创建远程库:
- 登陆网站,点击“create a new repository”,创建新库,设置名称learngit,点击创建
- 将本地内容关联到远程库里面去
$ git remote add origin git@github.com:账户名/learngit.git
- 把本地库的内容推送到远程库上,
$ git push -u origin master
第一次推送时使用-u参数关联,后面推送时候就可以简化命令$ git push origin master
从远程库克隆库
- 登陆网站,假设已经创建了一个库gitskill
- 克隆库到本地
$ git clone git@github.com:账户名gitskill.git
$cd gitskill //创建本地文件夹
$ls
创建与删除分支:
- 创建另一个分支dev,并将指针HEAD切换到另一个分支上去
$git checkout -b dev //dev为另一个分支名,记住中间是一个横杠
-b表示创建并切换
- 查看所有分支
$ git brach
- 切换分支
$ git checkout master//切换回master分支
- 合并分支
$ git merge dev //将dev分支合并到当前分支上来
- 删除分支
$ 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等必须暂时离开时,可以保存现在的工作状态
- 储存当前工作状态:
$ git stash //存储当前分支
- 修复bug(假如在master中修复bug)
$ git checkout master // 转到master分支
$ git checkout –b issue-101 //创建新的分支issue-101来修复bug
- 修复完成后:
$ 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 是要删除的分支名字
多人协作:
- 查看远程库的信息
$ git remote
或者使用命令
$ git remove –v //查看远程库更详细的内容
- 推送分支到公共库
$ git push origin 分支名 // origin是远程库的默认名称
注意:
l Master 是主分支,需要时刻与远程库同步
l Dev为开发分支,也需要同步
l Bug 分支只用于本地修复bug,没必要推送
l Feature 是新功能开发分支,这个取决于是否与他人合作开发
- 抓取分支,当开发者同时更新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/版本号
Github基本操作的学习与温习的更多相关文章
- Github新手使用学习详解
Github新手使用学习详解 (一)git的使用学习 首先下载git bash,安装一路默认选择即可. 安装好后第一步,获取ssh key,即属于自己的密钥: 打开Git bash后输入以下代码: $ ...
- Git、Github、Gitkraken 学习笔记
<Git.Github.Gitkraken 学习笔记> 一.写在前面 1.参考资料 本文参考 <Pro Git> 一书. 在官网有免费在线版可供阅读:https://git-s ...
- Github二次学习
作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正. 本节课视频内容:https://www ...
- Github三次学习
作者声明:本文参照aicoder.com马伦老师的文档,根据自己的学习情况而做的笔记,仅供交流学习. Git入门到高级教程 为什么要进行项目文件的版本管理 代码备份和恢复 团队开发和协作流程 项目分支 ...
- 【项目管理】图解GitHub基本操作
一.注册并登陆到github网站 1.1.打开github网站首页(https://github.com/) 1.2.注册一个自己的github账号 创建账户后再验证自己的邮箱,然后就可以登陆到git ...
- github源码学习之UIImage+YYWebImage
UIImage+YYWebImage是YYWebImage(https://github.com/ibireme/YYWebImage)中的一个分类,这个分类封装了一些image常用的变化方法,非常值 ...
- github 和 github for windows 学习使用总结
github 是最大的开源项目托管平台,是一个网站.但是它不仅仅只能托管开源项目或代码,还能作为我们备份重要资料的平台,更重要的是我们可以通过这个平台来学习和获取别人的代码,避免重复造轮子,还可以多人 ...
- 图解GitHub基本操作
目录 一.注册并登陆到github网站 1.1.打开github网站首页(https://github.com/) 1.2.注册一个自己的github账号 1.3.登陆自己的github账号 二.创建 ...
- 写一个程序,统计自己C语言共写了多少行代码,Github基本操作
前言 在上一篇博客中,本人提到了自己的文件操作可以说是几乎没用过.现在想想,这也算是只在OJ上做题的一个弊端吧.虽然通过OJ做题是一个学习代码好手段,但其他方面也要多多涉猎才好,而不是说OJ用不到文件 ...
随机推荐
- $(document).ready()方法和window.onload()方法
$(document).ready()方法和window.onload()方法 $(document).ready()方法是JQuery中的方法,他在DOM完全就需时就可以被调用,不必等待这些元素关联 ...
- C++ STL中允许重复key的multimap
在实际的项目中可能会碰到key重复的情况,正常的MAP类型是不允许重复的key,所以就要使用multimap了,multimap的使用和map基本类似,可以无缝对接 #include <map& ...
- 前端工程化 ESlint 配置
1.使用的标准 // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style extends ...
- IT痴汉的工作现状36-做好准备再上路
软件开发流程管理是採用瀑布式好还是敏捷好? 如今非常多人会选择敏捷.由于眼下的现状是需求的变化是一天一个样,这是当前(移动)互联网的飞速发展所带来的.当我们仍採用原始的先做全盘的计划.然后在按部就班的 ...
- SSH框架:同一个工程之前可以正常运行,现在不能
一个问题是:有一个CRIMS的项目,之前是可以运行成功的.(这个工作空间就只有这一个项目).但是不知道怎么了,现在运行起来就会出现错误. 配置什么的都没有去修改过,(工程坏了??) 不过有一个奇怪的问 ...
- OSGI 面向Java的动态模型系统
OSGI (面向Java的动态模型系统) OSGi(Open Service Gateway Initiative)技术是Java动态化模块化系统的一系列规范.OSGi一方面指维护OSGi规范的OSG ...
- superobject 序列数据集
unit uDBJson; interface {$HINTS OFF} uses SysUtils, Classes, Variants, DB, DBClient, SuperObject; ty ...
- 本地测试Tomcat配置Https访问
一.tomcat开启HTTPS配置 1) 准备证书 使用jdk工具keytool生成一个ssl测试用证书, 一路按照提示操作输入即可 keytool -genkey -alias tomcat -ke ...
- 【未完成】junit简单使用
参考资料: 一般使用:https://www.w3cschool.cn/junit/ 集成spring: https://www.cnblogs.com/faramita2016/p/7637086. ...
- shell script 在if 的判断条件正则表达式=~中引号问题
今天在脚本里运行if判断的时候,总是进不了对应的分支,检查正则表达式也没有错误.单独拿到shell里面执行还是显示没有匹配.比较奇怪,就搜了下,才发现是在=~ 后面的正则表达式上不能加上引号,而且以点 ...