詳細講解高頻使用的 Git 命令

詳細講解高頻使用的 Git 命令


作者:CRPER

轉發鏈接:juejin.im/post/5de8d849e51d455808332166

前言

前面小編也整理了幾篇關於Git的相關文章,不知一直關注我的小夥伴們是否還記得?咱們一起回顧回顧:

「轉」Svn和Git比較系列教程大綱彙總-值得收藏

手把手教你詳細圖文深入git 高級用法【實踐】

好了,迴歸正題。

彙總下我在項目中高頻使用的git命令及姿勢。

不是入門文檔,官方文檔肯定比我全面,這裡是結合實際業務場景輸出。

使用的 Git版本:git version 2.24.0

命令

git log


<code># 輸出概要日誌,這條命令等同於
# git 

log

  git

log

# 指定最近幾個提交可以帶上 - + 數字 git

log

# 提供類似 GUI 工具的 

log

 展示 git

log

/<code>

查看日誌,常規操作,必備

詳細講解高頻使用的 Git 命令

git status

查看工作區狀態的東東,不如GUI直觀,但是命令行也有一些用的

<code>git 

status

git

status

-s git

status

  git checkout/<code>

用來切換到對應記錄的,可以基於分支,提交,標籤。

切提交和標籤一般用來熱修復或者老版本需要加新特性。

<code>

git

checkout dev

git

checkout origin/test

git

checkout --track origin/feature-test

git

checkout -b testbranch

git

checkout -- file

git

checkout .

git

checkout -

/<code>

git commit

天天打交道的命令,這裡說一些很常見的姿勢

<code>git 

commit

  git 

commit

  git 

commit

 -m 

"xxx"

git 

commit

 -t templateFile git 

commit

 -F/<code>

git reset

不得不說,代碼回滾中這個命令也是用的很多,而且是 --hard

<code>git 

reset

  git 

reset

  git 

reset

  git 

reset

  git 

reset

  git 

reset

 /<code>

git revert

一般用於master 的代碼回滾,因為多人在上面協作,

revert 可以平穩的回滾代碼,但卻保留提交記錄,不會讓協作的人各種衝突

<code>git revert 

commit

-

sha1

/<code>

git rebase

變基在項目中算是很頻繁的,為什麼這麼說。

比如你開發一個新的 feature, 遵循最小化代碼提交的理念。

在整個功能開發完畢的時候,會有非常多的 commit,用 rebase 可以讓我們的commit記錄很乾淨

<code>

git

rebase -i git-sha1|branch(HEAD)

git

rebase --continue

git

rebase --skip

git

rebase --abort

/<code>
詳細講解高頻使用的 Git 命令

  • pick: 是保留該 commit(採用)
  • edit: 一般你提交的東西多了,可以用這個把東東拿回工作區拆分更細的 commit
  • reword: 這個可以重新修改你的 commit msg
  • squash: 內容保留,把提交信息往上一個 commit 合併進去
  • fixup: 保留變動內容,但是拋棄 commit msg
  • drop: 用的比較少,無用的改動你會提交麼!!!

突然發現截圖還有幾個新的行為,估計是新版本帶來的,

從字面上就可以看出來大體的意思, 就是把回滾和打標籤這些放到變基中簡化操作。

溫馨提示:

  • 本地提交之前,最好把基準點變為需要合併的分支,這樣提交 PR/MR 的時侯就不會衝突(本地來解決衝突)
  • 不要在公共分支上變基!!!一變其他協作者基本都一堆衝突!除非你們有很清晰的分支管理機制

git merge

<code>

git

 merge --

no

-ff branchName/<code>


git pull

git pull中用的最多是帶--rebase(-r)的方式(變基形式拉取合併代碼),保持分支一條線。

默認的pull會走ff模式,多數情況會產生新的commit,部分參數與 merge提供一致。

git push

當本地分支存在,遠程分支不存在的時侯,可以這樣推送關聯的遠程分支

<code>git 

push

origin localbranch git

push

-d origin branchName git

push

 --tags git

push

 --follow-tags git

push

-f origin branchName git

push

 --force-with-lease/<code>

git remote

這個東西用在你需要考慮維護多個地方倉庫的時侯會考慮,或者修改倉庫源的時侯

<code>git remote 

add

origin url git remote

add

github url git remote 

set

-

url  

origin

(

或者其他上游域

) url

/<code>

git branch

該命令用的最多的就是刪除本地分支,重命名分支,刪除遠程分支了

<code>

git

branch -d branchName

git

branch -M oldBranch newNameBranch

git

branch --set-upstream-to=origin/xxx

git

branch --set-upstream-to origin xxx

/<code>

git stash

暫存用的最多時侯就是你擼代碼擼到一半,突然說有個緊急 BUG 要修正。

或者別人在你這裡需要幫忙排查代碼,你這時候也會用到。

強烈建議給每個 stash 添加描述信息!!!

<code>

git

stash save stashName

git

stash -u save stashName

git

stash push -m "更改了 xx"

git

stash apply stash@{0}

git

stash pop stash@{0}

git

stash list

git

stash clear 

git

stash drop stash@{0}

git

stash show stash@{0}

/<code>

git reflog

這個命令的強大之處,是記錄了所有行為,包括你 rebase,merge, reset 這些

當我們不小心硬回滾的時侯,或變基錯了都可以在這裡找到行為之前的commit,然後回滾。

當然這個時間回溯也只在本地有用,你推送到遠程分支的破壞性改動,該涼還是得涼。

<code>

git

 reflog -

5

/<code>

git cherry-pick

這個東西你可以理解為你去買橘子,你會專門挑一些符合心意的橘子放到購物籃中。

你可以從多個分支同時挑取部分需要的 commit 合併到同一個地方去,是不是賊騷。

這貨和變基有點類似,但是僅僅類似,挑過來的 commit 若是沒有衝突則追加。

有衝突會中斷,解決後 --continue

<code>git cherry-pick 

commit

-

sha1

git cherry-pick 

master

~

4

 

master

~

2

git cherry-pick startGitSha1..endGitSha1/<code>

git rm

這個命令在舊的版本用的比較最多的姿勢是為了重新索引.gitignore 的範圍

<code>git rm  
git rm -r  
git add .
git 

commit

 -m 

"xxx"

/<code>


git rev-parse

這個估計一般人用的不是很多,可以通過這個快速獲取部分git 倉庫的信息

我在弄腳本的時侯就會從這裡拿東西

<code>git rev-parse  
git rev-parse  
git rev-parse  
git rev-parse /<code>
<code>/<code>

git diff

對於這個命令,在終端比對用的不是很頻繁,除了少量改動的時侯可能會用這個看看。

其他情況下我更傾向於用 GUI 工具來看,因為比對更加直觀。

總結

git 的常用命令其實很好掌握,很多命令都有 Linux 的影子。

列出來的命令都是高頻使用的,或許有一些更騷的姿勢沒有摸索到,

有更好建議的,或者發現不對之處的請留言,會及時修正,謝謝閱讀。

推薦Git相關文章

「轉」Svn和Git比較系列教程大綱彙總-值得收藏

手把手教你詳細圖文深入git 高級用法【實踐】

作者:CRPER

轉發鏈接:juejin.im/post/5de8d849e51d455808332166


分享到:


相關文章: