關於 Git 和 Github 你不知道的十件事
Git 和 GitHub都是非常強大的工具。即使你已經使用他們很長時間,你也很有可能不知道每個細節。我整理了Git和GitHub可能提高日常效率的10個常用技巧。
GitHub
快捷鍵: t 和 w
在你的原始碼瀏覽頁面,按t
可以快速進入模糊檔名搜尋模式:
在你倉庫主頁,按w
可以快速進行分支過濾:
在任意GitHub頁面中,按?
展示當前頁面可用的快捷鍵:
忽略空格: ?w=1
在任意的diff URL新增?w=1用來整理縮排:
按範圍過濾提交記錄: master@{time}..master
你可以建立一個對比頁面通過使用URL github.com/user/repo/compare/{range}
。範圍(range)可以是兩個SHA例如sha1…sha2
或者兩個分支名稱例如master…my-branch
。範圍同時也非常智慧的支援使用時間作為關注點。你可以通過master@{1.day.ago}…master
過濾從昨天開始的提交。例如:連結,https://github.com/rails/rails/compare/master@{1.day.ago}…master
顯示Rails專案中全部昨天開始的提交記錄和變化:
按作者過濾提交記錄: ?author=github_handle
你可以通過在對比頁面URL中增加?author=github_handle
來按作者過濾提交記錄。例如:連結https://github.com/dynjs/dynjs/commits/master?author=jingweno
顯示jingweno對Dynjs 的提交記錄:
.diff 和 .patch
在比較頁面、合併請求頁面或者評論頁面的URL後增加.diff
或者.patch
,可以得到diff或者patch的文字格式。例如:連結https://github.com/rails/rails/compare/master@{1.day.ago}…master.patch
顯示Rails專案中全部昨天開始的提交記錄和變化的文字格式:
郵件回覆
你可以直接在收到的GitHub通知郵件進行評論,不必在網站頁面中評論。GitHub會正確的處理你的評論:
連結行
在檔案展示頁面,點選某行或者通過按SHIFT
選擇多行,URL會有相應的改變。如果你要給你的隊友分享一段程式碼是非常方便的:
關注使用者
在合併請求、問題或者任何評論中中提到使用者會使使用者關注全部的後續通知:
自動連結
在合併請求、問題、或者任何評論中,sha和問題碼(例如:#1)會被自動連結。並且,你也可以連結其它倉庫的sha或者問題碼,格式:user/repo@sha1
或者user/repo#1
。下面是一個評論中通過sha自動連結的例子:
hub
Hub 是 GitHub的命令列。它提供了Git和Github之間的整合。一個最有用的命令就是在命令列輸入hub pull-request
建立pull request。詳見readme.
Git
git log -p FILE
檢視README.md
的修改歷史,例如:
> git log -p README.md
git log -S’PATTERN’
例如,搜尋修改符合stupid
的歷史:
> git log -S'stupid'
git add -p
互動式的儲存和取消儲存變化,使用:
> git add -p
git rm –cached FILE
這個命令只刪除遠端檔案,例如:
> git rm --cached database.yml
刪除database.yml
被儲存的記錄,但是不影響本地檔案。這對刪除已經推送過的忽略檔案記錄而且不影響本地檔案是非常的方便的。
git log ..BRANCH
這個命令返回某個非HEAD分支的提交記錄。假如你在一個功能分支,輸入:
> git log ..master
返回全部master分支的歷史記錄,包括未被合併到當前分支的提交記錄。
git branch –merged & git branch –no-merged
這個命令返回已合併分支列表或未合併的分支列表。這個命令對合並前檢查非常有用。例如,在一個功能分支,輸入
> git branch --no-merged
返回未合併到該分支的分支列表。
git branch –contains SHA
返回包含某個指定sha的分支列表。例如:
> git branch --contains 2f8e2b
顯示全部包含提交2f832b
的分支。這個命令對於驗證git cherry-pick
完成非常有幫助。
git status -s
返回一個簡單版的git status。我設定這個命令為預設git status來減少噪音。
git reflog
顯示你在本地已完成的操作列表。
git shortlog -sn
顯示提交記錄的參與者列表。和GitHub的參與者列表相同。
Summary
Git是一個設計良好的工具。瞭解它可以直接讓你更有效率併成為一個更有才華的程式設計師。GitHub,在另一個方面,在Git基礎上提供便利的團隊合作特性。有能力使用GitHub也會提高你日常效率。
為了更好的加深你對的Git和Github瞭解,我推薦一些資料:
- ProGit, 最好的Git指南
- Advanced Git
- Git and GitHub Secrets
相關文章
- 關於 sudo 你可能不知道的
- Android關於Paint你所知道的和不知道的一切AndroidAI
- Android關於Path你所知道的和不知道的一切Android
- Android關於Canvas你所知道的和不知道的一切AndroidCanvas
- Android關於Color你所知道的和不知道的一切Android
- git關於origin和masterGitAST
- 關於Linux中“!”你不知道的驚歎用法Linux
- 關於HTTP/3背後你所不知道的HTTP
- 關於Java序列化你不知道的事Java
- git、github、gitlab之間的關係GithubGitlab
- 20個你(可能)不知道的Git命令Git
- Git詳解和Github的使用Github
- 關於自增id,你可能還不知道
- Git和GitHub快速上手Github
- Web 前置知識——Git 和 GitHub:① Git、GitHub初認識WebGithub
- 關於網校系統原始碼,你不知道的事情原始碼
- 關於檔案傳輸協議,你不知道的事協議
- 關於Handler同步屏障你可能不知道的問題
- git學習:關於origin和masterGitAST
- Git 和 GitHub:從入門到實踐2 Git 和 GitHub 基礎配置Github
- IDEA如何配置git和githubIdeaGithub
- Java中,那些關於String和字串常量池你不得不知道的東西Java字串
- 關於JavaScript物件,你所不知道的事(一)- 先談物件JavaScript物件
- 關於驗證碼,你不知道的一些問題!
- 關於全球消費者的選擇,你可能還不知道的……
- 關於git 和 svn 的協調使用(主要用於方便在git 和 svn之間管理程式碼)Git
- 關於Git commitGitMIT
- 關於JavaScript物件,你所不知道的事(二)- 再說屬性JavaScript物件
- 關於美顏SDK,還有這些你不知道的知識
- Git和GitHub的正確開啟姿勢Github
- Github和git的學習(不定期更新)Github
- 關於手機裡的IP地址,你不得不知道的“祕密”
- Game Boy 的北美奇幻漂流:關於這部掌機你不知道的事GAM
- 關於行為驗證碼,你不知道的一些問題!
- 關於資料安全風險評估,你不知道的這些事!
- Tuxera NTFS使用教程:關於Tuxera NTFS mac還有你不知道的用法UXMac
- Git——關於Git的一些補充(1)Git
- git同步原始碼到gitee和github原始碼GiteeGithub
- 基於Github Actions + Docker + Git 的DevOps方案實踐教程GithubDockerdev