Git和Github的基本操作
一、了解Git和Github
1、什么是GIT?
Git是一个免费、开源的版本控制软件
2、什么是版本控制系统?
版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况得系统。
- 系统具体功能
 
记录文件的所有历史变化
随时可恢复到任何一个历史状态
多人协作开发或修改
错误恢复
版本控制的工具:
- svn
- git :软件帮助使用者进行版本的管理
3、什么是Github
Github是全球最大的社交编程及代码托管网站(https://github.com/)。
Github可以托管各种git库,并提供一个web界面(用户名.github.io/仓库名)
4、 Github和Git是什么关系
Git是版本控制软件
Github是项目代码托管的平台,借助git来管理项目代码
二、使用Git
一个创业者的故事:
项目背景:这个创业者想开发一个资源共享的系统
阶段一:顺利上线代码
首先在你创建的项目的文件夹里面右键--->点击Gir Bash Here---->吧git运行起来。
1、初始化:git init
2、如果你第一次使用git的时候,需要配置一下。如果你已经配置了,以后就不用配置了

3、吧当前的目录以及及所有的子文件添加到git:git add . #所有的文件
git templates/index.html #具体添加的文件
4、真实的吧数据提交上线:git commit -m "描述信息"
5、查看状态,看那个是否被修改过:git status
一定记得先add,后commit,add之后是没有放到版本里的,只有commit的时候才有版本
6、查看有几个版本:查看版本提交记录 :git log
7、回滚到上一个版本:git reset --hard 版本号
没一次生成的时候commit后面都会随机的生成版本号
8、再跳回去(查看往后的版本号):git reflog

Git把管理的文件分为了两个区域四个状态。

add到暂存状态的时候成绿色了,在commit的时候就没有了
提供了这个回滚的功能。

阶段二:当开发到一半的时候出现bug,修复bug
- 开发直播功能(预计一周开发完成)
当项目开发到一半的时候,出现bug了怎么办?
解决思路:把我们的代码变成没开发之前的代码,改完bug再提交。先把你当前开发的代码拿走,找个地方先存起来。
那么怎么做呢?
方案一:修复bug:stash
stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
特别的:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。

stash相关常用命令:
- git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
 - git stash list 查看“某个地方”存储的所有记录
 - git stash clear 清空“某个地方”
 - git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
 - git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
 - git stash drop 编号,删除指定编号的记录
 
当你新开发的代码和你修复的代码发生冲突的时候就手动解决冲突。
方案二:修复bug:利用分支(推荐)
默认会有一个master的分支。只做线上的版本,注意不要在master分支上修改,要修改的话就创建一个bug分支
1、创建一个修复bug的分支:git branch bug ,这个bug分支是在master分支上建的,相当于拷贝了一份
2、查看一共有几个分支 : git branch
3、跳转到bug分支:git checkout bug
4、跳转到master分支:git branch master
5、创建一个修复bug的分支:git branch dev #只做开发的版本
现在就有三个分支了,每个分支都是不一样的,bug修复完了,现在就要合并在master上了。
6、master和bug分支合并:git mare bug
7、删除bug分支:git branch -d bug
8、继续开发,切到dev:git branch dev
9、开发完毕,master和dev合并:git marge dev
切换之前一定记得把你的代码提交一下。
合并的时候可能出现冲突,可能不出现,出现冲突了就得手动解决
修复Bug流程:
git branch dev
git checkout dev # 写代码
git add .
git commit -m 'xxx' git checkout master
git branch bug
git chekcout bug # 修复bug
git add .
git commit -m '紧急修复bug' git checkout master
git merge bug git branch -d bug git checkout dev
# 继续开发
阶段三: 两个地方办公
云端需要一个存放代码的地方用Github
公共的
- Github是用来做代码托管的
- 码云,做代码托管
- csdn code ,做代码托管
内部搭建:
- gitlab
1、登录Github
在家里:


创建完成以后

就会有这样一个地址,我们就可以用这个地址来提交

下面是正在往远程推送,完了登录上去就会有mester分支了。

当然我们也可以吧dev也推送过来,和上面一样的方式。
在公司:
克隆


克隆的时候只是把master分支克隆了,其他的怎么拿呢?
用 git pull origin dev #拿到远程的dev
创建目录


                家里:
                    git add .
                    git commit -m 'xx'
                    git remote add origin https://github.com/WuPeiqi/greenlu.git
                    git push origin master 
                公司:
                    # 新公司第一次获取代码
                        方式一
                        git clone https://github.com/WuPeiqi/greenlu.git
                        方式二
                        git init
                        git remote add origin https://github.com/WuPeiqi/greenlu.git
                        git pull origin master 直接拿回来
                        方式三
                        git init
                        git remote add origin https://github.com/WuPeiqi/greenlu.git
                        这的两句相当于git pull origin master 这一句
                        git fetch origin master  拿到分支上了
                        git merge origin/master  合并在一起
                    # 日后
                        git pull origin master  #
                        或者
                        git fetch origin master
                        git merge origin/master 
                    #   如果你在本地修改问题,又add,又提交,在线上去拿的时候,或许会冲突
                    
小应用:
vim a1.py #查看内容
cat a1.py   #查看内容
当你在家的时候吧代码上线了。到了公司以后吧线上的代码拉回来。git pull origin dev
开始写代码了。
写完之后add commit。。。这时候忘了往github上提交了
回到家的时候,那今天写的代码没提交,怎么办呢?回公司太晚了,在写一遍浪费时间
,或许你还记着今天写的代码,就在这基础上又开发了,
这下提高了警记了,就记得提交了  add 、commit 、git push origin dev
第二天又到公司了,那昨天的代码怎么办呢、、?是拉下来呢?还是推上去呢?
如果你推上去的话,没有冲突还好,如果有冲突的话,那你把你的冲突都上线了,不让你提交,所以我们要先拉下来
先去吧代码拉下来,git pull origin dev 可能会有冲突,解决冲突。
Git和Github的基本操作的更多相关文章
- git操作github仓库基本操作
		
一.登录 首次登录 $ git config --global user.name "Your Name" $ git config --global user.email ‘yo ...
 - Git和Github的使用
		
Git和Github的基本操作 一.了解Git和Github 1.什么是GIT? Git是一个免费.开源的版本控制软件 2.什么是版本控制系统? 版本控制是一种记录一个或若干个文件内容变化,以便将来查 ...
 - Git和Github的应用与命令方法总结
		
title: Git和Github的应用与命令方法总结 date: 2016-07-11 14:03:09 tags: git/github [本文摘抄自微信公众平台:AndroidDeveloper ...
 - SVN 、Git、Github的使用
		
1.1 SVN 总结以及使用建议 每一次保存历史记录实际上就是一次提交 什么时候去保存历史记录? 完成了一个具体的功能模块 代码运行没有bug 当天工作结束提交一次 没有 bug 的前提下去提交一次 ...
 - 适合小白/外行的git与github最基础最浅显教程
		
首先声明,这是适合小白/外行/初学者/学生看的最基础最简单的git与github教程,已经能使用svn,git等工具的朋友请不要看这篇文章来浪费时间了. 想进一步学习git的,推荐去廖雪峰博客学习. ...
 - GIT和GitHub的使用总结
		
目录 一.GIT初始化设置: 创建密钥 添加远程仓库 用户名邮箱配置 Clone远程仓库 创建本地仓库 代理设置 自定义操作 二.GIT基本操作 添加到暂存区区 提交 删除 版本回退 撤销修改 三.G ...
 - git与github的简单使用教程
		
git与github的简单使用教程 一.创建仓库 点击new,进入创建仓库页面 对将要创建的仓库进行一些简单的设置 最后再点击create repository就可以了. 到这我们就创建好了一个仓库. ...
 - Git、Github、Gitkraken 学习笔记
		
<Git.Github.Gitkraken 学习笔记> 一.写在前面 1.参考资料 本文参考 <Pro Git> 一书. 在官网有免费在线版可供阅读:https://git-s ...
 - 简单使用Git和Github来管理自己的代码和读书笔记
		
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
 
随机推荐
- 【JS】正则向前查找和向后查找
			
正向查找:就是匹配前面或后面是什么内容的,所以分类是:正向前查找,正向后查找 负向查找:就是匹配前面或后面不是什么内容的,所以分类是:负向前查找,负向后查找 操作符 说明 描述 (?=exp) 正 ...
 - java中出现内存溢出的几种情况
			
情况一:java.lang.OutOfMemoryError: Java heap space 原因:java堆内存不足,可能是真的不足,也可能是程序中有死循环 方案:1.调整JVM参数-Xms204 ...
 - Jmeter+Ant+Jenkins 接口自动化之简单demo
			
之前的文章我们已经分享过了 Jmeter+Ant 的批量执行 ,并且搭建好了Jenkins部署平台,如何再将三者完美结合呢? 1.首先打开Jenkins主页面,进入“系统管理-插件管理”,安装相关的插 ...
 - mysql 8.0 ~ 索引优化
			
一 简介:今天来聊天mysql8.0关于索引二 增强1 支持隐藏索引,这个可以用来测试创建的索引是否具有优化作用 创建 alter table t1 alter index u1 invisibl ...
 - JAVA锁和volatile的内存语义&volatile的使用场景
			
JAVA锁的内存语义 当线程释放锁时,JMM(Java Memory Model)会把该线程对应的本地内存中的共享变量刷新到主内存中. 当线程获取锁时,JMM会将该线程对应的本地内存置为无效.从而使得 ...
 - Aizu - 2200 Mr. Rito Post Office
			
题意:/*你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处.而且岛 ...
 - IDEA在同一窗口导入多个项目
			
在同一窗口打开多个项目 1. 当前窗口: 2. 3. 选择import module即可.然后一直点击next导入OK即可. 同一窗口目录下创建多个项目 1.File→New→Module 2.Ja ...
 - pythonのgevent同步异步区别
			
#!/usr/bin/env python from urllib import request import gevent from gevent import monkey import time ...
 - 使用SQL*Plus连接数据库
			
About SQL*Plus SQL*Plus is the primary command-line interface to your Oracle database. You use SQL*P ...
 - Netty实现简单私有协议
			
本文参考<Netty权威指南> 私有协议实现的功能: 1.基于Netty的NIO通信框架,提供高性能异步通信能力 2.提供消息的编码解码框架,实现POJO的序列化和反序列化 3.提供基于I ...