实用篇如何使用github(本地、远程)满足基本需求
一、结构:
|--工作区
|--版本库
|--stage——add,可以每个添加到暂存区
|--master——commit 一次性提交到版本库
具体的理论可以参考我的另一篇博客:Git版本控制系统VCS
二、本地github操作
1、安装git
github官网下载桌面版,会有个git shell,安装就成功了。测试;git
ubuntu是:sudo apt-get install git
安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2、创建版本库
step1--其实就是创建一个文件夹
mkdir sunseazhu
cd sunseazhu
step2--通过git init命令把这个目录变成Git可以管理的仓库
git init
step3--创建一个readme文件,内容如下,并拷贝到该仓库中
Hello git,welcome!
step4--用命令git add告诉Git,把文件添加到仓库:
git add readme.txt
step5--用命令git commit告诉Git,把文件提交到仓库:
git commit -m "wrote a readme file"
3、查看当前的仓库状态
仓库分支情况、提交情况等。
1)git status
显示:On branch master
nothing to commit, working directory clean
修改一下readme内容,再执行git status显示
2)git diff
告诉你修改后的内容和之前的差异
3)git add readme
git commit -m "edit it one"
4、版本回退相关操作
1)git log:查看当前git操作的日志,就是git commit -m "anotation"
git log --pretty=oneline:只显示一行,前面乱七八糟的id号
2)git reset --hard HEAD^
在Git中,用HEAD表示当前版本,也就是最新的提交d33a…aed95,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
3)上面回到了以前的版本,如何回来
(1)只要前面的commit id还能看到,就可以直接写前面几个数字就行了
git reset --hard d33a
(2)git reflog 可以查看之前的commit id
5、关于修改的问题
1)第一次修改 -> git add -> 第二次修改 -> git commit
git commit只提交添加到暂存区的文件,而与工作区的没关系,故会存在多次修改后只提交第一次修改的情况。
git diff HEAD -- readme.txt:查看工作区的和版本仓库中的不同
2)git checkout -- readme.txt
修改过的文件,不想要了,可以撤销命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销
若修改的文件没放到暂存区则撤销到版本库的状态,否则暂存区的状态
3)git reset HEAD readme.txt
此时想把暂存区的文件修改撤掉。
6、删除文件
rm test.txt
这时候工作区中的文件就和版本库中的不同了,git status可以查看。两种选择。
1)确实从版本库中删除该文件,那就用命令git rm删掉,并且git commit
git rm test.txt
git commit -m "remove test.txt"
2)另一种情况是删错了,可以很轻松地把误删的文件恢复到最新版本.
git checkout -- test.txt
注:此时知道git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
至此,本地版本库基本操作完成,下面介绍远程仓库
三、远程github操作
1、在GitHub中创建一个仓库learngit
2、git remote add origin git@github.com:sunseazhu/learngit.git
添加后,远程库的名字就是origin,相当于给learngit起了个别名,这是Git默认的叫法,也可以改成别的。
3、把本地库的所有内容推送到远程库上
git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
git push origin master
4、从远程库中克隆
git clone git@github.com:michaelliao/gitskills.git
参考博客: 1、廖雪峰的官方博客——使用GitHub
2、易百Git教程
实用篇如何使用github(本地、远程)满足基本需求的更多相关文章
- Docker实用篇
Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦. 分布式系统中,依赖的组件非常多,不同组件之间 ...
- 【Git】简单地使用github当做远程共享仓库
简单地使用github当做远程共享仓库 1.进入各自的github,选取一个人的github作为总的远程共享仓库,其余成员每次修改完项目后pull request请求合并自己的修改内容. 2.其余开发 ...
- windows下使用git和github建立远程仓库
转自(http://www.bubuko.com/infodetail-430228.html) 从昨天开始就在看git的使用,因为在Windows下很多命令行操作都比较坑爹,但是今天再走了无数弯路之 ...
- MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件 一.全局配置 全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html <?xml versi ...
- MyBatis 实用篇(一)入门
MyBatis 实用篇(一)入门 MyBatis(http://www.mybatis.org/mybatis-3/zh/index.html) 是一款优秀的持久层框架,它支持定制化 SQL.存储过程 ...
- 乐鑫esp8266基于freeRtos实现私有服务器本地远程OTA升级
目录 一.前言: 二.回顾下OTA的流程: 三.lwip网络框架的知识的使用: 四.如何处理服务器返回的数据? 五.扇区的擦除和烧写? 六.如何调用? 七.好好享用吧! 八.下载: 九.工程截图: 代 ...
- Android基础新手教程——1.5.2 Git之使用GitHub搭建远程仓库
Android基础新手教程--1.5.2 Git之使用GitHub搭建远程仓库 标签(空格分隔): Android基础新手教程 本节引言: 在上一节中.我们学习了怎样使用Git.构建我们的本地仓库.轻 ...
- git设置github的远程仓库的相关操作
git能够把github作为远程仓库,本地可以进行推送有关变更,从而多人可以进行协作开发工作. 1 ssh-keygen -t rsa -C "your-email@163. ...
- iOS开发——实用篇&提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
随机推荐
- PyTorch在64位Windows下的Conda包(转载)
PyTorch在64位Windows下的Conda包 昨天发了一篇PyTorch在64位Windows下的编译过程的文章,有朋友觉得能不能发个包,这样就不用折腾了.于是,这个包就诞生了.感谢@晴天14 ...
- FreeBSD Try to set MAKE_JOBS_UNSAFE=yes and rebuild before
FreeBSD Try to set MAKE_JOBS_UNSAFE=yes and rebuild before,玛德,FreeBSD安装软件就是蛋疼~ mark In some ports th ...
- 利用ascx输出knockoutjs的模板
项目里面的UI模板在一个页面中有2K多行了.需要增加新的UI样式.问题来了.加上js代码,几乎是变成了不可维护的状态.增加和修改都需要用ctrl+f的方式找到对应的模板,然后进行处理.很容易出错.突然 ...
- es6中顶层对象属性≠全局属性
先思考一下下面代码的输出结果是什么 const a = { x:1, fn:()=>this.x+=1 } const x = 1 a.fn() console.log(a.x,x) 正确答案为 ...
- eclipse 遇关键字enum编译问题解决
今天公司系统升级 JDK1.4 到 JDK1.5, 结果工程在eclipse中编译不能通过: Enumeration enum = ………… 但是eclipse报错: Multiple markers ...
- JSP接口浅析
一.tree型关系 JSP页面继承了org.apache.jasper.runtime.HttpJspBase抽象类并实现了org.apache.jasper.runtime.JspSourceDep ...
- Android无线测试之—UiAutomator UiDevice API介绍八
获取包名.开启通知栏.快速设置.获取布局文件的方法 一.包名.通知栏.快速设置.布局文件等相关知识: 1)包名:标示应用的符号,每个应用的名字 2)通知栏:从主界面的顶端向下拉,就可以打开通知栏 3) ...
- [Spring MVC]学习笔记--基础Servlet
Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端. Servlet的客户端提出请求并获得该请求的响应. 对于所有的客户端请求,只需要创建Servlet的实 ...
- 3673: 可持久化并查集 by zky
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2170 Solved: 978[Submit][Status ...
- EasyNVR和EasyDSS云平台联手都不能解决的事情,只有国标GB28181能解决了
需求痛点 我们经常收到这样一种需求,就是将客户手里的各种类型的网络摄像机IPC和网络硬盘录像机NVR进行统一的整合接入和管理,并进行常规的直播.存储.录像检索和回放等操作,而这个时候我们通常会选择用E ...