首頁 > 軟體

GitHub 特殊技巧和Git基本操作

2020-06-16 17:33:14

了解GitHub

Git 和 GitHub 的區別

在Git中,開發者將原始碼存入名為“Git倉庫”的資料庫中,並加以使用。而GitHub則是在網路上提供Git倉庫的一項服務。這也就是說Github上公開的軟體原始碼都是有Git進行管理。

社會化程式設計

SOCIAL CODING.隨著GitHub的出現,讓所有人都平等的擁有了更改原始碼的權利,軟體開發者們才真正意義上擁有了原始碼.

GITHUB 特殊技巧

搜尋檔案

在倉庫頁面按 ‘t’鍵,然後輸入要找的目錄或者檔案的部分名稱,篩選器會在倉庫目錄和檔案中進行篩選,搜尋出要找的檔案。這種方式比一級級檢視目錄和檔案要快得多。

檢視差別

在github上,直接修改URL就可以讓使用者以多種形式檢視差別。

檢視分支之間的差異

https://github.com/rails/rails/compare/4-0-stable...5-0-stable

這樣就可以檢視兩個分支之間的差異了。上面的網頁可以看到,兩個版本之間提交有上萬次,Files changed 有3315....

檢視與幾天前的差別

https://github.com/rails/rails/compare/master@{7.day.ago}...master

這樣就可以檢視這段期間內的差別。day 還有其他幾種形式。

  • day
  • week
  • month
  • year

檢視與指定日期之間的差異

https://github.com/rails/rails/compare/master@{2016-09-01}...master

這樣便可以檢視與指定日期之間的差別。

由於可以從多種角度檢視差別,所以github也稱得上是一款優秀的原始碼檢視器。善於利用上述技巧,能節省不少時間。

GMF 語法特殊用法

GMF github-flavored-markdown.MD語法不做過多介紹,只介紹其中一些特性。

語法高亮

def hello_world
    puts 'hello world'
end

這樣一來,程式碼就會被新增語法高亮,變得直觀易讀。

TaskList 語法

//本月計劃的任務
- [ ] 完成ES6語法改造
- [ ] 完成非正常單詞改造
- [x]  學完GITHUB特殊技巧
  • [ ] 完成ES6語法改造
  • [ ] 完成非正常單詞改造
  • [x] 學完GITHUB特殊技巧

這樣一來 ,這段文字就會標記成複選列表的樣式。這個複選樣式可以直接勾選或者取消。不必開啟編輯器重新編輯,非常方便

在評論中應用表情

在評論中輸入 ":" 便會啟動表情自動補全功能。只需要輸入幾個與表情相關的字母,系統就會為您篩選自動補全的物件。具體表情見:http://www.emoji-cheat-sheet.com

Issue 技巧

在相關Issue中顯示提交資訊

在Issue一覽表中,可以看到,每個Issue的標題下面都帶了諸如 “#21” 的編號。這樣只要在提交資訊時,帶上 "#21" 就可以在Issue中看到該提交資訊,使關聯的提交一幕了然

Close Issue

在提交資訊中以下列任一一種格式描述提交資訊,對應的Issure就會被close。

  • fix #21
  • fixes #21
  • fixed #21
  • close #21
  • closes #21
  • closed #21
  • resolve #21
  • resolves #21
  • resolved #21

利用該方式,每次提交並且push後,就不必大費周章到GitHub的Issue中尋找相應的Issue 再手動Close。

Git 操作

Git 基本操作

  • git init ——初始化倉庫
  • git status ——檢視倉庫狀態
  • git add ——向暫存區新增檔案
  • git commit ——儲存倉庫的歷史記錄,.可以將當前暫存區中的檔案實際儲存到倉庫的歷史記錄中.通過這些記錄,我們可以在工作樹中復原檔案
    • -m引數:引數後為提交資訊的概述(單行)
    • 如果想要記述得更加詳細,不加-m,執行後編輯器會啟動,格式如下

      第一行:用一行文字簡述提交的更改內容
      第二行:空行
      第三行以後:記述更改的原因和詳細內容
  • git log —— 檢視提交紀錄檔
    • 只顯示提交資訊的第一行 git log --pretty=short
    • 只顯示指定目錄/檔案的紀錄檔 git log README.md
    • 顯示檔案前後的改動 git log -p README.md
  • git diff —— 檢視更改前後的差別
    • 檢視工作樹和暫存區的差別 git diff
    • 檢視工作樹和最新提交的差別 git diff HEAD.(不妨養成這樣一個好習慣:在執行git commit前,執行git diff HEAD命令,檢視本次提交和上次提交的差別,確認後再提交)

Git: 分支操作

  • git branch —— 顯示分支一覽表
  • git checkout -b —— 建立、切換分支
    • 建立分支,並切換到分支,並提交

      $ git checkout -b feature-A
      Switched to a new branch 'feature-A' 
      //實際上等同於下面兩條命令
      $ git branch feature-A
      $ git checkout feature-A
    • 切回到master, git checkout master
    • 切回到上一個分支,git checkout - , 用"-" 可以代替分支名

  • 特性分支:是集中實現單一特性(主題),初次之外不進行任何作業的分支。
  • 主幹分支:可以發布軟體的穩定分支。有時可以用標籤Tag等建立版本資訊,同時管理多個版本的發布。
  • git merge ——合併分支
    • 假設 feature-A 已經開發完,先需要將它合併到master。

      $ git checkout master
      $ git merge --no--ff feature-A
      // 為了在歷史記錄中明確記錄本次分支合併,我們需要建立合併提交。因此需要加上 --no--ff 引數
  • git log --graph —— 以圖表的形式檢視分支。*該命令可以用圖表形式輸出提交紀錄檔,非常直觀

更改提交的操作

  • git reset ——回溯歷史版本
    • 要讓倉庫的HEAD、暫存區、當前工作樹回溯到指定狀態,需要用到git reset --head 命令。只需要提供hash值,就可以完全恢復至該時間點的狀態
    • git log 只能檢視當前狀態為終點的歷史紀錄檔。用git reflog 可以檢視當前倉庫的操作紀錄檔。通過log查詢hash值,通過reset --hard 命令恢復到回溯歷史前的狀態
  • 消除衝突
    • 解決衝突後,執行git add 和git commit命令

      <<<<<<< HEAD
         -feature-A
      =======
         -fix-B
      >>>>>>> fix-B
  • git commit --amend ——修改提交的comment (上一條),執行命令後,會啟動編輯器。執行 git log --graph 可以檢視是否修改成功。
  • git rebase -i —— 壓縮歷史紀錄檔。
    • git rebase -i HEAD~2 : 可以選定當前分支中包含HEAD(最新提交)在內的兩個最新歷史記錄物件,並在編輯器中開啟

      pick 7a33333 Add feature-C
      pick 6f11111 Fix typo
      
      #p,pick = use commit
      #r,reword = use commit,but edit the commit message
      #e,edit = use commit,but stop for emending
      #s,squash = use commit, but meld into previous commit
      #f,fixup = like 'squash',but discard this commit`s log message
      #x,exec = run command (the rest of the line) using shell
      
      //將6f11111 Fix typo的歷史記錄,壓縮到7a33333的Add feature-C裡。將pick刪除,改寫為fixup
      pick 7a33333 Add feature-C
      fixup 6f11111 Fix typo

遠端倉庫操作

  • git remote add ——新增遠端倉庫

    $ git remote add origin git@github.com:github-book/git-tutorial.git
  • git push —— 推播至遠端倉庫

  • git clone —— 獲取遠端倉庫
    • 執行clone 命令後,預設處於master分支
    • git check -b feature -D origin/feature-D
  • git pull —— 獲取最新的遠端倉庫分支

如果兩人同時修改了統一部分原始碼,push時就很容易發生衝突。所以多名開發者在同一個分支中進行作業時,為減少衝突情況發生,建議頻繁地進行push和pull操作

GitHub 的其他功能

GitHub Pages

Github pages 主要用於在Github上託管??態HTML,以便發布專案的Web頁。

由於可以繫結獨立的域名,人們也經常利用結合這個功能的Octopress 來搭建部落格

Github Jobs

面向全世界招聘程式設計師的職位公告板。Jobs

Github Enterprise

企業版

Github API

GitHub 面向開發者公開了API。 具體見 https://developer.github.com

Pull Request

按部就班地建立GitHub賬號並公開自己的原始碼並不是什麼難事。Pull Request 是社會化程式設計的象徵,可以說給開源開發世界帶來了一場革命。不會用這個功能,就等於不會用GitHub。。。(作者吹得有點過。。)

Pull Request 是GitHub的核心功能

Conversation

(以下技巧同樣可以應用在其他評論中,如Issue)

在評論中應用表情

(同樣應用在其他評論中,如Issue)在評論中輸入 ":" 便會啟動表情自動補全功能。只需要輸入幾個與表情相關的字母,系統就會為您篩選自動補全的物件。具體表情見:http://www.emoji-cheat-sheet.com

參照評論

只要選中需要參照的語句,然後按“R鍵”便會自動以參照的形式新增到評論欄,這樣一來就可以輕鬆便捷地參照評論了

讓Pull Request 更加有效的方法

在開發過程中傳送Pull Request進行討論

避免一個功能在開發完成後才收到來自設計或者實現方面的指正,導致程式碼需要大幅更改或者重新實現

明確標出 “正在開發過程中”

為了防止開發到一半的Pull Request 被合併,一般在標題前加上 “[WIP]” 字樣,WIP 是 Work In Progress的簡稱

不進行Fork 直接從分支傳送Pull Request

一般來說,在Github上修改對方的程式碼時,需要先將倉庫Fork到本地,然後再修改程式碼,傳送Pull Request。

但是,如果使用者對該倉庫有編輯許可權,則可以直接建立分支,從分支傳送 Pull Request

GitHub 教學系列文章: 

通過GitHub建立個人技術部落格圖文詳解  http://www.linuxidc.com/Linux/2015-02/114121.htm

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

使用 GitHub / GitLab 的 Webhooks 進行網站自動化部署  http://www.linuxidc.com/Linux/2016-06/131993.htm

多個GitHub帳號的SSH key切換 http://www.linuxidc.com/Linux/2016-05/131080.htm

如何在同一台電腦上使用兩個GitHub賬戶 http://www.linuxidc.com/Linux/2016-05/131079.htm

利用GitHub搭建個人Maven倉庫  http://www.linuxidc.com/Linux/2016-04/130197.htm

一分鐘認識GitHub http://www.linuxidc.com/Linux/2015-11/125089.htm

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 


IT145.com E-mail:sddin#qq.com