git 和github
ssh
git:
是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。
就是你可以通过git来更加便捷的对你的代码进行操作管理
下面介绍下 widows的git'操作:
首先要先下载git这个工具:
下载地址:
https://git-scm.com/download/win
安装就是一直的不停的下一步下一步
当你安装好后i就可以使用git对你的代码进行操作了
首先你要进入你的代码目录然后右击鼠标 选择 Git Bash Here
让git在你这个目录下进行运行
当你用git打开一个目录后 先初始化git
git init
当你初始化完成后需要告诉你的git谁登陆了 才能执行
输入你的邮箱和姓名 这个可以随便输入 但是必须要输入
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
然后就进入了gitc的正式操作了
我门可以先查看这个目录内的所有文件
git status ---->查看当前目录下的所有文件的状态
如果还都是红色的就是没有提交的 我们需要提交 然后保存 方便我们不小心对代码搞错了以后可以很方便的回到当前的状态
查看完状态后就可以通知这些文件准备保存了 :
git add + 指定文件 ----->只让这一个文件进行准备 git add . --------> 这个是把整个目录文件进行准备
这个时候你就可以
把你准备好的文件进行提交设定了:
提交的意思是你以后的现代码除了问题可以从你提交的内容中找到你当时提交的代码状态进行回滚到当时的状态
git commit -m '提交的名字' 这个是提交你的准备的代码 起的名字尽量全面方面以后的回滚
下面就是查看你所有的保存
git log ----->查看你提交的保存 git reflog ------>查看你的保存 比log权限大 还可以查看你删除过的保存
git log显示的是一串id
git reflog
查看的是有几个id的
回滚: git reset --hard +保存id
回滚是当你的代码发生了崩溃你想要回到你最初的保存位置就可以回滚到以前保存的位置 根据你保存的id'来回滚
git reset --hard +要回滚的保存id 就可以回滚到你想要回滚的状态 这个id就是先用log来查看的 然后你选择 你要回滚的id就可以了
当我现在有三次保存 我回滚到第一次保存的时候log就只能看到剩余的保存了 我回滚到第一次保存的 只能剩余的第一次了
然后reflog就可以看到你所有的 然后你再通过你reflog找到的保存id进而再回滚就可以再回到你的第二次 第三次保存的状态
所以回滚就是通过git reset --haed 选择你保存的状态id然后选择你回滚的状态
如果当你的代码写着写着突然之前的时候你像先把现在的保存 然后去把之前的代码调出来看看个时候怎么办呢?
你可以先把现在的代码保存在一个地方之后 然后再去查看之前的 然后再把你现在保存的调出来
git stash ------>把你当前的代码先保存再一个地方中 git stash list ----->查看你所保存的所有文件 git stash pop ------>取你的最近一次的保存的文件 git stash clear 清空你这个保存的地方 git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop 编号,删除指定编号的记录
当你的代码出现了bug的时候几记住一定要建立一个分区来修改你的bug不能在master这个分区上修改 这个就相当于主分区所有的正式代码都在上面运行
我们新建立一个分区然后把master中的代码拷贝过去 然后改完代码后再发送到master上就可以了,防止你在主分区上做了不该做的
查看你所有的分支:
git branch ------>查看所有的分区
创建分区
git branch +分区名
git branch +分区名 ----->创建分区 git branch dev 创建一个dev分区
切换分区:
git checkout +分区名 git chechout dev 切换到dev分区
删除分区:
git branch -d +分区名 git branch -d dev 删除dev 分区
合并分区:
git merge +合并的分区 比如你现在所在分区master 分区
git merge dev 这个是把你的dev的分区和master进行合并
注意:你想把另外一个分区合并到这个分区必须要先切换到这个分区下
问题:你们在公司如果遇到要紧急修复的bug,怎么解决?
在master分支上创建一个debug分支,在debug分支上进行修复,修复完毕后再合并到master并删除debug分支;
再次切换会dev分支,进行开发....
git pull
将远程存储库中的更改合并到当前分支中
举例:拉取最新的dev分支代码
git pull orgin dev
与git pull相比,git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。
等价于(分叉提交):
git fetch origin dev #获取dev分支所有内容 但是不会自动合并 需要的手动合并
git merge origin/dev # 合并分支内容
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
约等于(不分叉):
git fetch origin dev #先拉取
git rebase origin/dev #然后切换到不分支的模式
git rebase
rebase命令可以使我们的提交历史干净、简洁!
看下面的结果图,是比较乱的
使用下面2命令解决
git fetch origin dev
git rebase origin/dev
面试题:你们是否做代码review?
再创建一个review的分支,由组长老大(资深的开发)来进行查看。
git rebase 和git merge 区别:
rebase
本地两个分支 一个我的分支 test 一个主分支 master 现在我修改的部分要合并到 master 上,可以有两种选择 merge 或者 rebase 两者的最后得到的结果是一样的,但是区别是 rebase 两个分支 rebase之后只有了一个分支,如果你在dev执行的git rebase然后你之后的提交记录只显示dev分支的记录的不显示其他的分支的了 而merge 则还是两个分支,只不过在merge后这个点交汇
issue
进行项目问题的讨论
打开github项目,这里有一个issue
有些公司项目,都是用issues进行提问的。比如项目中遇到什么问题,该如何解决?
而不是直接找人去提问,因为大家都很忙,忙着写代码!
当然了,这个得看公司。有些公司直接用QQ交流,或者直接当面提问!
wiki
这个就是知识库,列举一些项目中,遇到比较多的问题!避免重复提问。
一般是写接口文档,哪个接口,对应的是哪个功能,如果调用,参数是什么。新手一看,就懂了!
github:这是一个在线的代码管理保存工具,是代码管理仓库
你可以把你的在某一处写的代码用git上传到这里 然后再到另外一处取下载,方便
比如你在家开发的代码不第二天去了公司 你不想带电脑了 然后你用git保存的版本可以都上传到github然后到了公司下载以前的版本然后进行继续的编辑
一般github上的上传的都是公共的,github的私有个人文件是收费的 码云是一个可以创建1000个的免费的私有文件的 一般的公司都是运用gitlab进行自己的代码仓库的搭建命令和github的一样
github上你首先先创建用户 然后邮箱验证完后进行你的代码上传
你可以在你的本地的git后的代码的文件夹找到congi中 然后url配置用户名密码这样以后在上传就不需要密码了 但是这样太不安全了我们可以在你的git上写上你的上传用户名
因为你的GitHub上传的时候要先建立好文件夹然后你的git通过这个地址上传
找到这个地址上传 但是要加上用户名和密码
git remote add origin https://用户名:密码@ +你的项目文件夹地址
上传之前你要先选定你的代码git add .
然乎进行一个保存 git commit -m '名字'
然后才能上传
然后这是选定文件夹还需要上传
git push origin dev #选择你上传的分区的代码
git push origin master
然后你到了公司第一次需要把整个代码下载下来
就需要克隆
git clone https://用户名:密码@+代码地址 git branch dev #创建分区
git checkout dev 切换分区
git pull origin dev 选择代码下载分区
第一次需要克隆整个代码 以后就不需要了 以后直接下载就是更新代码了
当你在同一个文件中需要第二次上传到不同的GitHub组中,你的文件内需要删除当前的url不然 你提交的还是你以前的目录下的内容 更换你当前的url
删除你以前的url可以手动取config内 也可以用命令
git remote remove orgin
然后再加上你现在的url就可以了
git remote add origin https://用户名:密码@ +你的项目文件夹地址
如果再提交代码的时候报错:
这个是在提交的时候需要强制提交:
git push -f origin +分支
如果不行再试试下面的
把当前分支代码上传到指定分支上
$ git push -u origin develop
结果是可以的。
给别人的代码进行提交bug:
先Fork 再pull request
ssh上传github:
ssh上传文件和http上传其实也就是要多设置一个密钥
http上传的时候就只需要点击你的项目右上侧来切换你的http或者ssh上传
使用ssh上传的时候你需要在你的本地git先生成一个随机字符串然后保存到你的github然后让他们两个通过这个密钥来进行连接,
在本地先安装ssh
ssh 先安装ssh ssh -keygen -t rsa 生成密钥
安装完毕后然后生成密钥,
然后去你的电脑本地找到你的ssh文件夹然后找到id_rsa.pub文件复制 你的密钥:
输入ssh-keygen -t rsa
命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就就会生成两个文件,分别为id_rsa
和id_rsa.pub
,即密钥id_rsa
和公钥id_rsa.pub
. 对于这两个文件,其都为隐藏文件,默认生成在以下目录:
- Linux 系统:
~/.ssh
- Mac 系统:
~/.ssh
- Windows 系统:
C:\Documents and Settings\username\\.ssh
- Windows 10 ThinkPad:
C:\Users\think\.ssh
这个时候我们复制ssh文件内的id_rsa.pub进行复制后然后打开github的右上侧头像部 settings
然后选择SSH and GPG keys
再选择:
标题可以不写 只是把id_rsa.pub内的 密钥放在key部分 然后就可以
再去git上验证
ssh -T git@github.com 验证本地的git和github的ssh是否连接成功
这样就可以执行我们的连接了 建立连接 然后上传了
具体操作:https://blog.csdn.net/qq_35246620/article/details/69061355?locationNum=11&fps=1
e. 代码仓库,
个人:
- github
- 码云
公司:
- gitlab 模拟情况:
创建代码仓库:https://github.com/ayuchao/bjhot.git 家里:
git remote add origin https://用户名:密码@github.com/ayuchao/bjhot.git git push origin dev
git push origin master 公司:
git clone https://用户名:密码@github.com/ayuchao/bjhot.git
git branch dev
git checkout dev
git pull origin dev 写代码
git add .
git commit -m 'xxx'
git push origin dev 家里:
git pull origin dev
写代码
git add .
git commit -m 'xxx'
git push origin dev
公司:
git pull origin dev
写代码
git add .
git commit -m 'xxx'
git push origin dev
总结:
git做版本管理:本地
github是代码托管仓库:远程 1. 请书写你了解的git命令?
准备:
git init
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git remote add origin https://github.com/ayuchao/bjhot.git
git remote add origin https://用户名:密码@github.com/ayuchao/bjhot.git 提交:
git add .
git commit -m 'xxxxx'
git push origin dev 下载:
git clone https://github.com/ayuchao/bjhot.git 等价于:
1. 手动创建文件夹bjhot
2. 进入文件夹
3. git init
4. git remote add origin https://用户名:密码@github.com/ayuchao/bjhot.git
5. git pull origin master git pull origin master 合并:
git merge 日志回滚:
git log
git reflog
git reset --hard asdfasdfasdfadsfasdfasdf 暂存:
git stash
git stash pop
总结
协同开发:
因为协同开发者只能有5个免费的,我们建立完5个开发者后可以建立合作者也在组内的settings中
我们协同开发的时候可以建立组织或者分组:
组织可以很多人一起讨论进行开发 并且设置权限:
然后就对你的组织进行起名字:
因为组织有限制的人数,我们可以在组织内邀请协同者可以无限制:
点击settings可以对组织进行删除修改之类的操作
git init ----->初始化你的git 让你的git能在你的这个目录下运行 git
git 和github的更多相关文章
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议
1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...
- git与github安装、配置、pull、push
操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
- git与github使用
Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...
- linux下git以及github的连接与使用
简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...
- Git和Github简单教程
原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...
- Git和Github简单教程(转)
这篇文章只挑一部分命令来讲,差不多够用就行的程度.如果需要其他命令,到时候再去其他地方了解就行了先在Github上写好再搬过来的:本文Github链接 目录: 零.Git是什么 一.Git的主要功能: ...
- WebStorm和sublime上使用git连接github(转)
WebStorm使用git连接github的方法: 用webstorm上传代码时,首先要先下载git,网址一搜就可以搜到,安装git,并且把ssh配置到github上.然后开始配置webstorm,打 ...
- git和github使用方式
git 和github github是远程管理代码的服务器的名称 git代码管理系统 (git既然是一个系统,所以说git也有一些命令) git操作过程 首先在本地建立一个仓库,用来把代码提交到git ...
随机推荐
- javascript的JSON对象
JSON包含用于解析JSON(javascript object notation)的方法,将值转换成JSON.JSON不可以被调用或者用作构造函数. JSON对象保存在大括号内,JSON数组保存在中 ...
- js中请求数据的$post和$ajax区别(同步和异步问题)
$.post和$.Ajax都为页面上向后台发送请求,请求数据 1.post 因为post默认为异步请求,可是有时候我们会发现,本来要求请求马上出现,可是异步会导致后面突然再执行,这样就出很多问题 2. ...
- AES加密的四种模式详解
对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密: A ...
- 2-8 js基础 jsonp封装
'use strict'; function jsonp(json){ json = json||{} if(!json.url)return; json.data=json.data||{}; js ...
- url解码
最近在做流量分析的项目.需要将url解码.写了个代码,先存一下,有时间再仔细写写. #include <stdio.h> #include <stdlib.h> #includ ...
- Scrum 冲刺博客第八篇
一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 对界面进行美化 今天计划完成的工作 连接数据库实现排行榜的基本功能 工作中 ...
- 数据库命令行操作语句 linux 详细
1.连接数据库 命令: use <数据库名> 2.查看表的引擎类型等状态信息 SHOW TABLE STATUS [FROMdb_name] [LIKE 'pattern'] 3.当前数据 ...
- IOS runtime动态运行时一
对运行时不太了解,今天小伙伴橄榄油陈高给发了个链接 ,看了一部分先存着以后慢慢品 http://www.cocoachina.com/ios/20141018/9960.html http://blo ...
- TLD(Tracking-Learning-Detection)一种目标跟踪算法
原文:http://blog.csdn.net/mysniper11/article/details/8726649 视频介绍网址:http://www.cvchina.info/2011/04/05 ...
- 通过POST请求上传文件
转自:https://blog.csdn.net/zhangge3663/article/details/81218488 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交 ...