成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Git歷險記(1):初識版本控制系統(tǒng)Git

系統(tǒng) Linux
Git是Linus.Torvald為了管理Linux內(nèi)核發(fā)起并開發(fā)的一個開源分布式版本控件系統(tǒng),作為分布式版本控制系統(tǒng)的重要代表——Git已經(jīng)為越來越多的人所認識,它相對于我們熟悉的CVS、SVN甚至同時分布式控制系統(tǒng)的Mercurial,有哪些優(yōu)勢和不足呢。

51CTO編者按:Git 是用于 Linux 內(nèi)核開發(fā)的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持,使源代碼的發(fā)布和交流極其方便。本文是《Git Community Book》的譯者劉輝在InfoQ上發(fā)表的一篇專欄文章,整個系列名為《Git歷險記》。本文是系列***篇,對Git的歷史、特點和作者的使用心得進行了概述。以下為正文。

作為分布式版本控制系統(tǒng)的重要代表——Git已經(jīng)為越來越多的人所認識,它相對于我們熟悉的CVS、SVN甚至同時分布式控制系統(tǒng)的Mercurial,有哪些優(yōu)勢和不足呢。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等等),它的每個工作目錄都包含一個完整的倉庫,它們可以支持離線工作,先把工作提交到本地倉庫后再提交上遠程的服務器上的倉庫里。分布式的處理也讓開發(fā)更為便捷,開發(fā)人員可以很方便的在本地創(chuàng)建分支來進行日常開發(fā),每個人的本地倉庫都是平等且獨立,不會因為你的本地提交而直接影響別人。

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

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

我們首先打開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 ..." 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
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 ..." to update what will be committed)
# (use "git checkout -- ..." 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 ..." 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
Date: Sat Jan 1 18:17:07 2011 +0800
Git is Cool
commit 8223db3b064a9826375041c8fea020cb2e3b17d1
Author: liuhui998
Date: Sat Jan 1 18:12:38 2011 +0800
project init

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

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

原文鏈接:http://www.infoq.com/cn/news/2011/01/git-adventures-1

【編輯推薦】

  1. 系統(tǒng)運維秘訣:Git,招聘與軟硬件選擇(實踐篇)
  2. Git-cola: 跨平臺的 Git 前端
  3. Git 指令速查表
責任編輯:黃丹 來源: InfoQ
相關(guān)推薦

2011-03-30 10:50:55

GitLinux 版本控制

2011-01-26 10:05:36

Git安裝配置

2011-03-18 09:35:39

GitLinux版本控制

2009-03-23 09:53:47

LinuxGNOMEGit版本

2011-04-08 18:00:19

GitSubversion版本控制系統(tǒng)

2009-10-15 09:21:00

CCNA考試歷險記CCNA

2022-05-05 19:26:17

Druid分布式存儲

2022-05-26 21:38:02

開源分布式Hadoop

2021-02-22 08:20:32

Activity動畫界面

2011-02-28 14:37:43

GitLinux版本控制

2011-09-16 16:05:10

MySQL

2014-04-01 09:13:23

程序員招聘

2017-06-30 17:54:04

2009-04-01 17:58:28

MercurialPython版本控制

2021-02-04 06:54:09

DevOpsGitLab系統(tǒng)

2018-12-07 12:30:16

CVSGit版本控制

2011-04-08 10:10:23

2020-11-23 07:27:22

Git Flow

2021-02-26 07:35:57

Git版本工具

2014-12-16 11:02:06

PythonGitHub
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99国产精品久久久 | 亚洲成人一级 | 欧美成人猛片aaaaaaa | 精品亚洲永久免费精品 | 狠狠爱一区二区三区 | 男人的天堂avav | 国产一区二区久久 | 久草综合在线视频 | 一级欧美 | 中文视频在线 | 国产高清视频在线观看播放 | 天堂资源视频 | 日日摸夜夜爽人人添av | 国产高清视频一区二区 | 亚洲一区 中文字幕 | 国产精品视频专区 | 久久久激情 | 国产99热| 精品1区2区3区4区 | 国产精品国产精品 | 国产三级日本三级 | 高清国产一区二区 | 欧美一级免费观看 | 九九九视频在线观看 | 日韩av在线一区 | 成人av一区二区亚洲精 | 成人一区在线观看 | 华丽的挑战在线观看 | 日本三级播放 | 超碰97免费在线 | 欧美天堂一区 | 国产高清一区二区三区 | 日韩av福利在线观看 | 亚洲激情一区二区三区 | 在线中文字幕国产 | 日韩欧美手机在线 | 欧美中文| 在线播放国产一区二区三区 | 成人精品视频在线 | 国产区免费视频 | av电影手机版 |