Git簡明教程一 基本概念

2022-02-06 20:28:00 字數 2773 閱讀 1134

文字是寫給新手的git入門教程。本文的目的是讓新手能夠快速了解並開始使用git,因此只會介紹最基本、同時也是最核心的知識。其中包括使用git的基本步驟和git中最常用的命令,以及如何使用github託管自己的**。「git」讀作/git/(給特),而不是/jit/(吉特)。

這是新手最常問的問題。我也曾在心裡產生過這種疑惑,原因一方面是因為好奇心,因為在我看來,svn已經足夠優秀了,為什麼又忽然冒出來乙個git呢?另一方面則是希望能通過將git與自己熟悉的svn進行比較,從而更快、更好地了解git。

但是,在這裡我要駁回這種疑問。不要認為git一定比svn好、處處比svn好。git有著更先進的設計理念是沒錯,但更先進與更好並不是等價的。工具,永遠只有最合適而沒有最好。

打個比方,普通的文字編輯器和功能豐富的ide開發工具哪個好?對於我們專門做開發的人來說,可能大部分時候ide更方便,因為有各種便捷的功能,**提示,錯誤提示,自動發布,自動部署……等等。但即使ide有這麼多優點和好處,是否就能說明ide一定比普通的文字編輯器更好呢?不能吧?

某些「極客」們喜歡把自己喜歡的東西捧上天,同時把「競爭對手」踩在腳下。個人認為這是非常不好的習慣,程式設計師的世界不應該有宗教。

所以,關於這個問題的答案,總結下來就是:

git與svn相比沒有本質區別。是的,分布式並不是本質區別,就像命令列和gui介面一樣。但它有一些優點:

現在有很多git工具供我們選擇,其中一些是基於命令列的,另一些則是基於gui介面的,到底該如何選擇呢?

我建議新手在學習階段應該用基於命令列的git工具,這樣更有助於了解git各個功能的細節和原理。

在windows下,另乙個常用的是msysgit:

msysgit打包了乙個cygwin,從而在windows下模擬了linux環境,因此可以在其中執行git程式。

安裝了msysgit後,會在資源管理器的右鍵選單中註冊相關專案。其中「git bash」用於啟動git並將工作目錄設定到當前目錄下;「git gui」用來開啟gui介面的git;「git init here」則在當前目錄下建立乙個倉庫並開啟git bash,相當於先開啟git bash然後執行git init命令。關於git常用命令後面會詳細介紹。

遇到問題時查閱資料或上網搜尋是很方便的,但是關於很多命令的用法在git中已經有了詳細介紹。下面就來介紹幾個顯示幫助的命令。

$ git help

此命令獲取git使用的一般幫助資訊

$ git help command | concept

顯示某個命令或主題(concept不知該如何翻譯,就是下面用-g引數所顯示的那些)的詳細幫助。例如:

git help commit #顯示commit命令的詳細用法

git help everyday #顯示everyday幫助指南

$ git help -a

列出當前安裝的git中所有可用的子命令

$ git help -g

列出當前安裝的git中提供的主題指南(concept guides,不知道該如何翻譯)

廣義上講,檔案的每一次修改都可以稱為乙個版本。版本管理系統正是用來管理和跟蹤檔案的修改的。在版本管理系統中,每一次提交會形成乙個版本記錄,這些記錄串接起來就是整個專案的演化歷史。

版本庫,也叫版本倉庫、倉庫,英文名為repository,經常簡寫為repo,是git用來進行版本管理的主要場所。

在git中使用initclone建立乙個新的版本庫後,就會在當前目錄下生成乙個.git目錄,這個就是git的版本庫,其中儲存著本專案的各檔案資料、提交記錄、分支、配置等等資料。如果我們把.git目錄刪除的話,版本庫也就丟失了。這一點和svn不同,svn會把相關資料分散到各個檔案所在的目錄中。

工作區就是版本倉庫所在的目錄,其中的檔案處於git版本庫的管理之下。使用initclone建立乙個新的版本庫後,當前目錄就成為了工作區。

首先,本地倉庫和遠端倉庫沒有本質區別。在使用git時,為了方便團隊成員之間交換**,通常會專門部署一台「伺服器」作為公共倉庫,每個人可以向公共倉庫中提交自己的**,也可以從公共倉庫中更新其他人的最新提交。對大家來說,這個公共倉庫就是乙個遠端倉庫。

轉殖就是複製乙個已經存在的版本庫。例如我們可以將公共版本庫(遠端倉庫)轉殖乙份到自己的電腦上。

將工作區中的**合併到版本庫中的操作就叫提交。每一次提交都會在版本庫中留下乙個記錄,日後可以用其來進行對比、回退等操作。換句話說,處於工作區中但仍未提交的修改不會受到git的保護,如果檔案被刪除了,或者改錯了,將無法回退到之前的某個正確的狀態(如果文字編輯器或ide還沒關的話說不定能彌補回這個錯誤)。

將工作區中的**合併到本地倉庫的操作叫做提交,而在版本庫之間進行合併操作就不是提交了,叫做推送。因為對git來說,兩個版本庫之間的關係是平等的,不存在誰「提交」給誰一說。

相應地,從另乙個倉庫中把**合併到本地倉庫的過程就叫拉取。

每次提交是有先後關係的,正常來說,所有提交將會串成一條直線。而分支就是在原本的直線上分出去的岔路。乙個分支從分出去的那一刻起,在其上的修改將完全獨立於其他分支(除非你顯式地將2個分支合併到一起)。

分支的演進過程很像物種的進化。物種在後代之間產生不同的變異,當乙個群體中的變異積累到一定程度時,該群體很有可能有機會分化為乙個新的物種,此後,新物種與原物種之間將平行進化。這個比喻只適用於演化出新分支的過程,但自然界中兩個物種之間不太可能會合併(人工干預除外)。

好了,第一部分就先到這裡。接下來我們將介紹git中的常用操作,從而讓你能夠快速上手,敬請期待。如果你覺得本文對你有幫助,請幫忙點個贊!!

Git簡明教程

git是拿來控制版本的,版本控制即vcs version control system 版本控制最初是linux之父拿來管理複雜的linux核心版本的 本地版本控制 容易與備份混淆 分布式版本控制 每個使用者都有乙個專案的完整拷貝,可以通過fetch pull與伺服器同步,便於協同工作 modifi...

Git簡明教程

mkdir path to your project cd path to your project git init git remote add origin 建立你的第乙個檔案,提交,然後推送到倉庫。git config global user.email xx xx.com git conf...

git簡明教程

ssh keygen t rsa c xx.com 冒號中的內容是郵箱,此操作用來生成rsa金鑰,用來標定你使用的計算機。根據提示資訊找到金鑰id rsa.pub,copy一下,將該金鑰新增到使用者的setting選單下的ssh key那一欄 ssh t git github.com可以檢查金鑰新增...