這 10 幾個,高級開發用的 Git 命令,個個驚豔!

2022-01-15 架構師技術棧

大家好,我是磊哥。

如果你覺得 git 很迷惑人,那麼這份小抄正是為你準備的!請注意我有意跳過了 git commit、git pull/push 之類的基本命令,這份小抄的主題是 git 的一些「高級」用法。

導航 —— 跳到之前的分支

查看歷史

# 每個提交在一行內顯示
git log --oneline

# 在所有提交日誌中搜索包含「homepage」的提交
git log --all --grep='homepage'

# 獲取某人的提交日誌
git log --author="Maxence"

哎呀:之前重置了一個不想保留的提交,但是現在又想要回滾?

# 獲取所有操作歷史
git reflog

# 重置到相應提交
git reset HEAD@{4}
# ……或者……
git reset --hard <提交的哈希值>

哎喲:我把本地倉庫搞得一團糟,應該怎麼清理?

git fetch origin
git checkout master
git reset --hard origin/master

查看我的分支和 master 的不同

git diff master..my-branch

定製提交

# 編輯上次提交
git commit --amend -m "更好的提交日誌"

# 在上次提交中附加一些內容,保持提交日誌不變git add . && git commit --amend --no-edit

# 空提交 —— 可以用來重新觸發 CI 構建
git commit --allow-empty -m "chore: re-trigger build"

- git rebase -i HEAD~3
- 保留第一行的 pick,剩餘提交替換為 squash 或 s
- 清理提交日誌並保存(vi 編輯器中鍵入 :wq 即可保存)

pick 64d26a1 feat: add index.js
s 45f0259 fix: update index.js
s 8b15b0a fix: typo in index.js

修正

git add .
git commit --fixup HEAD~1
# 或者也可以用提交的哈希值(fed14a4c)替換 HEAD~1

git rebase -i HEAD~3 --autosquash
# 保存並退出文件(VI 中輸入 `:wq`)

rebase 的時候在每個提交上執行命令如果特性很多,一個分支裡可能有多個提交。如果測試失敗了,你希望能找到導致測試失敗的提交。這時候你可以使用 rebase --exec 命令在每個提交上執行命令。

# 在最近 3 個提交上運行 `npm test` 命令
git rebase HEAD~3 --exec "npm test"

暫存暫存不止是 git stash 和 git stash pop ;)

# 保存所有正在追蹤的文件
git stash save "日誌信息"

# 列出所有的暫存項
git stash list

# 獲取並刪除暫存項
git stash apply stash@{1}
git stash drop stash@{1}
# ……或使用一條命令……
git stash pop stash@{1}

清理

# 移除遠程倉庫上不存在的分支
git fetch -p

# 移除所有包含 `greenkeeper` 的分支
git fetch -p && git branch --remote | fgrep greenkeeper | sed 's/^.\{9\}//' | xargs git push origin --delete

GitHub = Git + Hub我把 Hub 當成 git 的一個封裝來用。你如果也想這麼做,可以設置一個別名:alias git='hub'

# 打開瀏覽器訪問倉庫 url(僅限 GitHub 倉庫)git browse

額外福利:我最喜愛的 git 別名

alias g='git'
alias glog='git log --oneline --decorate --graph'
alias gst='git status'
alias gp='git push'
alias ga='git add'alias gc='git commit -v'

# 🤘
alias yolo='git push --force'

# 每周站會匯報工作時用
git-standup() {
AUTHOR=${AUTHOR:="`git config user.name`"}

since=yesterday
if [[ $(date +%u) == 1 ]] ; then
since="2 days ago"
fi

git log --all --since "$since" --oneline --author="$AUTHOR"
}

第3版:網際網路大廠面試題

包括 Java 集合、JVM、多線程、並發編程、設計模式、算法調優、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大數據、阿里巴巴等大廠面試題等、等技術棧!

閱讀原文: 高清 7701頁大廠面試題  PDF

相關焦點

  • 你可能不太會用的10個Git命令
    選自towardsdatascience作者:Jeff Hale機器之心編譯參與:李詩萌、Chita本文討論的是開發人員、數據科學家或產品經理應該了解的各種 Git 命令。我們將了解該如何用 Git 進行檢查、刪除和整理操作。我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。
  • 你可能不太會用的 10 個 Git 命令
    我們將了解該如何用 Git 進行檢查、刪除和整理操作。我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。如果你不熟悉基本的 git 命令,在閱讀本文前可以先參考我之前寫的關於 Git 工作流程的文章。
  • 你需要知道的12個Git高級命令
    本文就將介紹12個Git高級命令,合理使用這些命令可以大大提升應用Git的效率。分支合併會被記錄為一次合併提交,這種做法是很有意義的。比如說,可以通過這種方式來標識一個新特性被合併到了發布分支中。不過,當多個團隊成員工作在一個項目中並使用常規的git pull來同步分支時,提交時間線就會被不必要的合併提交所汙染。
  • ​你可能不太會用的10個Git命令
    我們將了解該如何用 Git 進行檢查、刪除和整理操作。我們還將介紹如何用 Bash 別名和 Git 編輯器配置來逃避 Vim 以節省時間。如果你不熟悉基本的 git 命令,在閱讀本文前可以先參考我之前寫的關於 Git 工作流程的文章。
  • 常用的12個Git基本命令
    好在常用的Git命令只有幾個,並且參數都比較簡單,因此,我們會很容易地跨越這個障礙。而剛開始就直接使用GUI工具並不是我們推薦的方式,因為使用GUI不僅效率慢,還會使得你根本不了解Git本身的工作機制,一旦出現問題你將不能手動進行解決。因此,要使用GUI也要建立在能夠熟悉Git基本命令的前提下。
  • 我痛恨 Git 的 10 個理由
    它有一個強大的分布式模型,允許高級用戶用分支來處理各種棘手的問題和改寫歷史記錄。但是,要學習 Git 是需要付出更多的努力,讓人不爽的命令行接口以及 Git 是如此的忽視它的使用者。下面是我為什麼如此痛恨 Git 的 10 個理由:1. 複雜的信息模型Git 的信息模型是很複雜的,而且你必須對他們都很了解。
  • 你應該知道的10個Git命令(附連結)
    在本文中,我們將討論作為開發人員、數據科學家或產品經理應該了解的各種Git命令,如何使用Git進行檢查、刪除和整理,以及如何通過Bash別名和Git編輯器配置來逃避Vim並節省時間。這裡有10個要知道的命令和一些常見的標誌。每個命令都連結到該命令的Atlassian Bitbucket指南。
  • 10個非常有用的Git Tips
    在過去的幾年中,git已經大大成熟,成為最常用的版本控制系統之一。它被各種語言和各種規模的團隊開發人員使用,從小型開源項目到像Linux內核這樣的龐大代碼庫。在本文中,我們將與您分享一些可以改善您的git體驗和工作流程的技巧。
  • 5個命令,玩轉80%git操作
    在沒有使用git之前,一直對它存在一定的偏見,主觀裡面認為不過是一個版本管理工具而已,被一些人說的神乎其神。
  • 幾個常用的 Git 高級命令
    高級命令.htmlGit 是一款開源優秀的版本管理工具,它最初由 Linus Torvalds 等人開發,用於管理 Linux Kernel 的版本研發。相關的書籍和教程網上琳琅滿目,它們多數都詳細的介紹其基本的使用和命令。本人根據自己的經驗,整理出幾個較為高級而常用的命令。推薦資料 Git Book。https://git-scm.com/book/en/v2Git blameGit blame 可以查詢每一行代碼的 commit ID、提交者和提交日期。
  • 這位小姐姐用動圖展示了10個Git命令,看完過目不忘!
    git 命令執行的究竟是什麼任務嗎?我覺得創建一些最常用且最有用的 Git 命令的可視化示例會是一個完美的用例!下面我將介紹的很多命令都有可選參數——你可以使用這些參數來改變對應命令的行為。而我的示例只會涵蓋命令的默認行為,而不會添加(或添加太多)可選配置!
  • 20 個最常用的 Git 命令,你都會用嗎?
    在這篇文章中,我將介紹在使用 Git 時最常使用的 20 個命令。以下是這些Git命令:下面讓我們逐一介紹。用法:git config –global user.email 「[email address]」該命令將分別設置提交代碼的用戶名和電子郵件地址。
  • Git鮮為人知的四個命令:bisect,blame,reflog和提交範圍
    今天我們要講的是四個鮮為人知的git命令,知道的人很少,但是很有用。1、Git bisect如果你處於一個組織良好的開發環境中,這個命令對你來說幾乎是無用的。那麼這裡蟲蟲教你用二分法搜索來幫你尋找那次罪惡的commit。git提供了git bisect命令就是用來幹這事的。想法很easy。你要使用git log從歷史中選擇一個commit,那次commit之前的版本你確定是沒有問題。於現在使用git bisect來執行一個二分搜索,找到引入錯誤的commit。
  • Git實戰演練,常用命令總結
    tool = tortoisemerge        prompt = false[mergetool  "tortoisemerge"]        cmd = \"C:/Program  Files/TortoiseGit/bin/TortoiseGitMerge.exe\" -mine $LOCAL -theirs $REMOTE
  • 您必須知道的 Git 分支開發規範,附 Git 常用命令大全!
    所以,這篇文章有些遲到,很多人的私信,沒來得及回復,這裡說聲抱歉!我們都知道,阿里有 Java 規範,Redis 規範,而 Git 規範幾乎從未被聊起,所以,今天我就說一說 Git 的日常分支開發規範。先說分支命名規範。
  • 小姐姐用動畫圖解Git命令,一看就懂!
    git rebase還提供了 6 種操作模式:以 drop 為例:3、git reset以下圖為例:9e78i 提交添加了 style.css 文件,035cc 提交添加了 index.js 文件。4、git revert舉個例子,我們在 ec5be 上添加了 index.js 文件。之後發現並不需要這個文件。
  • GIT的基本命令
    、用過,但是早已忘記了。  以後的日子裡,在具體使用 Git 的過程中,我也會介紹一些實踐操作,比如 svn 遷移 git、git 如何管理項目、git 如何合併分支等。  另外 Git 官網有完善的文檔,也提供了一本教程書籍《Pro Git》。如果你經常使用 Git 的話建議下載讀一讀,對各種操作心中有個初步印象,至少知道有什麼功能,不至於實際使用中遇到問題手忙腳亂的。
  • 20 個最常用的 Git 命令用法說明及示例
    在這篇文章中,我將介紹在使用 Git 時最常使用的 20 個命令。git add用法:git add [file]該命令可以將一個文件添加至stage(暫存區)。用法:git add *該命令可以將多個文件添加至stage(暫存區)。
  • 【譯】10 個最有用的 git log 技巧
    眾所周知,git log 是一個幫助我們查看項目變更或項目歷史的簡單命令。)(這條命令可以幫助你以簡潔的方式查看提交記錄。它把提交記錄濃縮在了一行,而且只保留類似較短的提交哈希值和提交信息)git log --oneline
  • Git命令大全
    Android Studio 的 git插件 用起來很溜(當然還有其他一些工具),它們的本質都是git命令的UI化封裝。「在 oh-my-zsh 下,輸入 gst 就出來了,誰用誰知道,裝逼利器,效率槓槓的」—魔都三帥語。git status -s 或 git status --short狀態簡覽。輸入此命令後,有如下幾種情況(總共5種情況):新添加的未跟蹤文件前面有 ??