為初學者準備的 32 個 Git 命令備忘單
已發表: 2022-09-23GIT 命令備忘單是開發人員的方便參考,包含 git 項目最常用的命令。
什麼是 GIT?
GIT 是一個開源存儲庫,用戶可以在其中放置他們的文件,包括代碼、zip、文本或整個項目。
它具有多個功能,如協作、版本控制、流程控制等。與其他版本控制系統相比,GIT 更有效地存儲文件並提供更好的完整性。 Git 是一個命令行工具。
什麼是 GitHub?
憑藉其簡潔的用戶界面,GitHub 作為開發人員的中心,已成為使用最廣泛的版本控制系統,任何人都可以在任何地方訪問。
Git 工作流程
Git 有不同的工作流程,每個項目都應該有一個基於其需求的工作流程。 Git 工作流只不過是一個輕量級的、基於分支的工作流,它可以幫助定期部署項目的團隊。
例如,分支 Git 工作流會創建存儲庫的本地副本。 因此,每個開發人員都有一個本地工作區和一個中央存儲庫。 當涉及多個開發人員時,這種工作流程很好,並允許開發人員在對主存儲庫進行更改之前就分叉副本進行協作。
為什麼我們需要 Git?
由於 Git 是一個版本控制系統,因此開發人員會不斷地使用它來保存他們的更改、讓其他人可以看到它們、將他們的更改與其他人合併等等。
對於 Git 存儲庫的任何更改,開發人員需要知道正確的命令才能執行正確的操作。 以下是重要且常用的 Git 命令的列表:
常用 Git 命令
混帳添加
將指定的文件添加到暫存中
git add <file> -- add a specific file git add * -- add all the filesgit存檔
創建提交、分支和樹的存檔,並將多個文件合併為一個。 您可以在需要時通過提取文件來檢索內容
git archive HEAD — 從 repo 的 HEAD ref 創建一個檔案
git archive output = '.tar' — 將歸檔文件存儲在給定位置
git archive --format=tar.gz — 指定歸檔文件的格式,如 tar、zip、tar.gz
git 分支
列出存儲庫中的所有分支。 如果指定了分支,將創建一個具有該名稱的新分支。 要刪除分支,請使用帶有分支名稱的 -d 選項。 要重命名當前分支,請使用 -m。
git branch — 列出所有分支git branch <branch_name > — 創建一個名為“branch_name”的新分支,但不簽出新分支。
git branch -d <branch_name> - 刪除分支,如果有任何未合併的更改,則阻止刪除git branch -D <branch_name> — 強制刪除分支,即使存在未合併的更改git branch -m <branch2> - 重命名當前分支
git cat 文件
顯示存儲庫對象的內容或大小/類型信息
git cat-file <object> — 顯示對象內容git cat-file -t <object> — 顯示對象的類型git cat-file -s <object> — 顯示對象的大小git cat-file -p <object> — 以漂亮的方式打印對象的類型git cat-file -e <object> — 如果對象的格式無效或不存在,則在 stderr 上顯示錯誤git cat-file <type> <object> — 顯示對象的原始內容
git結帳
要在存儲庫的不同分支之間切換,請小心使用它,因為它沒有“撤消”功能。
git checkout <branch_name> — 簽出指定的分支git checkout -b <branch_name> — 創建一個新分支並切換到這個分支
例如:
C:\Users\geekflare>git checkout -b development_branch Switched to a new branch 'development_branch'清理乾淨
清理工作主管。 提交的文件不會被刪除
git clean -n — 列出將被刪除的文件git clean -f - 刪除文件
git 克隆
將現有 repo 的副本創建到新目錄中。 用於獲取中央存儲庫的開發副本。
git clone <central_repo> <new_dir> — 將中央倉庫的副本創建到新目錄中
例如:
C:\Users\geek>git clone geekflare master Cloning into 'master'… done.
git clone -branch <branch> <repo> — 從提到的存儲庫中克隆一個分支
git 提交
將更改保存到暫存環境中,以便其他人可以看到。
git commit — 提交對暫存區的更改git commit -m <useful_msg> — 在提交時給出一條消息以突出顯示所做的更改git commit -a — 直接提交更改,無需暫存
假設您在工作目錄中添加了一個名為 samplefile.txt 的文件,並且想要提交該文件。 給出上述命令後,您將獲得輸出:
Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. On branch master Initial commit Changes to be committed: new file: samplefile.txt發送消息後,將提交更改:
C:\Users\geekflare>git commit -m 'samplemsg' [integration_branch (root-commit) ed52dd0] 'samplemsg' 1 files changed, 24 insertions(+) create mode 100644 samplefile.txt混帳配置
指定要寫入屬性值的配置級別。 “本地”級別是默認值(未指定任何內容時)。
git config –local — 將配置保存在 repo 的 .git 目錄中git config –global — 將配置保存在用戶的主目錄中git config –system — 包含所有用戶和存儲庫的配置,位於根目錄的 git config 文件中。
混帳差異
比較 git repo 中的更改,可以在 staging 之前、staging 時和 staging(提交)之後完成。
git diff — 跟踪尚未暫存的 repo 更改git diff --staged — 跟踪暫存文件的更改(未提交)
git diff HEAD — 跟踪提交後的文件更改git diff <commit1_id> <commit2_id> — 跟踪兩次提交之間的變化; 您可以使用 ' git log -p --follow --filename ' 找出 commit_ids
獲取
獲取分支或整個遠程存儲庫
git fetch <remote-url> — 從遠程倉庫 URL 獲取整個倉庫git fetch <branch_url> <branchname> — 獲取特定分支git fetch -all — 獲取遠程倉庫的所有分支git fetch origin — 更新本地 repo 並將其與遠程 repo 中的新更改同步
git fsck
文件系統檢查命令檢查數據庫對象的有效性和連接性。 它檢查對象的 SHA-1ID 和它們建立的連接。 Fsck 對於恢復丟失的提交和文件很有用。
git fsck –full
混帳 gc
在當前存儲庫上運行垃圾收集並清理未使用的文件。
git gc
git grep
在存儲庫中搜索特定內容。 Git 提供了許多選項來以不同的方式進行搜索
git grep -i 'search_term' — 忽略大小寫搜索 [Man and man will be the same]
git grep -f <file_name> — 顯示特定文件的匹配模式git grep -e 'search-term' — 使用 -e 進行模式匹配git grep -E 'regexp|multiple_exp'搜索正則表達式,我們可以使用管道(OR)運算符搜索多個git grep -n 'expr' — 匹配行的前綴行號git grep -c 'expr' — 顯示匹配的行數,而不是每行
git ls-樹
從當前目錄列出樹對象的內容。
git ls -tree -d <path> — 只顯示指定的樹條目,不顯示子條目git ls -tree -r — 遞歸到子樹git ls -tree -l — 顯示文件(blob)對象的大小git ls -tree --name-only — 只顯示文件名而不是長輸出git ls -tree --full-name — 顯示完整路徑名,而不僅僅是相對於當前目錄的路徑
例子:
C:\Users\geek>git ls-tree --full-tree -r HEAD 100644 blob e883e60087e84f1660a9673ccb86eb0adc4f004d samplefile.txt 100644 blob 1426dc6fbff0677a484b248983a8740ff30fbb80 sample_jsindex.js混帳初始化
創建一個新的空白存儲庫。 這是您創建 git 項目時執行的第一個命令。

git init — 在工作目錄中創建一個 .git 存儲庫,
例如,要創建一個名為“geekflare”的新存儲庫,請提供以下命令:
$ git init geekflare Initialized empty Git repository in C:/Users/geek/geekflare/.git/git instaweb
通過瀏覽器瀏覽 git 存儲庫的用戶界面。 同樣使用 CGI 腳本 GitWeb。
git instaweb --httpd=webrick — 啟動服務器 (httpd) 並在頁面上打開 Web 瀏覽器。
要停止服務器,請使用帶有 –stop 選項的上述命令。
混帳日誌
記錄 git 存儲庫中的每個活動。
git log — 顯示最近的幾次提交git log --oneline — 將輸出顯示為 SHA 的前 7 個字符和每行一個提交的提交消息git log stat — 顯示有關修改文件的更多信息,例如添加/刪除的行數、更改的總記錄摘要、添加/刪除的行git log --patch (or -p) — 顯示修改的文件、具體更改及其位置git log --graph — 以圖表形式查看日誌結果git log -<n> — 顯示最後 'n' 次提交git log --after=<date/x days/yesterday> — 顯示指定日期之後的所有提交。 您可以使用--before顯示指定日期之前的提交git log --author=<author_name> — 顯示特定作者(用戶)的提交。
git log --grep=<commit message> — 根據提交消息過濾提交
git 合併
將所有開發文件集成到一個分支中,合併兩個分支,並將多個提交合併到一個歷史記錄中。 如果發生衝突,合併將停止,並且 git 會顯示衝突文件。 解決衝突後,合併將繼續。
git checkout -b — 首先,檢出要合併的分支
git add <file>
git commit — 添加並提交文件
git checkout master
git merge — 將分支與 master 合併
git 修剪
刪除(修剪)從當前分支無法訪問的文件。 從分支中刪除未使用的文件是一個清理過程
git prune -n — 不修剪,只顯示可以修剪的內容git prune -v — 顯示 prune 執行的操作的輸出git prune --progress — 顯示修剪的進度git fetch --prune — 修剪所有過時的分支
git 拉
它從遠程服務器接收數據到工作存儲庫。 它使用遠程存儲庫中的所有最新文件更新本地(工作)分支。
git pull — 拉取遠程倉庫git pull <repo URL> — 拉取一個特定的遠程分支
git 推送
將所有本地更改推送到遠程存儲庫。 這是一個與 pull 和 fetch 命令完全相反的上傳過程
git checkout master — 簽出具有最新更改的分支
git push origin master — 將更改推送到遠程倉庫
例子:
C:\Users\geek>git checkout development_branch Switched to branch 'development_branch' C:\Users\geek>git push master development_branch Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 612 bytes | 204.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 To master [development_branch] development_branch -> development_branch 我們還可以使用命令git push --delete <branch>使用 push 刪除遠程分支。
例如:
C:\Users\geek>git push master --delete development_branch To master [deleted] development_branchgit rebase
組合來自不同分支的多個提交以創建新的最終基本提交。 在合併所有更改之前很有用,可以一一提交來自不同分支的更改(線性)。
git rebase <branch name> — 將提交合併為一個最終基數
如果存在任何衝突,請解決它們並繼續 rebase:
git rebase --continue
要跳過任何更改:
git rebase --skip
遠程git
檢查遠程服務器的配置並允許遠程和本地之間的連接訪問。
git remote — 默認情況下,它返回 'origin',Git 給出的遠程服務器的默認名稱git remote -v — 列出所有可用遠程連接的短名稱和 URL
git remote add <short name> <remote url> — 將遠程服務器顯式添加到可用連接中。 短名稱可用於 git 命令,而不是提供整個 URL。
git remote remove <remote url/short name> — 從存儲庫中刪除遠程服務器
git 重置
返回上一個提交,並丟棄該提交後所做的更改
git reset <hash of the commit> — 將 repo 恢復到指定的提交。 Git 將保留提交歷史記錄,因此您可以使用不同的提交(哈希)進行另一次重置以撤消重置。
git rm
從 git 中刪除特定文件。 您可以使用 reset 或 checkout 命令撤消 rm 的影響
git rm <file_ name> — 刪除特定文件
要從 git 中刪除文件但將它們保存在本地(暫存)中,請使用:
git rm --cached
git 顯示
通過指定其 SHA1 查看任何對象,例如 blob、樹、提交或標記
git show — 不指定 <object> 會顯示分支上最後一次提交的詳細信息。
git show <SHA1_id> — 顯示由其 SHA1 id 指定的對象的內容,例如,blob id、樹 id 等。要檢查對象的類型,請使用命令git cat-file -t
git show –pretty — 以漂亮的格式顯示輸出。
您可以提供自定義格式:
git show --pretty = 'format:Name: <format>'或者您可以使用短格式、全格式、單行格式、中格式或更全格式之一,例如:
git show --pretty= 'medium' ——這將顯示作者、日期、標題和完整的提交信息
git show --abbrev-commit — 縮寫 SHA1
混帳藏匿
要切換分支而不在當前分支中提交,請安全存儲未提交的數據
git stash — 保存工作和索引狀態git stash save <message> — 保存時給消息git stash list — 查看隱藏內容列表git stash apply — 提交隱藏的更改。 要應用特定存儲的更改,請使用存儲索引 id 和 apply
git stash show — 查看隱藏文件的內容git stash drop — 從隊列中刪除最近的存儲
狀態
查看repository和staging的狀態,即commit stage之前的狀態。 您可以在任何其他 git 命令之後使用此命令,例如添加、更新或刪除文件
git status — 顯示要提交的更改,或未跟踪(無暫存)的更改
例如,如果您在工作目錄中添加一個名為 samplefile.txt 的文件並檢查它是否已添加,則可以發出上述命令。 它將導致輸出如下:
On branch master No commits yet Changes to be committed: (use "git rm --cached …" to unstage) new file: samplefile.txtgit標籤
友好引用用於指示代碼中的里程碑或參考點
git tag <tag_name> — 創建一個給定名稱的標籤git tag — 列出所有可用的標籤git tag show <tag_name> — 顯示指定標籤的詳細信息git tag -l “.*” — 顯示匹配指定模式或字符的標籤
吉特克
啟動 git 用戶界面,在窗口中顯示內容、提交、完整差異和其他詳細信息
gitk — 在可視化窗口中打開 git repo
git版本
使用 git version 命令來檢查你正在使用的 git 的版本。
C:\Users\geekflare>git version git version 2.38.0.windows.1最後的話
這篇文章列出了最常用的 git 命令及其選項。
接下來,您可以查看 GitHub 憑據掃描程序。
