1. 程式人生 > >你必須學會的Git入門基本操作

你必須學會的Git入門基本操作




Git簡介

Git不僅僅是實際專案開發中進行程式碼管理的神器,也是你在天碼營學習需要掌握的工具。

Git是一種程式碼版本控制工具。我們在實際專案中和天碼營的學習過程中都會產生大量的專案程式碼,Git可以幫助我們記錄專案中每一個檔案的每一次改動記錄,如果我們誤刪了重要的資訊或者需要找回很久以前的某一段內容,能夠很容易的得到以前某一個時刻的內容。同時Git還能夠支援程式碼的協作,Git能夠將多個人的工作成果進行自動合併。

所以接下來,我們來學習Git的一些基本技巧吧。

安裝Git

Windows系統下的安裝

在Windows上安裝Git需要使用git for windows專案提供的安裝包,可以到GitHub的

頁面上下載exe安裝檔案並執行:

完成安裝之後,就可以使用Windows Command Line來執行git了。但是我們更加推薦使用Unix風格的shell來執行Git,在Unix風格的shell中,可以使用更多複雜的命令而且不必考慮Windows下空格、路徑分隔符等問題。git for windows還提供了一個圖形介面的 Git 專案管理工具。

Linux系統下的安裝

如果要在Linux上安裝預編譯好的Git二進位制安裝包,可以直接用系統提供的包管理工具。在Fedora上用yum安裝:

$ yum install git-core  

在Ubuntu這類Debian體系的作業系統上,可以使用apt-get安裝:

$ apt-get install git   

OSX系統下的安裝

Mac在安裝了命令列工具(Command Line Tools)後系統會自帶Git。當然也可以通過MacPortsHomeBrew等包管理工具來安裝:

brew install git 

::: protipMac下強烈推薦使用HomeBrew來管理各類開發軟體:::

如果沒有安裝Brew,可以直接下載git OSX版進行安裝。

確認Git安裝

Git安裝成功後,可以在命令列下輸入git --version,如果出現Git的版本號資訊則說明Git安裝成功。比如在Mac下會有以下輸出:

➜  ~  git --version
git version 2.5.4 (Apple Git-61)

Git配置

開始使用Git的第一件事情是設定你的名字和Email地址。因為Git在記錄每一次檔案變化時都會使用這些資訊,在與他人協作時個人資訊也是非常重要的。可以通過命令列進行配置:

$ git config --global user.name "John Smith" 
$ git config --global user.email "[email protected]" 

其中user.name和user.email後的兩個字串內容,應該替換為你自己的個人資訊。--global表示這個配置是一個系統全域性配置,也就是說在當前系統中任何地方使用Git都會採用剛才你輸入的名字和Email地址。

這裡你可以將user.name和user.email設定為你在天碼營網站的使用者名稱和註冊郵件。

克隆倉庫

一個團隊的實際開發中,通常需要一臺24小時線上的伺服器,每一個開發者都從這個“中央伺服器”上克隆倉庫到本地,並將各自的提交推送到“中央伺服器”的倉庫中。

Git本身提供伺服器支援,但是現在我們暫時還不需要了解如何搭建Git伺服器,因為如果大家報名天碼營的線上實戰訓練營,我們已經給你準備好了一個你獨有的Git遠端倉庫。我們只需專注於通過各種Git命令來與這個倉庫進行互動。

你可以在課程頁面左側找到Git倉庫的地址:


git clone http://{your_user_name}@git.tianmaying.com/sample-codes/full-stack-java-web-development.git

也可以在後面再增加一個目錄引數,如:

git clone http://{your_user_name}@git.tianmaying.com/sample-codes/full-stack-java-web-development.git tianmaying_repo

這表示將遠端倉庫中的內容放到本地的timaying_repo目錄下。

如果不指定,則會根據倉庫地址中的路徑名字生成一個目錄。比如天碼營《Java Web實戰訓練》這個課程的倉庫地址,對應的目錄就是full-stack-java-web-development。

執行完之後你就可以看到一個初始的程式碼倉庫了,裡面還沒有什麼內容,當你學完課程之後,這裡將會裝滿你的程式碼,讓你滿載而歸!

現在你可以看到一個.git資料夾,專案中所有檔案的變化歷史,都會儲存在這個資料夾中,裡面的細節我們先不用瞭解。

檢視倉庫狀態

在接下來的操作中,我們可以經常性地檢視Git倉庫的狀態,可以執行git status命令進行檢視。

比如,此時倉庫的狀態應該是這樣:

➜  full-stack-java-web-development git:(master) git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

up-to-date表示倉庫的狀態是最新狀態,而且nothing to commit,本地還沒有任何可提交的修改。

暫存程式碼

接下來,讓我們來增加一個檔案test.txt,裡面輸入的內容為

這是一個測試檔案

此時執行git status可以檢視倉庫狀態:

➜  full-stack-java-web-development git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    test.txt

nothing added to commit but untracked files present (use "git add" to track)

上述資訊表明,test.txt檔案是一個Untracked files,尚未進入到Git倉庫中。對於新增的檔案需要執行git add操作,才能讓Git對其進行跟蹤和管理。

➜  full-stack-java-web-development git:(master) ✗ git add test.txt
➜  full-stack-java-web-development git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   test.txt

通過git add test.txt就將該檔案納入到Git暫存區了,這在Git叫做stage,即test.txt檔案暫存起來了。

git add命令可以重複對某一個檔案使用。例如我們現在再次對test.txt檔案進行修改,如果想將這次修改的內容也提交到Git倉庫,那麼必須再次使用git add test.txt來暫存最新的修改。

使用git add可以暫存多個檔案:

  • 有時有多個檔案,我們可以使用萬用字元,git add *表示暫存所有檔案的修改。

  • 有時我們希望將某個目錄內的所有內容修改一起暫存,可以直接使用git add <目錄名>,Git會遞迴搜尋改目錄下的所有檔案修改。比如如果我們需要新增整個專案目錄到Git版本控制,可以在專案根目錄下使用git add .命令。這裡.表示當前目錄。

程式碼提交

當修改已經完成,你決定將暫存的修改進行提交時,就可以執行git commit命令。

執行該命令,會顯示一個編輯器並顯示如下資訊:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is up-to-date with 'origin/master'.
#
# Changes to be committed:
#       new file:   test.txt
#

在Git中每一次提交都必須帶有提交的說明資訊,否則會提交失敗。說明資訊就是對這一次提交的註釋說明,為每一次提交新增完整而有意義的說明是一個非常良好的習慣,這有助於我們今後在Git版本控制庫中方便的檢視並且找到某一次改動的記錄。

當然,如果提交的註釋資訊比較簡單時,我們也可以採用git commit -m <message>來快速提交:

➜  full-stack-java-web-development git:(master) ✗ git commit -m"add test.txt"
[master 495c46c] add test.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

一次git commit命令的執行就會形成程式碼的一個版本,這個版本有一個SHA-1校驗碼作為它的識別符號,一共40位,上面輸出中[master 495c46c] add test.txt中的495c46c就是這個識別符號的前7位。

檢視修改歷史

git log命令可以用來顯示倉庫歷史提交資訊——即每一次git commit的資訊。通過git log命令,可以檢視專案歷史,同時命令的各種引數也能夠支援對歷史提交靈活的過濾、搜尋和查詢。

之前我們用到的git status可以用來檢視工作目錄(Working Direcory)、暫存區和版本控制庫狀態,而git log則是用來檢視版本控制庫的歷史:


當你已經向版本控制庫中提交了程式碼後,可以通過git log命令來檢視之前的提交歷史。提交歷史看起來是這個樣子:

$ git log
commit 495c46cff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date:   Mon Mar 17 21:52:11 2016 -0700

    add test.txt

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date:   Sat Mar 15 16:40:33 2016 -0700

    first commit

git log命令在不新增任何引數的預設情況下的顯示如上,最近的提交會顯示在最前面,如果一個螢幕無法現實完整的提交歷史,那麼可以通過空格或j向下翻頁,q可以退出檢視歷史的視窗。

可以看到,每一次提交都包含了一個SHA-1校驗碼作為提交的識別符號、提交者的名字和Email(也就是git config --global user.name <name>中設定的值)、提交日期以及提交註釋資訊。

當然每一次提交包含的資訊遠遠不止這些,如果需檢視不同的輸出形式或者更多的資訊,可以參考以下引數列表:

  • git log -p: 顯示每一次提交和它之前提交的Diff
  • git log --stat: 顯示每一次提交和它相關聯的檔案的統計資訊以及狀態
  • git log --name-only:顯示每一次提交和他關聯的檔案列表(僅僅包含檔名)
  • git log <since>..<until>: 僅僅顯示<since>和<until>之間的提交列表,<since>和<until>可以是提交的SHA-校驗碼、分支名、HEAD等等
  • git log --author="<pattern>": 顯示Author為特定值的提交列表,<pattern>可以是字串,也可以是一個正則表示式
  • git log <file>:檢視某一個檔案相關聯的提交歷史資訊

以上這些引數大部分可以組合使用,大家可以嘗試在自己的倉庫中練習使用它們。

程式碼推送

到目前為止,我們所有的Git相關操作都是在本地倉庫進行的。如果我們希望能夠和別人通過Git倉庫進行協作,那就需要將倉庫同步到一臺“中央伺服器”上。

在天碼營中,你則需要和老師通過Git倉庫進行協作,因為老師需要看到你的程式碼並給你指導。

我們提到過天碼營已經提供了這樣的“中央伺服器”,你接下來為了讓老師也看到你程式碼的修改,你就需要將程式碼修改推送到這臺“中央伺服器”給你提供的遠端倉庫了。

我們之前使用git clone命令除了在本地新建了一個Git倉庫以外,其實Git還自動添加了一個remote倉庫,名字為origin(Git預設設定),地址為git clone的url引數。

執行git push origin <branch_name>就可以將原生代碼推送到遠端倉庫了。

➜  full-stack-java-web-development git:(master) git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 333 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Updating references: 100% (1/1)
To http://[email protected]/tmy/full-stack-java-web-development.git
   71dcc75..66fc794  master -> master

推送成功後,你可以通過天碼營網站的程式碼瀏覽器就能看到自己本地修改的程式碼了。

在課程頁面左側點選箭頭所指的按鈕即可瀏覽倉庫程式碼:


你可以看到,你新建的test.txt檔案已經可以看到了


程式碼下拉

在開發的過程中,遠端倉庫也有可能發生變化,例如其他開發者將自己的工作同步到的遠端倉庫,或者在天碼營的學習過程中,可能老師會修改你的程式碼。這時我們就需要把這些工作同步到自己本地的倉庫裡。

git pull命令就可以幫助我們完成這件事情。

➜  full-stack-java-web-development git:(master) git pull origin master
From http://git.tianmaying.com/tiange/full-stack-java-web-development
 * branch            master     -> FETCH_HEAD
Already up-to-date.

這裡已經沒有其它人提交而且推送過修改,因此顯示為Already up-to-date.。在天碼營的學習場景中,老師可以會修改程式碼,你通過程式碼下拉操作就能將老師的修改同步到你本地倉庫了。

分支操作

如果我們打算開始一個新的功能的開發,可以在當前分支的基礎上建立一個新的分支。

git branch new-feature

我們建立了新分支new-feature,如果需要開始在新分支上工作,我們必須首先切換到新分支上,即將當前分支設定為new-feature。

git checkout new-feature

上面這兩條命令,可以通過一條命令完成:

git checkout -b new-feature

這樣不僅建立了新的分支,而且進行了切換。

接下來我們可以在新的分支上進行程式碼內容的修改和提交。比如我們再次增加一個檔案test2.txt,往該檔案中新增一些內容。

➜  full-stack-java-web-development git:(new-feature) ✗ git add test2.txt
➜  full-stack-java-web-development git:(new-feature) ✗ git commit -m"add test2.txt"
[master 393dc1b] add test2.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test2.txt

為了將該分支也推送到遠端服務,可以執行下面的命令:

➜  full-stack-java-web-development git:(new-feature) git push origin new-feature
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 269 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1)
remote: Updating references: 100% (1/1)
To http://[email protected]/tiange/full-stack-java-web-development.git
 * [new branch]      new-feature -> new-feature

這樣新分支中的程式碼修改就同步到遠端倉庫了,開啟天碼營的程式碼瀏覽器可以看到。


對於我們的學習過程來說,每一次作業都是在已有的程式碼基礎上增加一個新的feature,所以每一次都通過一個新的分支來提交作業程式碼。

你如果希望切換回其它分支,只需要記住分支的名稱即可。比如要切換回master分支,執行git checkout master即可。

在實際開發中,如果

其它命令

以上介紹的git命令,是你通過天碼營學習必須掌握的。

下面這些命令在你做作業的過程中可能也會用到,可以瞭解一下。

檢視diff

如果你希望檢視目前暫存中的修改,可以使用下面的命令:

git diff --staged

取消暫存

如果你修改並且暫存了一個檔案,希望取消暫存,則可以使用git reset命令

git reset test2.txt

還原檔案

如果想完全放棄一個檔案的修改,比如放棄test2.txt的修改,回到最近一次提交的狀態,則可以執行如下命令:

git checkout test2.txt

刪除檔案

如果希望從程式碼倉庫中刪除某個檔案,比如刪除test2.txt,則可以執行如下命令:

git rm test2.txt
  1. git add和git commit在本地提交Hello World專案的程式碼
  2. 將該分支推送到天碼營遠端倉庫

參考閱讀


  • 這是Github提供的一個互動Git教程,通過20多個步驟你可以瞭解基本的Git操作

作者:David
連結:https://zhuanlan.zhihu.com/p/20673438
來源:知乎

相關推薦

必須學會Git入門基本操作

Git簡介 Git不僅僅是實際專案開發中進行程式碼管理的神器,也是你在天碼營學習需要掌握的工具。 Git是一種程式碼版本控制工具。我們在實際專案中和天碼營的學習過程中都會產生大量的專案程式碼,Git可以幫助我們記錄專案中每一個檔案的每一次改動記錄,如果我們誤刪了重要的資訊或者需要找回很久以前的某一段內容,能夠

必須學會的okhttp——入門

早在畢業那段期間,群裡有很多小夥伴在問關於okhttp的問題,當時因為不瞭解。所以沒有回答的上。記得十月份有次面試,一個面試官問我關於網路請求的東西時,我記得當時我是說。我是通過HttpClient封裝了一個網路請求的工具類。當然,或許他想問的是我關於okhtt

第二次作業-git基本操作

兩個文件 con 修改用戶 png 頁面 rsa keys 管理 stat 作業的要求來自於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 一、修改用戶名和郵箱地址: (1)配置用戶名命令:

必須學會寫Python裝飾器的五個理由

你必須學寫Python裝飾器的五個理由 ----裝飾器能對你所寫的程式碼產生極大的正面作用 Python裝飾器是很容易使用的。任何一個會寫Python函式的人都能夠學會使用裝飾器,比如下面這個: @somedecorator def some_function(): pri

Git/GitHub基本操作

 Git Git是分散式版本控制工具,SVN是集中式版本控制,有單點故障的問題 GitHub是Git的程式碼託管中心,類似的國內有碼雲,是遠端維護庫 Git的優勢 大部分操作在本地完成,不需要聯網 完整性有保證 儘可能新增資料而不是刪除或修改資料 分支操作非常流暢 與linux命

git一些基本操作

1.建立一個branch 檢視當前已經存在的branch git branch git remote -v 建立一個新的branch在伺服器上 git push upstream dev   將自己的origin和server的upstre

Git 一些基本操作

git一些操作: 1 實現本地倉庫專案新增到遠端倉庫: 將遠端倉庫與本地倉庫關聯 git remote add origin http://gitlab.hxdev.cn/*****   新增本地專案到本地倉庫 git add . 提交 git c

git基本操作

緩存 div mit light eat git pull add 倉庫 git 1、加入緩存 git add . 2、拉到本地 git pull origin feat_1st_phase 3、提交commit git commit -

12、git基本操作

學習目標: 1、瞭解git的基本操作 2、為什麼要學習Java語言 3、端正學習態度 學習過程:     上一節課大概用了幾個git的命令,本節課我們會對git常用的一些命令進行講解。在將git命令之前我們先說一下這個忽略檔案.gitignore 一、忽略

Android Studio必須學會的快捷鍵(Eclipse轉AS必看)

前言:從Eclipse轉到Android Studio之後,一開始把keymap設定成Eclipse,卻發現有些常用的快捷鍵都失效了,大概是衝突了。想了下,覺得與其重新設定快捷鍵,不如去適應AS的快捷鍵,畢竟聽說AS新增了好些有用的快捷鍵。於是把keymap又改

GIT基本操作命令與使用流程

一、Git的基本介紹            git是目前世界上最先進的分散式版本控制系統。git是 LinusTorvalds 為了幫助管理Linux 核心開發而開發的一個開放原始碼的

必須學會的okhttp——進階篇

今天上一篇部落格剛好在郭神公眾號出現了。也有一個多月沒寫點什麼了。今天就繼上一次的okhttp繼續深入瞭解把。在你必須學會的okhttp——入門篇中我簡單介紹了okhttp的使用方法。不瞭解可以看完在回來看這篇文章。 好了。話不多說。這次我主要介紹下okhtt

GIt常用基本操作

GIthub,是一個程式碼託管的服務提供商,也是一個巨大的開源社群。如今,越來越多的開源專案掛載在github上,那麼我們就很有必要學習一下git的基本使用,下面介紹一下git的安裝與使用。 關於Gi

Git基礎入門(四)Git基本操作2

git 操作 基礎忽略文件: 在實際開發過程中總有些文件無需納入Git的管理,比如日誌文件、臨時文件等 在這種情況下,我們可以在工作目錄中創建一個名為.gitignore的文件,列出要忽略的文件名或者表達式 例:cat .gitignore *.[oa]

git基本操作入門

下面以一個最簡單的開發過程,呈現git最基本的操作命令  1、下載程式碼(以code命名倉庫為例) git clone xxxxx/code.git cd code 2、檢視所有分支 git branch -av 3、切換已經存在的分支 git checkout xxx git

git入門學習一(git安裝,增刪改查基本操作命令)

git 工作區 暫存區 版本庫 在當前目錄新建一個Git程式碼庫 git init (會多出.git資料夾) 設計提交程式碼時的使用者資訊 :git config --global  user.name zhangsan    git config --glob

Git使用入門(一)基本操作

目錄 1、git下載安裝 2、設定使用者名稱和郵箱 3、建立一個目錄,當做git倉庫,並進行初始化 4、git提交操作 5、git撤銷操作 6、git刪除操作 7、git檔案重新命名 8、git分支操作 1、git下載安裝    下

Git必須掌握的基本操作

包含Git完整基本操作,並提供進階學習的資料。 部分選取自《Android神兵利器》 1-基本操作 1-建立倉庫 Git init:在一個檔案目錄執行該指令,會把該目錄快速設定成Git的程式碼倉庫。 Git clone:從遠端伺服

git命令行基本操作

撤銷 合並 冒號 文件的 初始化 徹底 message rdquo only --------------------------------------------------------------------------------------------------

MongoDb的基本操作快速入門

基本操作 mongodb mongodb增刪該查操作示例 mongodb快速入門 1.MongoDb簡介 mongodb是一個基於分布式存儲的開源數據庫系統又被稱為文檔數據庫,可以將數據存儲為一個文檔,數據結構有鍵值對(key=>value)對組成,存儲的文檔類似於JSON對象(BS