乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      InfoQ: Git歷險記(一)

       daomucun 2011-01-25

      Git歷險記(一)

      作者 劉輝 發(fā)布于 2011年1月5日 上午7時20分

      社區(qū)
      Ruby,
      .NET,
      Java
      主題
      開放源代碼
      標簽
      git ,
      Git歷險記 ,
      專欄 ,
      版本控制

      【編者按】作為分布式版本控制系統(tǒng)的重要代表——Git已經(jīng)為越來越多的人所認識,它相對于我們熟悉的CVS、SVN甚至同時分布式控制系 統(tǒng)的Mercurial,有哪些優(yōu)勢和不足呢。這次InfoQ中文站有幸邀請到《Git Community Book》的譯者劉輝,在InfoQ開辟《Git歷險記》專欄,分享他使用Git的經(jīng)驗,以及他對Git的看法。


      Git是Linus.Torvald為了管理Linux內(nèi)核發(fā)起并開發(fā)的一個開源分布式版本控件系統(tǒng)(DVCS)。從2002年起,Linux 內(nèi)核一直使用BitKeeper來進行版本管理,但是在2005年BitKeeper和Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,BitKeeper再也不能免費使用了,這迫使Linus決定開發(fā)一個開源界自已的版本控制系統(tǒng)。

      傳統(tǒng)的SVN、CVS 等版本控制系統(tǒng),只有一個倉庫(repository),用戶必須要連上這個倉庫才能開始提交;而Git之類的分布式版本控制系統(tǒng)(當然也還包括 BitKeeper、Mercurial等 等),它的每個工作目錄都包含一個完整的倉庫,它們可以支持離線工作,先把工作提交到本地倉庫后再提交上遠程的服務(wù)器上的倉庫里。分布式的處理也讓開發(fā)更 為便捷,開發(fā)人員可以很方便的在本地創(chuàng)建分支來進行日常開發(fā),每個人的本地倉庫都是平等且獨立,不會因為你的本地提交而直接影響別人。

      老實說,Git的速度是我用的版本控制系統(tǒng)中最快的(SVN Mercurial Git)。我這里說的速度,包括本地提交(commit)、本地簽出(checkout)、提交到遠程倉庫(git push)和從遠程倉庫獲?。╣it fetch ,git pull);它的本地操作速度和本地文件系統(tǒng)在一個級別,遠程倉庫的操作速度和SFTP文件傳輸在一個級別。這當然和Git的內(nèi)部實現(xiàn)機制有關(guān),這里就不 多展開了,有興趣的朋友可以看一下這里:Git is the next Unix

      我們在學一門新的語言時,往往是從一個“hello world” 程序開始的,那么Git歷程也就從一個“hello Git”開始吧。

      在這里假設(shè)各位同學的電腦都裝好了Git,如果沒有裝好,可以先看一下這里(安裝Git)。當然,后面的章節(jié)我會專門講安裝可能會碰到的問題。

      我們首先打開Git的命令行:windows下是點擊“Git Bash 快捷方式”;Linux或是Unix like平臺的話就直接打開命令行界面就可以了。

      備注:$符號后面的字符串代表的是命令行輸入;命令行輸入后的以#開始的黑體字符串代表注釋;其它的部分則是命令行輸出。

      我們先用建一個倉庫吧:

      $mkdir testGit #建立倉庫目錄
      $cd testGit #進入倉庫目錄
      $git init #這會在當前的目錄下建一個倉庫
      Initialized empty Git repository in e:/doc/Git/test/testGit/.git/

      好的,前面的三行命令就建立了一個本地的Git倉庫。這個倉庫現(xiàn)在是一個空的倉庫。

      我們在命令行下執(zhí)行:

      $ git status #查看當前倉庫的狀態(tài)
      # On branch master (在master分支上)
      #
      # Initial commit
      #
      nothing to commit (create/copy files and use "git add" to track)
      (現(xiàn)在沒有任何臺被提交的文件,復制或創(chuàng)建新的文件,再用”git add” 命令添加到暫存區(qū)中)
      $ git log #查看當前倉庫的歷史日志
      fatal: bad default revision 'HEAD'
      (由于倉庫里沒有任提交在里面,所以它會報這個錯。BTW: 這種提示是不是有點不友好呀:) )

      現(xiàn)在就讓我們在這個倉庫里添加點內(nèi)容吧。

      $ echo “hello Git” > readme.txt #建立一個含有 hello Git 的文本文件
      $ git add readme.txt #將readme.txt添加到暫存區(qū)
      $ git status #查看當前倉庫的狀態(tài)
      # On branch master
      #
      # Initial commit
      #
      # Changes to be committed:(暫存里下次將被提交的修改)
      # (use "git rm --cached <file>..." to unstage)
      #
      # new file: readme.txt
      #

      好的,文件即然被暫存到暫存區(qū)中,我們現(xiàn)在就可以把它提交到倉庫里面去:)

      $ git commit -m "project init" #將剛才的修改提交到本地倉庫中 
      [master (root-commit) 8223db3] project init
      1 files changed, 1 insertions(+), 0 deletions(-)
      create mode 100644 readme.txt
      $ git status
      # On branch master
      nothing to commit (working directory clean)
      (現(xiàn)在這個工作目錄里沒有什么要提交的東東,它是整潔的)

      現(xiàn)在你執(zhí)行一下git log 命令就會看到剛才的提交記錄

      $ git log 
      commit 8223db3b064a9826375041c8fea020cb2e3b17d1
      Author: liuhui998 <liuhui998@gmail.com>
      Date: Sat Jan 1 18:12:38 2011 +0800
      project init

      “8223db3b064a9826375041c8fea020cb2e3b17d1”這一串字符就是我們這次創(chuàng)建的提交的名字??雌饋硎遣皇呛? 熟,如果經(jīng)常用電驢的朋友就會發(fā)現(xiàn)它就是和電驢里內(nèi)容標識符一樣,都是SHA1串。Git通過對提交內(nèi)容進行 SHA1 Hash運算,得到它們的SHA1串值,作為每個提交的唯一標識。根據(jù)一般的密碼學原理來說,如果兩個提交的內(nèi)容不相同,那么它們的名字就不會相同;反 之,如果它們的名字相同,就意味著它們的內(nèi)容也相同。

      現(xiàn)在我想改一下倉庫里文件的內(nèi)容,現(xiàn)提交到倉庫中去

      $ echo "Git is Cool" >> readme.txt #在文件的最后添加一行 
      $ git status #查看當前倉庫的狀態(tài)
      # On branch master
      # Changed but not updated: (修改了,但是還沒有暫存的內(nèi)容)
      # (use "git add <file>..." to update what will be committed)
      # (use "git checkout -- <file>..." to discard changes in working directory)
      #
      # modified: readme.txt
      #
      no changes added to commit (use "git add" and/or "git commit -a")

      (沒有修改可以被提交,使用 “git add” 命令添加文件到暫存區(qū),或是使用“git commit -a” 命令強制提交當前目錄下的所有文件)

      OK,即然我們修改了倉庫里被提交的文件,那么我想看一下我們

      到底改了哪些地方,再決定是否提交。

      $ git diff #查看倉庫里未暫存內(nèi)容和倉庫已提交內(nèi)容的差異 
      diff --git a/readme.txt b/readme.txt
      index 7b5bbd9..49ec0d6 100644
      --- a/readme.txt
      +++ b/readme.txt
      @@ -1 +1,2 @@
      hello Git
      +Git is Cool

      很好,正如我們所愿,我們只是在readme.txt的最后一行添加了一行“Git is Cool”。

      好的,我們現(xiàn)在再把 readme.txt放到暫存區(qū)里:

      $ git add readme.txt 

      我們現(xiàn)在看一下倉庫的狀態(tài):

      $ git status 
      # On branch master
      # Changes to be committed:
      # (use "git reset HEAD <file>..." to unstage)
      #
      # modified: readme.txt
      #

      可以提交了:

      $ git commit -m "Git is Cool" 
      [master 45ff891] Git is Cool
      1 files changed, 1 insertions(+), 0 deletions(-)
      (一個文件被修改,一行插入,零行刪除)

      再看一下新的日志:

      $ git log 
      commit 45ff89198f08365bff32364034aed98126009e44
      Author: liuhui998 <liuhui998@gmail.com>
      Date: Sat Jan 1 18:17:07 2011 +0800
      Git is Cool
      commit 8223db3b064a9826375041c8fea020cb2e3b17d1
      Author: liuhui998 <liuhui998@gmail.com>
      Date: Sat Jan 1 18:12:38 2011 +0800
      project init

      “45ff89198f08365bff32364034aed98126009e44” 這個就是我們剛才提交修改時創(chuàng)建的提交。

      大家這么一路看過來,是不是有點糊涂了。不過沒有關(guān)系,如果你的電腦裝了Git,那么你把上面的這些命令全部執(zhí)行一下遍就會對它有感性的認識了。

      下面的的章節(jié),我會講一下如何在windows和Linux安裝配置Git,以及需要注意的問題:)

      參考

      GitCommunityBook 中文版

      ProGit 中文版

      Git is the next Unix

      關(guān)于作者

      劉輝,開源技術(shù)愛好者,現(xiàn)居長沙,從事軟件開發(fā)行業(yè)7年。關(guān)注Linux平臺的相關(guān)技術(shù),曾經(jīng)參與開發(fā)過高性能網(wǎng)框架spserver。2009年起開始關(guān)注Git相關(guān)應(yīng)用,與朋友合作翻譯了《Git Community Book中文版》。我的個人博客是:

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多