1. 程式人生 > >Git 入門使用

Git 入門使用

第一次 pos 編寫 千萬 commit 破解 十年 AD 拉取

Git是什麽?

Git是一個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。

Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

關於Git的誕生,這裏還有一個小故事。

Linus在1991年創建了開源的Linux,從此,Linux系統不斷發展,已經成為最大的服務器系統軟件了。
Linus雖然創建了Linux,但Linux的壯大是靠全世界熱心的誌願者參與的,這麽多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?
事實是,在2002年以前,世界各地的誌願者把源代碼文件通過diff的方式發給Linus,然後由Linus本人通過手工方式合並代碼!

你也許會想,為什麽Linus不把Linux代碼放到版本控制系統裏呢?不是有CVS、SVN這些免費的版本控制系統嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。
不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續通過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿,於是Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出於人道主義精神,授權Linux社區免費使用這個版本控制系統。
安定團結的大好局面在2005年就被打破了,原因是Linux社區牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這麽幹的其實也不只他一個),被BitMover公司發現了(監控工作做得不錯!),於是BitMover公司怒了,要收回Linux社區的免費使用權。
Linus可以向BitMover公司道個歉,保證以後嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的:
Linus花了兩周時間自己用C寫了一個分布式版本控制系統,這就是Git!一個月之內,Linux系統的源碼已經由Git管理了!牛是怎麽定義的呢?大家可以體會一下。

安裝Git

vs2017安裝時可以勾選Git。

小夥伴們也可以去官網: https://git-scm.com/downloads

一般來說,git配合小烏龜使用 https://tortoisegit.org/download/ 根據自己的處理器位數選擇對應的就好了,還有中文語言包。

要先安裝小烏龜,再安裝語言包,安裝後需要在小烏龜裏設置語言才能使用。

簡單命令

設置全局用戶名和通訊地址:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

創建版本庫:

在 Windows 上,我們只需要鼠標右鍵,選擇·Git Bash Here 就可以了

這樣打開 git 控制臺,路徑就會已經被設定到當前你點擊的目錄了。

當然也可以使用下面的語句來切換目錄。這條語句將目錄切到了C盤根目錄。

$ cd C:/

然後接下來 通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init

可以發現當前目錄下多了一個 .git 的目錄,這個目錄是 Git 來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。

如果你沒有看到 .git 目錄,那是因為這個目錄默認是隱藏的

把文件添加到版本庫:

使用 $ git add 命令 + 文件名的方式,往倉庫裏添加一個文件。

$ git add xxx.txt

還有一個命令是添加目錄下所有的文件到倉庫。

$ git add .

創建一個提交:

用命令 $ git commit告訴Git,把文件提交到倉庫:

$ git commit -m "test git"

-m 後面的字符串用來說明本次提交的備註信息。建議嚴肅對待這個備註,避免以後自己想要找回版本,卻想不起自己哪次提交做了改動。

查看倉庫當前狀態:

運行 $ git status 命令看看結果:

$ git status

使用 $ git log 命令可以查看顯示從最近到最遠的提交日誌

$ git log

回退版本:

首先,想要往回走的話,必須知道現在自己在哪(廢話),

在Git中,用 HEAD 表示當前版本,上一個版本就是 HEAD^,上上一個版本就是 HEAD^^,當然往上100個版本寫100個 ^ 比較容易數不過來,所以寫成 HEAD~100

使用下面的語句來返回上一個版本

$ git reset --hard HEAD^

那麽問題來了,如果我們這個時候又想回去怎麽辦呢?辦法總是有的。

使用下面這個語句我們就可以去到任何一個版本。

$ git reset --hard [版本ID號]

那麽,如何才能知道版本號呢?

$ git reflog

$ git reflog用來記錄你的每一次命令:

Git的版本回退速度非常快,因為Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD從指向了那個版本。

到這裏,git的常用基本命令就這麽多。但一般來說。我們使用 git 都是有場景的,那就是遠程倉庫。

一般來說。我們需要從遠程克隆版本庫到本地。

克隆版本庫:

$ git clone 

克隆下來之後,當然也是你本地的倉庫關聯的就是遠程倉庫的地址。

把本地庫的內容推送到遠程,用git push命令,實際上是把當前分支master推送到遠程。

我們第一次推送master分支時,加上了-u參數,-u的意思是將它設置為默認主機,

Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

$ git push -u origin master

此後,每次本地提交後,就可以使用命令git push origin master推送最新修改:

$ git push origin master

關於 push https://www.yiibai.com/git/git_push.html這裏更加詳細的介紹。

我日常都是使用命令行克隆到本地,但提交一般使用小烏龜,或者VS的Git工具。

應當善用工具,站在巨人的肩膀上。對於我們寫.NET的來說,不更應該如此嗎。

Git 入門使用