跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

  • 0

Git 安装和使用教程


HACK1949

问题

Git 安装和使用教程

5ff4fad09dfc7.png

git 提交 悉数文件

  1. git add . 

    git add xx指令能够将xx文件增加到暂存区,假设有许多改动能够经过 git add -A .来一次增加一切改动的文件。留意 -A 选项后边还有一个句点。 git add -A表明增加一切内容, git add . 表明增加新文件和修正过的文件不包括删去的文件; git add -u 表明增加修正或许删去的文件,不包括新增加的文件

  2. git commit -m "提交注释"

  3. git push origin  分支称号,一般运用:git push origin master


  4. 正常来说这三部就够了

 

 

 

Git介绍

分布式:Git版别操控体系是一个分布式的体系,是用来保存工程源代码历史状况的指令行东西。

保存点:Git的保存点能够追寻源码中的文件, 并能得到某一个时刻点上的整个工程项目的状况;能够在该保存点将多人提交的源码兼并, 也能够回退到某一个保存点上。

Git离线操作性:Git能够离线进行代码提交,因而它称得上是完全的分布式处理,Git一切的操作不需求在线进行;这意味着Git的速度要比SVN等东西快得多,由于SVN等东西需求在线时才干操作,假设网络环境不好, 提交代码会变得十分缓慢。

Git基于快照:SVN等旧式版别操控东西是将提交点保存成补丁文件,Git提交是将提交点指向提交时的项目快照,提交的东西包括一些元数据(作者,日期,GPG等)。

Git的分支和兼并:分支模型是Git最明显的特色,由于这改动了开发者的开发形式,SVN等版别操控东西将每个分支都要放在不同的目录中,Git能够在同一个目录中切换不同的分支。

分支即时性:创立和切换分支几乎是一起进行的,用户能够上传一部分分支,别的一部分分支能够躲藏在本地,不必将一切的分支都上传到GitHub中去。

分支灵活性:用户能够随时创立、兼并、删去分支,多人完结不同的功用,能够创立多个分支进行开发,之后进行分支兼并,这种方法使开发变得快速、简略、安全。

http://www.naipan.com/npedit/themes/common/anchor.gifGit客户端下载

截止博客发布的时刻,Git最新版别是2.10.2。咱们能够从官网下载,官网下载链接如下:

点击翻开官网下载链接

假设觉得官网下载太慢,也能够从如下CSDN的链接下载:

点击翻开CSDN下载链接

http://www.naipan.com/npedit/themes/common/anchor.gifGit客户端装置进程

1.双击装置程序“Git-2.10.2-64-bit.exe”,显现截图如下:

http://img.blog.csdn.net/20161113103644709

2.点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113103723460

依据自己的状况,挑选程序的装置目录。

3.持续点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113103820414

阐明:

(1)图标组件(Addition icons) : 挑选是否创立桌面快捷方法。

(2)桌面阅读(Windows Explorer integration) : 阅读源码的方法,运用bash 或许 运用Git GUI东西。

(3)相关配置文件 : 是否相关 git 配置文件, 该配置文件首要显现文本修正器的款式。

(4)相关shell脚本文件 : 是否相关Bash指令行履行的脚本文件。

(5)运用TrueType编码 : 在指令行中是否运用TruthType编码, 该编码是微柔和苹果公司制定的通用编码。

4.挑选完之后,点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113103949805

开端菜单快捷方法目录:设置开端菜单中快捷方法的目录称号, 也能够挑选不在开端菜单中创立快捷方法。

5.点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113104033433

设置环境变量

挑选运用什么样的指令行东西,一般状况下咱们默许运用Git Bash即可:

(1)Git自带:运用Git自带的Git Bash指令行东西。

(2)体系自带CMD:运用Windows体系的指令行东西。

(3)二者都有:上面二者一起配置,可是留意,这样会将windows中的find.exe 和 sort.exe东西掩盖,假设不明白这些尽量不要挑选。

6.挑选之后,持续点击“Next”,显现如下:

http://img.blog.csdn.net/20161113104251935

挑选提交的时分换行格局

(1)检查出windows格局转化为unix格局:将windows格局的换行转为unix格局的换行再进行提交。

(2)检查出原来格局转为unix格局:不管什么格局的,一概转为unix格局的换行再进行提交。

(3)不进行格局转化 : 不进行转化,检查出什么,就提交什么。

7.挑选之后,点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113104411026

8.挑选之后,点击“Next”,显现截图如下:

http://img.blog.csdn.net/20161113104440266

9.挑选之后,点击“Install”,开端装置,截图显现如下:

http://img.blog.csdn.net/20161113104517095

10.装置完结之后,显现截图如下:

http://img.blog.csdn.net/20161113104611722

这样,咱们的Git客户端就下载并装置完结了。

一:Git是什么?

  Git是目前世界上最先进的分布式版别操控体系。

  二:SVN与Git的最首要的差异?

  SVN是集中式版别操控体系,版别库是集中放在中心服务器的,而干活的时分,用的都是自己的电脑,所以首要要从中心服务器哪里得到最新的版别,然后干活,干完后,需求把自己做完的活推送到中心服务器。集中式版别操控体系是有必要联网才干作业,假设在局域网还能够,带宽够大,速度够快,假设在互联网下,假设网速慢的话,就纳闷了。

  Git是分布式版别操控体系,那么它就没有中心服务器的,每个人的电脑便是一个完好的版别库,这样,作业的时分就不需求联网了,由于版别都是在自己的电脑上。已然每个人的电脑都有一个完好的版别库,那多个人怎么协作呢?比方说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修正推送给对方,就能够互相看到对方的修正了。

  三:在windows上怎么装置Git?

  msysgit是 windows版的Git,如下:

     http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323139942.JPG

  需求从网上下载一个,然后进行默许装置即可。装置完结后,在开端菜单里边找到 "Git --> Git Bash",如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323492255.JPG

  会弹出一个类似的指令窗口的东西,就阐明Git装置成功。如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323462017.JPG

  装置完结后,还需求最终一步设置,在指令行输入如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323641881.JPG

  由于Git是分布式版别操控体系,所以需求填写用户名和邮箱作为一个标识。

  留意:git config  --global 参数,有了这个参数,表明你这台机器上一切的Git库房都会运用这个配置,当然你也能够对某个库房指定的不同的用户名和邮箱。

  四:怎么操作?

  一:创立版别库。

  什么是版别库?版别库又叫库房,英文名repository,你能够简略的了解一个目录,这个目录里边的一切文件都能够被Git办理起来,每个文件的修正,删去,Git都能盯梢,以便任何时刻都能够追寻历史,或许在将来某个时刻还能够将文件”还原”。

  所以创立一个版别库也十分简略,如下我是D盘 –> www下 目录下新建一个testgit版别库。

   http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323332305.PNG

  pwd 指令是用于显现当时的目录。

  1. 经过指令 git init 把这个目录变成git能够办理的库房,如下:

      http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323278648.PNG

  这时分你当时testgit目录下会多了一个.git的目录,这个目录是Git来盯梢办理版别的,没事千万不要手动乱改这个目录里边的文件,否则,会把git库房给破坏了。如下:

    http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323377996.PNG

  2. 把文件增加到版别库中。

  首要要明确下,一切的版别操控体系,只能盯梢文本文件的改动,比方txt文件,网页,一切程序的代码等,Git也不列外,版别操控体系能够告知你每次的改动,可是图片,视频这些二进制文件,虽能也能由版别操控体系办理,但无法盯梢文件的变化,只能把二进制文件每次改动串起来,也便是知道图片从1kb变成2kb,可是究竟改了啥,版别操控也不知道。

  下面先看下demo如下演示:

  我在版别库testgit目录下新建一个记事本文件 readme.txt 内容如下:11111111

  榜首步:运用指令 git add readme.txt增加到暂存区里边去。如下:

    http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323946973.PNG

  假设和上面相同,没有任何提示,阐明现已增加成功了。

  第二步:用指令 git commit告知Git,把文件提交到库房。

   http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323329134.PNG

  现在咱们现已提交了一个readme.txt文件了,咱们下面能够经过指令git status来检查是否还有文件未提交,如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323814401.PNG

  阐明没有任何文件未提交,可是我现在持续来改下readme.txt内容,比方我在下面增加一行2222222222内容,持续运用git status来检查下结果,如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323317401.PNG

  上面的指令告知咱们 readme.txt文件已被修正,可是未被提交的修正。

  接下来我想看下readme.txt文件究竟改了什么内容,怎么检查呢?能够运用如下指令:

  git diff readme.txt 如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323930242.PNG

  如上能够看到,readme.txt文件内容从一行11111111改成 二行 增加了一行22222222内容。

  知道了对readme.txt文件做了什么修正后,咱们能够放心的提交到库房了,提交修正和提交文件是相同的2步(榜首步是git add  第二步是:git commit)。

  如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323697556.PNG

  二:版别回退:

  如上,咱们现已学会了修正文件,现在我持续对readme.txt文件进行修正,再增加一行

  内容为33333333333333.持续履行指令如下:

   http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323548540.PNG

  现在我现已对readme.txt文件做了三次修正了,那么我现在想检查下历史记录,怎么查呢?咱们现在能够运用指令 git log 演示如下所示:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323081535.PNG

  git log指令显现从最近到最远的显现日志,咱们能够看到最近三次提交,最近的一次是,增加内容为333333.上一次是增加内容222222,榜首次默许是 111111.假设嫌上面显现的信息太多的话,咱们能够运用指令 git log –pretty=oneline 演示如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323647109.PNG

  现在我想运用版别回退操作,我想把当时的版别回退到上一个版别,要运用什么指令呢?能够运用如下2种指令,榜首种是:git reset  --hard HEAD^ 那么假设要回退到上上个版别只需把HEAD^ 改成 HEAD^^ 以此类推。那假设要回退到前100个版别的话,运用上面的方法必定不方便,咱们能够运用下面的简便指令操作:git reset  --hard HEAD~100 即可。未回退之前的readme.txt内容如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323246433.PNG

  假设想回退到上一个版别的指令如下操作:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323782780.PNG

  再来检查下 readme.txt内容如下:经过指令cat readme.txt检查

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323399310.PNG

  能够看到,内容现已回退到上一个版别了。咱们能够持续运用git log 来检查下历史记录信息,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323256378.PNG

  咱们看到 增加333333 内容咱们没有看到了,可是现在我想回退到最新的版别,如:有333333的内容要怎么康复呢?咱们能够经过版别号回退,运用指令方法如下:

  git reset  --hard 版别号 ,可是现在的问题假设我现已关掉过一次指令行或许333内容的版别号我并不知道呢?要怎么知道增加3333内容的版别号呢?能够经过如下指令即可获取到版别号:git reflog  演示如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323025760.PNG

  经过上面的显现咱们能够知道,增加内容3333的版别号是 6fcfc89.咱们现在能够指令

  git reset  --hard 6fcfc89来康复了。演示如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323488816.PNG

  能够看到 目前现已是最新的版别了。 

  三:了解作业区与暂存区的差异?

  作业区:便是你在电脑上看到的目录,比方目录下testgit里的文件(.git躲藏目录版别库除外)。或许今后需求再新建的目录文件等等都归于作业区范畴。

  版别库(Repository):作业区有一个躲藏目录.git,这个不归于作业区,这是版别库。其间版别库里边存了许多东西,其间最重要的便是stage(暂存区),还有Git为咱们主动创立了榜首个分支master,以及指向master的一个指针HEAD。

  咱们前面说过运用Git提交文件到版别库有两步:

  榜首步:是运用 git add 把文件增加进去,实际上便是把文件增加到暂存区。

  第二步:运用git commit提交更改,实际上便是把暂存区的一切内容提交到当时分支上。

  咱们持续运用demo来演示下:

  咱们在readme.txt再增加一行内容为4444444,接着在目录下新建一个文件为test.txt 内容为test,咱们先用指令 git status来检查下状况,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323511132.PNG

  现在咱们先运用git add 指令把2个文件都增加到暂存区中,再运用git status来检查下状况,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323068088.PNG

  接着咱们能够运用git commit一次性提交到分支上,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323704968.PNG

  四:Git吊销修正和删去文件操作。

  一:吊销修正:

  比方我现在在readme.txt文件里边增加一行 内容为555555555555,咱们先经过指令检查如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323664546.PNG

  在我未提交之前,我发现增加5555555555555内容有误,所以我得马上康复曾经的版别,现在我能够有如下几种方法能够做修正:

  榜首:假设我知道要删掉那些内容的话,直接手动更改去掉那些需求的文件,然后add增加到暂存区,最终commit掉。

  第二:我能够按曾经的方法直接康复到上一个版别。运用 git reset  --hard HEAD^

  可是现在我不想运用上面的2种方法,我想直接想运用吊销指令该怎么操作呢?首要在做吊销之前,咱们能够先用 git status 检查下当时的状况。如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323475439.PNG

  能够发现,Git会告知你,git checkout  -- file 能够丢弃作业区的修正,如下指令:

  git checkout  --  readme.txt,如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323485203.PNG

  指令 git checkout --readme.txt 意思便是,把readme.txt文件在作业区做的修正悉数吊销,这里有2种状况,如下:

  1. readme.txt主动修正后,还没有放到暂存区,运用 吊销修正就回到和版别库一模相同的状况。
  2. 别的一种是readme.txt现已放入暂存区了,接着又作了修正,吊销修正就回到增加暂存区后的状况。

  关于第二种状况,我想咱们持续做demo来看下,假设现在我对readme.txt增加一行 内容为6666666666666,我git add 增加到暂存区后,接着增加内容7777777,我想经过吊销指令让其回到暂存区后的状况。如下所示:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323300452.PNG

  留意:指令git checkout -- readme.txt 中的 -- 很重要,假设没有 -- 的话,那么指令变成创立分支了。

  二:删去文件。

  假设我现在版别库testgit目录增加一个文件b.txt,然后提交。如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323489420.PNG

  如上:一般状况下,能够直接在文件目录中把文件删了,或许运用如上rm指令:rm b.txt ,假设我想完全从版别库中删掉了此文件的话,能够再履行commit指令 提交掉,现在目录是这样的,

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323570490.PNG

  只需没有commit之前,假设我想在版别库中康复此文件怎么操作呢?

  能够运用如下指令 git checkout  -- b.txt,如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323219400.PNG

  再来看看咱们testgit目录,增加了3个文件了。如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323205602.PNG

  五:长途库房。

  在了解之前,先注册github账号,由于你的本地Git库房和github库房之间的传输是经过SSH加密的,所以需求一点设置:

  榜首步:创立SSH Key。在用户主目录下,看看有没有.ssh目录,假设有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,假设有的话,直接跳过此如下指令,假设没有的话,翻开指令行,输入如下指令:

  ssh-keygen  -t rsa –C “youremail@example.com”, 由于我本地此前运转过一次,所以本地有,如下所示:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323753352.PNG

  id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,能够放心地告知任何人。

  第二步:登录github,翻开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上恣意title,在Key文本框里黏贴id_rsa.pub文件的内容。

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323355322.PNG

  点击 Add Key,你就应该能够看到现已增加的key。

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323592489.PNG

  1. 怎么增加长途库?

  现在的情形是:咱们现已在本地创立了一个Git库房后,又想在github创立一个Git库房,并且期望这两个库房进行长途同步,这样github的库房能够作为备份,又能够其他人经过该库房来协作。

  首要,登录github上,然后在右上角找到“create a new repo”创立一个新的库房。如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323213968.PNG

  在Repository name填入testgit,其他保持默许设置,点击“Create repository”按钮,就成功地创立了一个新的Git库房:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323934746.PNG

  目前,在GitHub上的这个testgit库房仍是空的,GitHub告知咱们,能够从这个库房克隆出新的库房,也能够把一个已有的本地库房与之相关,然后,把本地库房的内容推送到GitHub库房。

  现在,咱们依据GitHub的提示,在本地的testgit库房下运转指令:

  git remote add origin https://github.com/tugenhua0707/testgit.git

  一切的如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323816495.PNG

  把本地库的内容推送到长途,运用 git push指令,实际上是把当时分支master推送到长途。

  由于长途库是空的,咱们榜首次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的长途新的master分支,还会把本地的master分支和长途的master分支相关起来,在今后的推送或许拉取时就能够简化指令。推送成功后,能够立刻在github页面中看到长途库的内容现已和本地一模相同了,上面的要输入github的用户名和暗码如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323652630.PNG

  从现在起,只需本地作了提交,就能够经过如下指令:

  git push origin master

  把本地master分支的最新修正推送到github上了,现在你就具有了真正的分布式版别库了。

  2. 怎么从长途库克隆?

  上面咱们了解了先有本地库,后有长途库时分,怎么相关长途库。

  现在咱们想,假设长途库有新的内容了,我想克隆到本地来 怎么克隆呢?

  首要,登录github,创立一个新的库房,名字叫testgit2.如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323066741.PNG

  如下,咱们看到:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323087143.PNG

  现在,长途库现已准备好了,下一步是运用指令git clone克隆一个本地库了。如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323653601.PNG

  接着在我本地目录下 生成testgit2目录了,如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323810970.PNG

  六:创立与兼并分支。

  在版别回填退里,你现已知道,每次提交,Git都把它们串成一条时刻线,这条时刻线便是一个分支。截止到目前,只要一条时刻线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的便是当时分支。

  首要,咱们来创立dev分支,然后切换到dev分支上。如下操作:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323880647.PNG

  git checkout 指令加上 –b参数表明创立并切换,相当于如下2条指令

  git branch dev

  git checkout dev

  git branch检查分支,会列出一切的分支,当时分支前面会增加一个星号。然后咱们在dev分支上持续做demo,比方咱们现在在readme.txt再增加一行 7777777777777

  首要咱们先来检查下readme.txt内容,接着增加内容77777777,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323081351.PNG

  现在dev分支作业已完结,现在咱们切换到主分支master上,持续检查readme.txt内容如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323800057.PNG

  现在咱们能够把dev分支上的内容兼并到分支master上了,能够在master分支上,运用如下指令 git merge dev 如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323221531.PNG

  git merge指令用于兼并指定分支到当时分支上,兼并后,再检查readme.txt内容,能够看到,和dev分支最新提交的是完全相同的。

  留意到上面的Fast-forward信息,Git告知咱们,这次兼并是“快进形式”,也便是直接把master指向dev的当时提交,所以兼并速度十分快。

  兼并完结后,咱们能够接着删去dev分支了,操作如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323504876.PNG

  总结创立与兼并分支指令如下:

  检查分支:git branch

  创立分支:git branch name

  切换分支:git checkout name

  创立+切换分支:git checkout –b name

  兼并某分支到当时分支:git merge name

  删去分支:git branch –d name

  1. 怎么处理抵触?

  下面咱们仍是一步一步来,先新建一个新分支,比方名字叫fenzhi1,在readme.txt增加一行内容8888888,然后提交,如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323339686.PNG

  相同,咱们现在切换到master分支上来,也在最终一行增加内容,内容为99999999,如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323193463.PNG

  现在咱们需求在master分支上来兼并fenzhi1,如下操作:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323924953.PNG

  Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其间<<>>>>fenzhi1 是指fenzhi1上修正的内容,咱们能够修正下如下后保存:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323509835.PNG

  假设我想检查分支兼并的状况的话,需求运用指令 git log.指令行演示如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323362652.PNG

  3.分支办理战略。

  通常兼并分支时,git一般运用”Fast forward”形式,在这种形式下,删去分支后,会丢掉分支信息,现在咱们来运用带参数 –no-ff来禁用”Fast forward”形式。首要咱们来做demo演示下:

  1. 创立一个dev分支。
  2. 修正readme.txt内容。
  3. 增加到暂存区。
  4. 切换回主分支(master)。
  5. 兼并dev分支,运用指令 git merge –no-ff  -m “注释” dev
  6. 检查历史记录

  截图如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323716364.PNG

  分支战略:首要master主分支应该是十分稳定的,也便是用来发布新版别,一般状况下不允许在上面干活,干活一般状况下在新建的dev分支上干活,干完后,比方上要发布,或许说dev分支代码稳定后能够兼并到主分支master上来。

  七:bug分支:

  在开发中,会经常碰到bug问题,那么有了bug就需求修正,在Git中,分支是很强壮的,每个bug都能够经过一个暂时分支来修正,修正完结后,兼并分支,然后将暂时的分支删去掉。

  比方我在开发中接到一个404 bug时分,咱们能够创立一个404分支来修正它,可是,当时的dev分支上的作业还没有提交。比方如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323590467.PNG

  并不是我不想提交,而是作业进行到一半时分,咱们还无法提交,比方我这个分支bug要2天完结,可是我issue-404 bug需求5个小时内完结。怎么办呢?还好,Git还供给了一个stash功用,能够把当时作业现场 ”躲藏起来”,等今后康复现场后持续作业。如下:

  http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323904976.PNG

  所以现在我能够经过创立issue-404分支来修正bug了。

  首要咱们要确认在那个分支上修正bug,比方我现在是在主分支master上来修正的,现在我要在master分支上创立一个暂时分支,演示如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323971499.PNG

  修正完结后,切换到master分支上,并完结兼并,最终删去issue-404分支。演示如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323033671.PNG

  现在,咱们回到dev分支上干活了。

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323521479.PNG

  作业区是干净的,那么咱们作业现场去哪里呢?咱们能够运用指令 git stash list来检查下。如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323640091.PNG

  作业现场还在,Git把stash内容存在某个当地了,可是需求康复一下,能够运用如下2个方法:

  1. git stash apply康复,康复后,stash内容并不删去,你需求运用指令git stash drop来删去。
  2. 另一种方法是运用git stash pop,康复的一起把stash内容也删去了。

  演示如下

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323277927.PNG

  八:多人协作。

  当你从长途库克隆时分,实际上Git主动把本地的master分支和长途的master分支对应起来了,并且长途库的默许称号是origin。

  1. 要检查长途库的信息 运用 git remote
  2. 要检查长途库的详细信息 运用 git remote –v

  如下演示:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323746117.PNG

  一:推送分支:

      推送分支便是把该分支上一切本地提交到长途库中,推送时,要指定本地分支,这样,Git就会把该分支推送到长途库对应的长途分支上:

      运用指令 git push origin master

  比方我现在的github上的readme.txt代码如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323207093.PNG

  本地的readme.txt代码如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323265347.PNG

  现在我想把本地更新的readme.txt代码推送到长途库中,运用指令如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323614285.PNG

  咱们能够看到如上,推送成功,咱们能够持续来截图github上的readme.txt内容 如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323666589.PNG

  能够看到 推送成功了,假设咱们现在要推送到其他分支,比方dev分支上,咱们仍是那个指令 git push origin dev

  那么一般状况下,那些分支要推送呢?

  1. master分支是主分支,因而要时刻与长途同步。
  2. 一些修正bug分支不需求推送到长途去,能够先兼并到主分支上,然后把主分支master推送到长途去。

  二:抓取分支:

  多人协作时,大家都会往master分支上推送各自的修正。现在咱们能够模仿别的一个同事,能够在另一台电脑上(留意要把SSH key增加到github上)或许同一台电脑上别的一个目录克隆,新建一个目录名字叫testgit2

  可是我首要要把dev分支也要推送到长途去,如下

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323412975.JPG

  接着进入testgit2目录,进行克隆长途的库到本地来,如下:

 http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323440615.PNG

  现在目录下生成有如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323778305.PNG

  现在咱们的小伙伴要在dev分支上做开发,就有必要把长途的origin的dev分支到本地来,于是能够运用指令创立本地dev分支:git checkout  –b dev origin/dev

  现在小伙伴们就能够在dev分支上做开发了,开发完结后把dev分支推送到长途库时。

  如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323562998.PNG

  小伙伴们现已向origin/dev分支上推送了提交,而我在我的目录文件下也对相同的文件同个当地作了修正,也试图推送到长途库时,如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323412534.PNG

  由上面可知:推送失利,由于我的小伙伴最新提交的和我试图推送的有抵触,处理的方法也很简略,上面现已提示咱们,先用git pull把最新的提交从origin/dev抓下来,然后在本地兼并,处理抵触,再推送。

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323331398.PNG

  git pull也失利了,原因是没有指定本地dev分支与长途origin/dev分支的链接,依据提示,设置dev和origin/dev的链接:如下:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323834950.PNG

  这回git pull成功,可是兼并有抵触,需求手动处理,处理的方法和分支办理中的 处理抵触完全相同。处理后,提交,再push:

  咱们能够先来看看readme.txt内容了。

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323537944.PNG

  现在手动现已处理完了,我接在需求再提交,再push到长途库里边去。如下所示:

http://www.admin10000.com/UploadFiles/Document/201410/27/20141027155323136569.PNG

  因而:多人协作作业形式一般是这样的:

  1. 首要,能够试图用git push origin branch-name推送自己的修正.
  2. 假设推送失利,则由于长途分支比你的本地更新早,需求先用git pull试图兼并。
  3. 假设兼并有抵触,则需求处理抵触,并在本地提交。再用git push origin branch-name推送。

  Git基本常用指令如下:

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

  pwd:          显现当时目录的路径。

  git init          把当时的目录变成能够办理的git库房,生成躲藏.git文件。

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

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

  git status        检查库房状况

  git diff  XX      检查XX文件修正了那些内容

  git log          检查历史记录

  git reset  --hard HEAD^ 或许 git reset  --hard HEAD~ 回退到上一个版别

  (假设想回退到100个版别,运用git reset –hard HEAD~100 )

  cat XX         检查XX文件内容

  git reflog       检查历史记录的版别号id

  git checkout -- XX  把XX文件在作业区的修正悉数吊销。

  git rm XX          删去XX文件

  git remote add origin https://github.com/tugenhua0707/testgit 相关一个长途库

  git push –u(榜首次要用-u 今后不需求) origin master 把当时master分支推送到长途库

  git clone https://github.com/tugenhua0707/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 stash 把当时的作业躲藏起来 等今后康复现场后持续作业

  git stash list 检查一切被躲藏的文件列表

  git stash apply 康复被躲藏的文件,可是内容不删去

  git stash drop 删去文件

  git stash pop 康复文件的一起 也删去文件

  git remote 检查长途库的信息

  git remote –v 检查长途库的详细信息

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

链接帖子
意见的链接
分享到其他网站

这个问题有0个答案

推荐的帖子

此问题没有答案

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...