玩转 Git 与 GitHub

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

 

一、Git 是什么

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

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

二、Git 能干什么

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

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

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

   

    2、安装与配置

    2.1 Windows 版本安装与配置

    Tips:

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

    安装完成后,还需要最后一步设置,在命令行输入如下:

    Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

    操作系统的用户路径下的.gitconfig文件里面可以看到,刚才设置的用户名和邮箱。

    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.

    3、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 = [email protected]:zzyybs/换成你自己的工程.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = refs/heads/master:refs/heads/master

	


四、Github简介

    GitHub是一个Git项目托管网站,主要提供基于git的版本托管服务。 GitHub是一个基于Git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。 

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

    1、注册+检查.ssh秘钥

    由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息(No such file or directory表示第一次)

    未配置如下:

    已配置如下:

    2、创建SSH Key


ssh-keygen -t rsa -C "[email protected]"


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

 

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


ssh -T [email protected]

五、GitHub 与 Git 协同办公 

    1、基本概念


    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免费账号完成设置!那么收费的跟免费的有什么区别呢?私有的仓库只有自己或者指定的朋友才有权限操作。


 

    注册完成之后,记住要验证邮箱!如果未验证邮箱,那么你是没法做后续操作的。

    2、GitHub基本操作

  2.1 创建仓库


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

    Step1.填写必要信息:

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

    3、与 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 [email protected]: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分支推送到远程库对应的远程分支上 

六、GitHub Pages搭建网站

    1、 个人站点


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

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

    2、 项目站点


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

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

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

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

  (4)选择主题

  (5)生成网页

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

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

猜你喜欢

转载自my.oschina.net/u/3375733/blog/1589675