git使用

作者: 帆人自书 | 来源:发表于2019-05-27 10:57 被阅读0次

    Git是什么?

    Git是目前世界上最先进的分布式版本控制系统(没有之一)。

    Git有什么特点?简单来说就是:高端大气上档次!

    那什么是版本控制系统?

    如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

    想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:

    过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。

    看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。

    更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。

    于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

    这个软件用起来就应该像这个样子,能记录每次文件的改动:

    版本文件名用户说明日期

    这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。

    建立本地仓库

    在需要建立仓库的目录下(前提是安装了git)使用git,通过git init 命令把这个目录变成Git可以管理的仓库

    把文件放入git仓库

    把一个文件放到Git仓库只需要两步:

    1.用命令git add告诉Git,把文件添加到仓库:

    $ git add readme.txt

    2.用命令git commit告诉Git,把文件提交到仓库:

    $ git commit -m "wrote a readme file"

    -m "说明"       是本地提交内容的备注说明。

    查看仓库状态

    当我们修改文件时,运行git status查看结果;比如当我们修改readme.txt文件内容后运行git status:

    $ git status

    On branch master

    Changes not staged for commit:

    modified: readme.txt

    no changes added to commit (use "git add" and/or "git commit -a")

    上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。可以看到有哪个文件被修改过,此时是否添加入库,此时是否提交。

    虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

    $ git diff readme.txt 

    diff --git a/readme.txt b/readme.txt

    --- a/readme.txt

    +++ b/readme.txt

    @@ -1,2 +1,2 @@

    -Gitisa version control system.

    +Gitisa distributed version control system. 

    Gitisfree software.


    版本回退

    每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit(commit一次就是一个版本)。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

    Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令

    git reset --hard commit_id

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    回退后如果想回到以前版本怎么办?只要你的命令行窗口还没关掉,找到之前的id(1094a.....),于是就可以指定回到未来的某个版本。

    $ git reset--hard 1094a

    HEADisnowat83b0afe append GPL

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

    撤销修改

    git checkout -- file可以丢弃工作区的修改:

    $ git checkout -- readme.txt

    命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。

    建立连接远程仓库

    把远程仓库和本地仓库连接:

    git remote add origin git@github.com:自己的账户名/项目名称.git

    添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

    下一步,就可以把本地库的所有内容推送到远程库上:

    $ git push -u origin master

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

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

    创建合并删除分支

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

    我们创建dev分支,然后切换到dev分支:

    $ git checkout -b dev

    Switchedto a new branch'dev'

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev

    $ git checkout dev

    Switchedto branch'dev'

    然后,用git branch命令查看当前分支:

    $ git branch

    * dev  

    master

    现在,我们把dev分支的工作成果合并到master分支上:

    $ git checkout master(切换到master分支)

    $ git merge dev(把dev合并到master分支) 

    git merge命令用于合并指定分支到当前分支  

    合并完成后,就可以放心地删除dev分支了:

    $ git branch -d dev

    Deletedbranch dev (was b17d20e).

    相关文章

      网友评论

          本文标题:git使用

          本文链接:https://www.haomeiwen.com/subject/busctctx.html