你必须学会的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 gitOSX系統下的安裝
Mac在安裝了命令行工具(Command Line Tools)后系統會自帶Git。當然也可以通過MacPorts和HomeBrew等包管理工具來安裝:
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 "johnsmith@gmail.com"其中user.name和user.email后的兩個字符串內容,應該替換為你自己的個人信息。--global表示這個配置是一個系統全局配置,也就是說在當前系統中任何地方使用Git都會采用剛才你輸入的名字和Email地址。
這里你可以將user.name和user.email設置為你在天碼營網站的用戶名和注冊郵件。
克隆倉庫
一個團隊的實際開發中,通常需要一臺24小時在線的服務器,每一個開發者都從這個“中央服務器”上克隆倉庫到本地,并將各自的提交推送到“中央服務器”的倉庫中。
Git本身提供服務器支持,但是現在我們暫時還不需要了解如何搭建Git服務器,因為如果大家報名天碼營的在線實戰訓練營,我們已經給你準備好了一個你獨有的Git遠程倉庫。我們只需專注于通過各種Git命令來與這個倉庫進行交互。
你可以在課程頁面左側找到Git倉庫的地址:
點擊右側的按鈕可以拷貝該地址,假設為http://{your_user_name}@http://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 cleanup-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.txtnothing 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.txt1 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 <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2016 -0700add test.txtcommit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2016 -0700first commitgit 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://david@git.tianmaying.com/tmy/full-stack-java-web-development.git71dcc75..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.txt1 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://tiange@git.tianmaying.com/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參考閱讀
-
git - the simple guide
這是一個10分鐘就能看完的教程
-
Code School - Try Git
這是Github提供的一個交互Git教程,通過20多個步驟你可以了解基本的Git操作
鏈接:https://zhuanlan.zhihu.com/p/20673438
來源:知乎
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的你必须学会的Git入门基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC快速入门
- 下一篇: Java集合的使用:List与Map