Git使用

内容:html

1.Git介绍与安装与原理git

2.Git基本操做github

3.分支管理bash

4.远程仓库app

5.多人协做ssh

6.github使用 - 开源项目测试

 

参考: fetch

http://www.cnblogs.com/alex3714/articles/5930846.html网站

http://www.javashuo.com/article/p-wmvyyqjp-co.html加密

注:本节主要以git命令操做为主

 

 

 

1.Git介绍与安装

(1)关于Git

git是一个用于帮助用户实现版本控制的软件
git的做用: 版本控制

 

(2)Git安装

最先Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。如今,Git能够在Linux、Unix、Mac和Windows这几大平台上正常运行

 

Linux上安装:

1 sudo apt-get install git

Windows or Mac:

下载安装包本身安装:https://git-scm.com/downloads

后面的例子以Windows系统为例,Windows系统成功安装Git后,右键点击文件夹或桌面选项中将会出现两个Git开头的选项。选择Git Bash Here,打开的窗口就是写Git命令的地方,以下所示:

 

(3)Git原理

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

工做区:当前开发程序所在目录称为工做区,即:工做开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,若是程序中文件作任何操做(增、删、改),文件状态均会被检测到,可使用 【git status】命令查看

版本库:工做区检测到有文件发生变化,那么意味着较上一个版本以后对程序进行了修改,修改完成以后,能够当作下一版本进行提交,那么就是执行 【git add .】 将全部文件提交到暂存区,而后再执行【git commit -m '又一个版本'】提交到版本库的分支便可,以后可使用【git log】命令查看版本记录

上述图片中经常使用命令:

  • git init,初始化,表示即将对当前文件夹进行版本控制。
  • git status,查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
  • git add 文件名,将指定文件添加到版本库的暂存状态。
  • git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
  • git log,查看提交记录,即:历史版本记录

 

 

2.Git基本操做

(1)建立仓库 -> git init

什么是版本库呢?版本库又名仓库,英文名repository,你能够简单理解成一个目录,这个目录里面的全部文件均可以被Git管理起来,每一个文件的修改、删除,Git都能跟踪,以便任什么时候刻均可以追踪历史,或者在未来某个时刻能够“还原”

因此,建立一个版本库很是简单,首先,选择一个合适的地方,建立一个空目录,建了空目录而后在此目录下执行git init 目录便可建立仓库:

如上所示瞬间Git就把仓库建好了,并且告诉你是一个空的仓库(empty Git repository)

 

(2)添加文件 -> git add

在文件夹中新建一个文件后经过git add 添加到仓库中:

注:git add . -> 一次性添加全部文件 

 

(3)提交代码 -> git commit

接着使用git commit命令将文件提交到仓库中:

 

(4)代码修改并提交 -> git add 和 git commit

修改文件中的内容,运行git status命令查看以下:

虽然Git告诉咱们test.txt被修改了,但若是能看看具体修改了什么内容,天然是很好的。查看具体修改内容可使用git diff命令:

输出中+号绿色显示的就是修改或新增的内容,-号红色显示的就是去掉或被修改的内容

知道了对源文件做了什么修改后,再把它提交到仓库就放心多了,再次提交到仓库先使用git add再使用git commit:

 

(5)代码回滚 -> git log 和 git reflog 和 git reset

在实际工做中Git仓库中的历史记录,能够用git log命令查看:

git log命令依次显示从最近到最远的提交日志,上面那一大串数字和字符的混合体是版本号,是一个SHA1计算出来的一个很是大的数字,用十六进制表示

接下来咱们要开始回滚要把第二次提交回滚到第一次提交,使用git reset命令,后面带上--hard参数以及要回退到的版本号:

回滚却是完成了,若是想要在回到第二次提交的版本怎么办呢?不能像以往经过【git log】来查看记录再回滚了,再回去须要这么搞:

 

(6)撤销修改 -> git checkout 和 git reset 

人都是犯错的,有时候在文件中可能写错了一些东西须要咱们去撤销修改,Git中撤销修改的命令是git checkout -- file(固然没添加的时候通常都是手动撤销修改)

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另外一个分支”的命令,咱们在后面的分支管理中会再次遇到git checkout命令  

 

加入你git add文件到了暂存区,庆幸的是,在commit以前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,尚未提交

此时能够用命令git reset HEAD file把暂存区的修改撤销掉,从新放回工做区:

git reset命令既能够回退版本,也能够把暂存区的修改回退到工做区。当咱们用HEAD时,表示最新的版本

 

(7)删除操做 -> git rm 和 git checkout

在Git中,删除也是一个修改操做,假如在文件夹中删除了一个文件,这个时候,Git知道你删除了文件

所以,工做区和版本库就不一致了,git status命令会马上告诉你哪些文件被删除:

此时有两种选择:

  • 从版本库中删除该文件,那就用命令git rm删掉,而且git commit提交删除
  • 删错了,但版本库里还有,因此能够很轻松地把误删的文件恢复到最新版本

第一种选择(删除版本库中的):

 

第二种选择(撤销工做区中的删除):

git checkout本质上是用版本库里的版本替换工做区的版本,不管工做区是修改仍是删除,均可以“一键还原”

 

 

3.分支管理

(1)什么是分支

branch称为分支,默认仅有一个名为master的分支。通常开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支

 

(2)分支操做

branch相关经常使用命令:

  • git branch 分支名称             建立分支
  • git checkout 分支名称          切换分支
  • git branch -m 分支名称        建立并切换到指定分支
  • git branch                             查看全部分支
  • git branch -d 分支名称         删除分支
  • git merge 分支名称              将指定分支合并到当前分支

注:git merge 时也可能会出现冲突,解决冲突的方式上述stash相同,即:找到冲突文件,手动修改冲突并提交,此处再也不敖述

实例: 

依然使用上述的库,新建一个文件test.txt(在前面删除了):

 

 

新建dev分支并切换到dev分支:

在dev分支上修改文本内容修改完后提交到dev分支上而后切换到主分支上:

切换到主分支后查看文件内容:

接着在把dev分支合并到主分支上:

主分支上的文件内容:

 

(3)补充 - stash

stash用于将工做区发生变化的全部文件获取临时存储在“某个地方”,将工做区还原当前版本未操做前的状态;stash还能够将临时存储在“某个地方”的文件再次拿回到工做区

stash相关经常使用命令:

  • git stash             将当前工做区全部修改过的内容存储到“某个地方”,将工做区还原到当前版本未修改过的状态
  • git stash list        查看“某个地方”存储的全部记录
  • git stash clear     清空“某个地方”
  • git stash pop       将第一个记录从“某个地方”从新拿到工做区(可能有冲突)
  • git stash apply     编号, 将指定编号记录从“某个地方”从新拿到工做区(可能有冲突) 
  • git stash drop      编号,删除指定编号的记录

注:执行 git stash pop 命令时,可能会遇到冲突,由于在紧急修复bug的代码和经过stash存储在“某个地方”的代码会有重合部分,因此执行 git stash pop 时候就会出现冲突,有冲突解决冲突便可

 

 

4.远程仓库

基于GitHub实现代码托管,须要如下步骤:

(1)自行注册github,并进行相关设置

因为你的本地Git仓库和GitHub仓库之间的传输是经过SSH加密的,因此,须要一点设置:

第1步:建立SSH Key

在用户主目录下,看看有没有.ssh目录,若是有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,若是已经有了,可直接跳到下一步

若是没有,随便哪一个位置打开Shell(Windows下打开Git Bash),建立SSH Key:

1
ssh -keygen -t rsa -C  "youremail@example.com"

把邮件地址换成你本身的邮件地址,而后一路回车,使用默认值便可,因为这个Key也不是用于军事目的,因此也无需设置密码

一切顺利的话可在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,能够放心地告诉任何人

 

第2步:登录GitHub 添加ssh key

打开“Account settings”,“SSH Keys”页面

而后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

点“Add Key”,而后就能够添加成功了

 

(2)完成上述操做后,点击new repository建立新仓库

 

(3)在上面点击create repository以后显示以下

详细解释以下:

 

(4)把本地文件提交到github网站上的仓库

push完了以后就能够去github上查看,固然也能够从github中的仓库上把某个分支pull下来继续开发,使用git pull origin 分支名 

注:push和pull以前必须配置了ssh不然不能使用!

 

(5)克隆远程仓库

使用git clone命令能够克隆远程仓库(随便克隆),也就是下载远程仓库中的代码,步骤以下:

先随便进入一个仓库而后点击右上角的clone or download,而后复制连接

复制连接以后,使用git clone 连接 便可克隆该仓库

 

上述内容可整理成以下一张图:

久而久之,将Git和GitHub结合使用作到避免电脑损坏形成数据丢失以及多地开发的问题,上文执行过程当中执行 【git pull origin 分支】命令等同于【git fetch origin 分支】+ 【git merge origin/分支】,而且在执行过程当中可能会出现冲突,缘由是因为本地代码和获取的最新代码有重合部分,那么就须要本身手动解决冲忽然后再继续开发

另外,git rebase能够保持提交记录的整洁

 

 

5.多人协做

 1 (1)容许他人操做程序
 2     - 合做者(在github上容许别人)
 3     - 在github上建立组织
 4 
 5 (2)分支 
 6     - master
 7     - dev 
 8     - xdb
 9     - zhh
10 
11 (3)规则
12     - 一块儿合并
13     - 合并时间:1/2
14 
15 大概总结:我的在本身的分支上开发,功能开发完了把github上的dev拉下来而后把本身的分支合并到dev分支上,测试没问题合并到master分支上
16 合并的时候一块儿合并,小功能完结以后就合并(大概一两天)
17 
18 
19 问题:
20     $ git push origin dev
21     To https://github.com/WuPeiqi/dbhot.git
22      ! [rejected]        dev -> dev (fetch first)
23     error: failed to push some refs to 'https://github.com/WuPeiqi/dbhot.git'
24     hint: Updates were rejected because the remote contains work that you do
25     hint: not have locally. This is usually caused by another repository pushing
26     hint: to the same ref. You may want to first integrate the remote changes
27     hint: (e.g., 'git pull ...') before pushing again.
28     hint: See the 'Note about fast-forwards' in 'git push --help' for details.
29 
30 (4)作代码review
31     如何作代码review?
32         - 建立review分支(在上面的合并到dev以前进行)
33     谁来锁代码review?
34         - 组长
35         - 带你的人    

 

 

6.github使用 - 开源项目

(1)关于开源项目

咱们一直用GitHub做为免费的远程仓库,若是是我的的开源项目,放到GitHub上是彻底没有问题的

其实GitHub仍是一个开源协做社区,经过GitHub,既可让别人参与你的开源项目,也能够参与别人的开源项目

可是在GitHub上,利用Git极其强大的克隆和分支功能,咱们能够自由的参加各类开源项目

 

(2)如何参与开源项目

访问项目主页点fork克隆项目仓库(必定要从本身的帐号下clone仓库,这样你才能推送修改)

若是你想修复项目的一个bug,或者新增一个功能,马上就能够开始干,干完后,往本身的仓库推送

若是你但愿别人能接受你的修改,你就能够在GitHub上发起一个pull request(对方是否接受你的pull request就不必定了。)

 

小结

  • 在GitHub上,能够任意Fork开源仓库

  • 本身拥有Fork后的仓库的读写权限

  • 能够推送pull request给官方仓库来贡献代码(别人能够赞成也能够不一样意)

相关文章
相关标签/搜索