Git/Github簡單入門指南

掘金5025發表於2017-12-28

Git是什麼?

Git最開始是Linux 之父 Linus Trovalds為管理 Linux 核心程式碼而開發的一個開放原始碼的版本控制系統。所以在很長一段時間內,Git只能在Linux和Unix系統上跑,後來慢慢地有人把它移植到了Windows上。現在,Git作為目前世界上最先進的分散式版本控制系統,在Linux、Unix、Mac和Windows這幾大平臺上都可以正常執行。

Github是什麼?

在2008年4月10號,位於舊金山的三位大佬Chris Wanstrath, PJ Hyett 與Tom Preston-Werner創立了Github公司,主要提供基於git的程式碼託管服務。在Github上,付費使用者可以建私人倉庫,普通使用者只能使用公開的公共倉庫,但是Gitlab是允許免費設定倉庫的許可權是公開的還是私有的,我們公司也是用Gitlab來管理公司專案的。

我的Gitlab首頁:

Git/Github簡單入門指南

開始你的Git/Github之旅

第一步:註冊github賬號

登入成功後點選New repository按鈕建立一個倉庫

Git/Github簡單入門指南

建立成功後的樣子,readme是一個markdown檔案,你可以在裡面寫你這個專案的資訊。

Git/Github簡單入門指南

github官網地址

第二步:下載Git

我的系統是windows,所以我下的是windows版本。下載好之後安裝,基本就是一直點next就好了。

Git/Github簡單入門指南

Git下載網址

第三步:配置Git

開啟Git Bash。

Git/Github簡單入門指南

配置自己的使用者名稱和郵箱(Github的使用者名稱和郵箱)。

$ git config --global user.name "Your username"
$ git config --global user.email "Your email"
複製程式碼

Git/Github簡單入門指南

配置好之後可以在C:\Users\Admin下的.gitconfig裡檢視。

第四步:建立倉庫並連線遠端倉庫

開啟Gitbush,cd d:進入D盤資料夾,mkdir hellogit新建一個叫hellogit的空資料夾,執行git init。git會建立一個隱藏的資料夾.git,看不到這個檔案的小夥伴可以去資料夾選項裡設定顯示隱藏資料夾,或者在該檔案目錄下用命令$ ls -lah也可以檢視所有檔案,包括隱藏檔案。

Git/Github簡單入門指南

配置SSH key。

Github每次pull/push程式碼時要求推送程式碼的使用者是合法的,所以每次推送時候都要輸入賬號密碼用以驗證使用者是否為合法使用者,而ssh是一種安全的傳輸模式,可以代替使用者的這一“輸入賬號密碼”的行為來驗證使用者。

首先檢查是否已經存在 id_rsa.pub 或者 id_dsa.pub 檔案。

$ cd ~/.ssh
$ ls
複製程式碼

Git/Github簡單入門指南

如果不存在,建立一個 SSH key。

$ ssh-keygen -t rsa -C "Your email"
複製程式碼

執行上面那條命令後會讓你輸入一個檔名,用於儲存剛才生成的 SSH key 程式碼, 直接回車就可以,會儲存到預設的位置,不知道的可以用 pwd 命令檢視。

執行成功後去剛剛儲存的位置,將id_rsa.pub 檔案裡面的內容複製到Github上。

Git/Github簡單入門指南

Git/Github簡單入門指南

新增SSH之後會讓你驗證一次密碼,驗證完成後會受到一封郵件。

現在你可以驗證一下SSH key是否設定成功,如果你是第一次,會報一段警告,直接輸入yes回車就可以了。

ssh –T git@github.com
複製程式碼

連線遠端倉庫

git remote add origin git@github.com:你的使用者名稱/你的專案名.git
複製程式碼

比如你註冊的Github的帳號是aaa,你建立了一個repository(倉庫)叫bbb,那你就需要執行git remote add origin git@github.com:aaa/bbb.git。

這個連線好之後,如果你在建立倉庫的時候選擇了自動生成README.md檔案,那你可以先本地同步一下遠端倉庫的內容

git pull git@github.com:你的使用者名稱/你的專案名.git
複製程式碼

Git/Github簡單入門指南

Git/Github簡單入門指南

可以看到,現在本地倉庫和遠端倉庫的內容已經同步了。

Git 常用命令速查

  • 檢視當前的 Git 配置
$ git config --list
複製程式碼
  • 檢查 SSH key
$ cd ~/.ssh
$ ls
複製程式碼
  • 生成 SSH key
$ ssh-keygen -t rsa -C [email]
複製程式碼
  • 在當前目錄新建一個Git程式碼庫
$ git init
複製程式碼
  • 新建一個目錄,將其初始化為Git程式碼庫
$ git init [project-name]
複製程式碼
  • 將專案克隆到本地
$ git clone [url]
複製程式碼
  • 檢查狀態
$ git status
複製程式碼

例如我在本地倉庫新建了一個hellogit.html

Git/Github簡單入門指南

git告訴我有個新增的hellogit.html的檔案尚未被追蹤,此時,我們需要將這個檔案暫存起來。

  • 檢視執行 git status 的結果的詳細資訊
$ git diff
複製程式碼
  • 暫存檔案
$ git add hellogit.html 暫存單個檔案
$ git add -A 暫存所有內容
複製程式碼

暫存之後重新執行git status,發現hellogit.html已經被成功跟蹤,這時候我們需要提交我們的修改。

  • 提交修改
$ git commit -m "本次提交內容的資訊"
複製程式碼
  • 推送到遠端倉庫
$ git push origin master
複製程式碼

git push命令會有兩個引數,遠端倉庫的名字,以及分支的名字。master為主分支。

Git/Github簡單入門指南

推送成功後可以看到遠端倉庫上已經有剛剛本地新建的hellogit.html檔案了。

  • 從遠端倉庫上拉取程式碼
$ git pull origin master 從遠端獲取最新版本並merge到本地
[git pull 相當於 git fetch 和 git merge,在實際使用中,git fetch會相對安全一些,因為我們可以檢視更新情況,然後再決定是否merge]
複製程式碼
  • 從遠端獲取最新版本到本地
$ git fetch origin master 從遠端獲取最新版本到本地,不會自動merge
$ git log -p master..origin/master 比較本地的master分支和origin/master分支的差別
$ git merge origin/master 進行合併

複製程式碼
  • 檢視分支
$ git branch 檢視所有本地分支
$ git branch -a 檢視所有本地分支和遠端分支
$ git branch -r 檢視所有遠端分支
複製程式碼
  • 建立分支
$ git branch [branch-name] 新建一個分支,但依然停留在當前分支
$ git checkout -b [branch-name] 新建一個分支,並切換到該分支
複製程式碼
  • 推送本地分支到遠端倉庫
$ git push [remote] [branch]
example:
$ git push origin branch2
複製程式碼

Git/Github簡單入門指南

  • 切換分支
$ git checkout xxxx
複製程式碼
  • 合併分支
$ git merge xxxx
複製程式碼
  • 刪除分支
$ git branch -d xxxx
複製程式碼
  • 刪除Github上的遠端分支
$ git push origin :xxxx
複製程式碼
  • 檢視遠端倉庫資訊
$ git remote show origin
複製程式碼
  • 刪除遠端倉庫已經不存在的分支
$ git remote prune origin
複製程式碼
  • 檢視提交
$ git log 檢視所有提交, -p 顯示每次提交的內容差異, -2 則僅顯示最近的兩次更新
$ git show xxx 檢視id為xxx的提交的資訊
複製程式碼
  • 回滾檔案到之前的版本
$ git checkout b2e4ab95 hellogit.html
複製程式碼

b2e4ab95為某次提交的id的前半部分。

  • 關於Git衝突解決

首先建立一個branch1分支,在branch1分支上修改README.md檔案並提交。

Git/Github簡單入門指南

然後我們切換回主分支,並在主分支上同樣修改README.md檔案並提交。

Git/Github簡單入門指南

這時我們執行合併,會發現Git提示我們衝突了,執行git status可以看到衝突資訊指向README.md檔案。

Git/Github簡單入門指南

開啟README.md檔案我們可以看到,Git用<<<<<<<,=======,>>>>>>>標記出了不同分支的內容。

Git/Github簡單入門指南

手動修改README.md檔案,再次提交,推送成功。

Git/Github簡單入門指南

Git/Github簡單入門指南

最後我們分別刪除本地倉庫分支就ok了,因為之前沒有把新建的分支推送到遠端倉庫,遠端倉庫是沒有剛剛我們建的branch1分支的,所以不需要刪除遠端分支。

關於.gitignore檔案

該檔案用來告訴Git哪些檔案不需要新增到版本管理中。

建立方法:

在專案根目錄新建一個gitignore.txt的檔案,用Linux的mv命令重新命名這個檔案。

Git/Github簡單入門指南

或者touch .gitignore直接生成.gitignore檔案。

Git/Github簡單入門指南

忽略規則:

  1. 空行不匹配任何內容,可以作為塊分隔符
  2. #開頭表示註釋,如果要匹配#,可以用"\#"來匹配
  3. 如果在匹配的內容前面加 ! ,這些內容將不會被匹配

舉個栗子:

# 忽略所有.txt檔案,但不忽略a.txt檔案
*.txt
!a.txt

# 僅忽略根目錄的 a 資料夾, 但不包括子目錄下的a資料夾,比如b/a是不會被忽略的
/a

# 忽略所有的a資料夾
a/

# 忽略 a/file.txt, 但不忽略 a/b/file.txt
doc/*.txt

# 忽略 a/file.txt, a/b/file.txt, a/c/file.txt...
a/**/*.txt

# add之後.gitignore修改了規則時用來回退
git reset HEAD filename
複製程式碼

Github關於gitignore的各種配置檔案

總結

Git非常強大,我只是簡單列舉了一些基本功能。這篇文章的主要目的還是給和我一樣平常用慣Git GUI的人入門使用。

一些有用的資料

相關文章