玩转 Git 与 GitHub

  GitHub地址:https://github.com/leebingbin/html

 

1、Git 是什么

    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到很是大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。git

    Git是目前世界上最早进的分布式版本控制系统。github

2、Git 能干什么

    乍一看,传统的SVN好像也能知足!那 Git 和 SVN 又有何区别呢?windows

3、怎么下载、安装和配置

    一、官网及下载地址: https://git-scm.com/downloads

   

    二、安装与配置

    2.1 Windows 版本安装与配置

    Tips:bash

在“Configuring the line ending conversions”选项中,
第一个选项:若是是跨平台项目,在windows系统安装,选择;
第二个选项:若是是跨平台项目,在Unix系统安装,选择;
第三个选项:非跨平台项目,选择。

    安装完成后,还须要最后一步设置,在命令行输入以下:服务器

    Git是分布式版本控制系统,因此须要填写用户名和邮箱做为一个标识。markdown

    操做系统的用户路径下的.gitconfig文件里面能够看到,刚才设置的用户名和邮箱。ssh

 

    2.2 Linux / Unix 版本安装与配置

下载适用于Linux和Unix
使用Linux发行版的包管理,在Linux上安装Git是最简单的。
若是你喜欢从源代码构建,你能够在kernel.org上找到tarball 。

Debian / Ubuntu
  
# apt-get install git
对于Ubuntu,这个PPA提供了最新的稳定的上游Git版本

# add-apt-repository ppa:git-core/ppa 
# apt update; apt install git

Fedora
# yum install git(直到Fedora 21)
# dnf install git(Fedora 22及更高版本)

Gentoo
# emerge --ask --verbose dev-vcs/git

Arch Linux
# pacman -S git

openSUSE
# zypper install git

Mageia
# urpmi git

Nix/NixOS
# nix-env -i git

FreeBSD
# pkg install git

Solaris 9/10/11(OpenCSW)
# pkgutil -i git

Solaris 11 Express
# pkg install developer/versioning/git

OpenBSD系统
# pkg_add git

Alpine
$ apk add git
红帽企业Linux,Oracle Linux,CentOS,Scientific Linux等。
RHEL和衍生产品一般会运送旧版本的git。能够下载一个tarball并从源代码构建,
或者使用第三方存储库(如IUS社区项目)来获取更新版本的git。

Slitaz
$ tazpkg get-install git

    Tips: dnf命令分布式

    DNF是新一代的rpm软件包管理器。他首先出如今 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。测试

    DNF包管理器克服了YUM包管理器的一些瓶颈,提高了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操做。尽管它没有预装在 CentOS 和 RHEL 7 中,但你能够在使用 YUM 的同时使用 DNF 。 DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的  DNF 包管理器(包括在他以前的全部版本) 都大部分采用 Python 编写,发行许可为GPL v2.

 

    三、Git 经常使用操做

    咱们把文件往Git版本库里添加的时候,是分两步执行的:
    第一步是用“git add”把文件归入Git管理,实际是把本地文件修改添加到暂存区;
    第二步是用“git commit”提交更改,实际上就是把暂存区的全部内容提交到当前分支 。

    由于咱们建立Git版本库时,Git自动为咱们建立了惟一一个master分支,因此commit就是往master分支上提交更改。能够简单理解为,须要提交的文件修改统统放到暂存区,而后,一次性提交暂存区的全部修改。一旦提交完后,若是你又没有对工做区作任何修改,那么工做区就是“干净”的。即:nothing to commit (working directory clean)。

 * 用“git diff HEAD -- filename”命令能够查看工做区和暂存区里面最新版本的区别

 * 新建过撤销未add: git checkout  -- 文件名

 * 撤销已add未commit:先git  reset HEAD  文件名 再 git checkout -- 文件名

 * 撤销已add已commit:       git reset –hard HEAD^


    Tips:Git 经常使用命令

1	新建一个仓库,而且该仓库应该是git类型
	1.1	git init新建git类型的仓库

2	新建文件并放入git仓库
	2.1	touch a.txt   touch a.txt或者vi
	2.2	git add 将新建的a.txt归入git管理
	2.3	git status,查看文件在git仓库中的状态
	2.4	git commit -m "提交修改的信息说明",完成了首次提交
	2.5	新增文件内容,再次尝试提交。

3	git的日志和跟踪管理
	3.1	git log,查看每次操做的日志状况。
		git log --pretty=oneline能够一行显示,查看关键信息
	3.2	git diff,查看内容不一样。

4	git版本的回退
	4.1	退一步,git reset --hard HEAD^,指针回退一步;
	4.2	退多步V1,git reset --hard HEAD^^^^^^^^^^,多个箭号
	4.3	退多步V2,git reset --hard HEAD~数字步数
	4.4	穿梭穿越,git reflog得到头7位版本号,而后
			git reset --hard 7位版本号

5	git三区(见上图)

6	git分支
	6.1	git branch 查看分支
	6.2	git branch 分支名字  做用是新建分支
	6.3	git checkout 分支名  做用是切换分支
	6.4	git merge 目的分支   做用是将目的分之的内容合并进当前分支
	6.5	git branch -d 分支名	做用是删除分支
	6.6	git checkout -b 分支名	做用是新建+切换一步搞定

7	第一种冲突
	分支合并后的冲突,如何解决见VCR。
	
	第二种冲突
	git本地命令和github的交互冲突,
	push提交后的内容冲突,请先pull到本地人工干预收工合并后再push

	第三种冲突TortoiseGit和TortoiseSVN是一样的操做解决
	TortoiseGit--黄色三角感叹号---edit conflict---merge---resolve--commit--->OK

	第四种冲突,Egit处理
	有冲突了先pull,具体见Vcr


8	TortoiseGit 
    能够图形化操做的Git 
		

9	EGit

[branch "master"]
    remote = origin
    merge = refs/heads/master

[remote "origin"]
    url = git@github.com:zzyybs/换成你本身的工程.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = refs/heads/master:refs/heads/master

 

4、Github简介

    GitHub是一个Git项目托管网站,主要提供基于git的版本托管服务。 GitHub是一个基于Git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前咱们使用到的 Git 命令都是在本地执行,若是你想经过 Git 分享你的代码或者与其余开发人员合做。 你就须要将数据放到一台其余开发人员可以链接的服务器上。 

    GitHub 官方网址:https://github.com

    一、注册+检查.ssh秘钥

    因为你的本地Git仓库和GitHub仓库之间的传输是经过SSH加密的,因此咱们须要配置验证信息(No such file or directory表示第一次)

    未配置以下:

    已配置以下:

    二、建立SSH Key

ssh-keygen -t rsa -C "libingbin2015@aliyun.com"


    后面的邮箱即为 github 注册邮箱,以后会要求确认路径和输入密码,一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

 

 

    三、验证 SSH Keys 是否添加成功

ssh -T git@github.com

5、GitHub 与 Git 协同办公 

    一、基本概念


    1.1 必须了解的概念


    (1)仓库 - Repository
    仓库即你的项目,你想在GitHub上开源一个项目,那就必需要新建一个Repository。若是你开源的项目有多个,那么你就有多个Repositories。
    (2)收藏 - Star
    收藏项目,方便下次查看。若是你的项目被收藏的次数越多,那么你的项目也就越受广大开发者的欢迎咯。
    (3)复制克隆项目 - Fork
    若是你开源了一个项目,别人想在你这个项目的基础之上作些改进,而后应用到本身的项目中,这时他就能够Fork你的项目,而后他的GitHub主页上就多了一个项目,只不过这个项目是基于你的项目为基础(至关于别人拿到了一个副本)。Fork以后,他就能够为所欲为地去改进,可是丝绝不会影响原有项目的代码与结构。
    (4)发起请求 - Pull Request
    若是别人在你的项目基础之上作了一些改进,而且以为改得很不错,应该要把这些改进让更多的人受益。因而,他就想把本身的改进合并进原有项目之中,这时他就能够发起一个Pull Request。而原有项目建立人也就是你,能够收到这个请求,这个时候你可能会仔细review他的代码,而且测试后以为OK,就能够接受他的Pull Request,以后他作的改进就能够融入到原有项目之中了。
    (5)关注 - Watch
    相似于微博中的关注,若是你Watch了某个项目,那么之后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。
    (6)事务卡片 - Issue
    你开源了一个项目,别人发现你的项目中有bug,或者哪些地方作的不够好,他就能够给你提一个Issue(即问题)。你若是看到了这些Issue,就能够逐个去Fix修复,修复OK以后就能够一个一个地Close掉。
    (7)GitHub主页
    若是你注册了一个GitHub帐号,那么久会有一个属于你的GitHub主页,该页面左侧主要显示用户动态以及关注用户/仓库的动态,右侧则显示全部的Git库。
    (8)仓库主页
    仓库主页主要显示项目的信息,如:项目代码、版本、收藏/关注/Fork状况 等等。
    (9)我的主页
    我的信息:头像、我的简介、关注个人人,我关注的人,我关注的Git库,个人开源项目,我贡献的开源项目信息 等等。

    1.2 必须完成的准备
    要使用GitHub,首先必须得注册一个GitHub帐号啦!注册过程很简单,就跟你平时注册小网站会员同样,详细信息能够浏览:点此了解注册详情(https://github.com/join
    须要注意的地方就是,选择Free免费帐号完成设置!那么收费的跟免费的有什么区别呢?私有的仓库只有本身或者指定的朋友才有权限操做。


 

    注册完成以后,记住要验证邮箱!若是未验证邮箱,那么你是无法作后续操做的。

 

    二、GitHub基本操做

 

  2.1 建立仓库


  在GitHub中点击New repository活着Start a Project便可:

 

    Step1.填写必要信息:

  Step2.浏览仓库主页 (所需的功能,点击对应的按键操做便可)

    三、与 Git 协同办公

    3.1 本地 到 github 远程库

    情景描述:如今的情景是,我在本地建立了一个OA项目后,我又想在GitHub建立一个OA项目,而且让这两个仓库进行远程同步

     先在本地新建好一个git项目,到Github上新建一个同名的空项目
     本地和github上的仓库进行关联

     git remote add origin https://github.com/leebingbin/oa.git

     把本地库的内容推送到远程git push命令,其实是把当前分支master推送到远程

git push -u origin master

    因为远程库是空的,咱们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在之后的推送或者拉取时就能够简化命令。

    3.2 github远程库 到 本地

    情景描述:如今的情景是,咱们从零开发,那么最好的方式是先建立远程库,而后从远程库克隆

    登录GitHub,建立一个新的仓库,名字叫OA2 ;远程库OK,下一步是用命令git clone克隆一个本地库
 

Git clone git@github.com:leebingbin/oa2.git

 

    3.3 Git交互模型-上

    情景描述:如今的情景是,本地或者远程均有修改,如何同步共享,提交修改
    本地修改,同步给远程; 远程修改,同步到本地,便可。

 
    3.4 Git交互模型-下

    通常工做流程以下:

1 克隆 Git 资源做为工做目录。

2 在克隆的资源上添加或修改文件。

3 若是其余人修改了,你能够更新资源。

4 在提交前查看修改。

5 提交修改。

6 在修改完成后,若是发现错误,能够撤回提交并再次修改并提交。

        

3.5 Fork

    情景描述:如今的情景是,用叉子把别人的东西(copy no cut)叉到你碗里。
    其实,就是把别人的项目clone一份,可是owner变成本身,这样你就能够在遵照Open source license的前提下任意修改这个项目了。 至关于你在原项目的主分支上又创建了一个分支,你能够在该分支上任意修改,若是想将你的修改合并到原项目中时,能够pull request,这样原项目的做者就能够将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在你们共同的努力下不断壮大和完善。
 

3.6 解决Git push时重复输入用户名密码

    C:\Users\admin目录下新建名字为_netrc的文件并编辑该文件写以下内容:
 

machine github.com
login 你的用户名 
password 你的密码

 

3.7 Git 经常使用命令小总结

   mkdir:         XX (建立一个空目录 XX指目录名)

   pwd:          显示当前目录的路径。

   git init          把当前的目录变成能够管理的git仓库,生成隐藏.git文件。

   touch           xx文件或者新建文件

   git add XX       把xx文件添加到暂存区去。

   git commit –m “XX”  提交文件 –m 后面的是注释。

   git status        查看仓库状态

   git diff  XX      查看XX文件修改了那些内容

   git log          查看历史记录

   git reset  --hard HEAD^

   cat XX         查看XX文件内容

   git reflog       查看历史记录的版本号id

   git checkout -- XX  把XX文件在工做区的修改所有撤销。

   git rm XX          删除XX文件

   git remote add origin https://github.com/zzyybs/testgit 关联一个远程库

   git push –u(第一次要用-u 之后不须要) origin master 把当前master分支推送到远程库

   git clone https://github.com/arjrzhouyang/testgit  从远程库中克隆

   git checkout –b dev  建立dev分支 并切换到dev分支上

   git branch  查看当前全部的分支

   git checkout master 切换回master分支

   git merge dev    在当前的分支上合并dev分支

   git branch –d dev 删除dev分支

   git branch name  建立分支

   git remote 查看远程库的信息

   git remote –v 查看远程库的详细信息

   git push origin master  Git会把master分支推送到远程库对应的远程分支上 

 

6、GitHub Pages搭建网站

    一、 我的站点


  GitHub要求我的站点的仓库名称必须是 用户名.github.io, 例如 leebingbin.github.io

    创建方法很简单,也是新建一个repository,而后填写你的我的站点名,例如 edisonchou.github.io。以后经过Git,你能够将你在本地开发的html网页同步到github,以后你就能够经过域名访问你的我的站点啦!

 

    二、 项目站点


     搭建后的访问域名为:https://用户名.github.io/仓库名

  
   (1)进入项目主页,点击Settings

  (2)在Settings页面,点击Launch automatic page generator来自动生成主题页面

  (3)新建站点基础信息设置

  (4)选择主题

  (5)生成网页

 

本文为博主原创文章,转载请注明出处!

https://my.oschina.net/u/3375733/blog/

相关文章
相关标签/搜索