高頻使用的 Git 命令
作者:CRPER
juejin.im/post/5de8d849e51d455808332166
前言
匯總下我在項目中高頻使用的git命令及姿勢。
不是入門文檔,官方文檔肯定比我全面,這里是結合實際業(yè)務場景輸出。
使用的 Git版本:git version 2.24.0
命令
#?輸出概要日志,這條命令等同于
#?git log?--pretty=oneline --abbrev-commit
git log --oneline
#?指定最近幾個提交可以帶上 - + 數(shù)字
git log --oneline -5
#?提供類似 GUI 工具的 log?展示
git log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'查看日志,常規(guī)操作,必備

git status
查看工作區(qū)狀態(tài)的東東,不如GUI直觀,但是命令行也有一些用的
git status
git status -s
git status --show-stash
git checkout用來切換到對應記錄的,可以基于分支,提交,標簽。
切提交和標簽一般用來熱修復或者老版本需要加新特性。
git checkout dev
git checkout origin/test
git checkout --track origin/feature-test
git checkout -b testbranch
git checkout -- file
git checkout .
git checkout -git commit
天天打交道的命令,這里說一些很常見的姿勢
git commit?--amend --no-edit
git commit?--no-verify -m "xxx"
git commit?-m "xxx"
git commit?-t templateFile
git commit?-Fgit reset
不得不說,代碼回滾中這個命令也是用的很多,而且是 --hard
git reset?--hard commit_sha1
git reset?--soft commit_sha1
git reset?--soft HEAD~1
git reset?--mixed commit_sha1
git reset?--merge commit_sha1
git reset?--keep commit_sha1git revert
一般用于master 的代碼回滾,因為多人在上面協(xié)作,
revert?可以平穩(wěn)的回滾代碼,但卻保留提交記錄,不會讓協(xié)作的人各種沖突
git revert commit-sha1git rebase
變基在項目中算是很頻繁的,為什么這么說。
比如你開發(fā)一個新的 feature, 遵循最小化代碼提交的理念。
在整個功能開發(fā)完畢的時侯,會有非常多的 commit,用 rebase?可以讓我們的commit記錄很干凈
git rebase -i git-sha1|branch(HEAD)
git rebase --continue
git rebase --skip
git rebase --abort
- pick: 是保留該 commit(采用)
- edit: 一般你提交的東西多了,可以用這個把東東拿回工作區(qū)拆分更細的 commit
- reword: 這個可以重新修改你的 commit msg
- squash: 內容保留,把提交信息往上一個 commit 合并進去
- fixup: 保留變動內容,但是拋棄 commit msg
- drop:?用的比較少,無用的改動你會提交么!!!
- 本地提交之前,最好把基準點變?yōu)樾枰喜⒌姆种В@樣提交 PR/MR 的時侯就不會沖突(本地來解決沖突)
- 不要在公共分支上變基!!!一變其他協(xié)作者基本都一堆沖突!除非你們有很清晰的分支管理機制
git merge
git merge?--no-ff branchNamegit pull
git pull中用的最多是帶--rebase(-r)的方式(變基形式拉取合并代碼),保持分支一條線。默認的pull會走ff模式,多數(shù)情況會產(chǎn)生新的commit,部分參數(shù)與 merge提供一致。git push
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-leasegit remote
git remote add origin url
git remote add github url
git remote set-url??origin(或者其他上游域) urlgit branch該命令用的最多的就是刪除本地分支,重命名分支,刪除遠程分支了git branch -d branchName
git branch -M oldBranch newNameBranch
git branch --set-upstream-to=origin/xxx
git branch --set-upstream-to?origin xxxgit stash
stash?添加描述信息!!!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}git reflog
rebase,merge, reset?這些當我們不小心硬回滾的時侯,或變基錯了都可以在這里找到行為之前的commit,然后回滾。當然這個時間回溯也只在本地有用,你推送到遠程分支的破壞性改動,該涼還是得涼。git?reflog -5git cherry-pick
--continuegit cherry-pick commit-sha1
git cherry-pick master~4?master~2
git cherry-pick startGitSha1..endGitSha1git rm
git rm --cache -- file
git rm -r --cached .
git add .
git commit?-m "xxx"git rev-parse
git rev-parse --short HEAD --verify
git rev-parse --show-toplevel
git rev-parse --git-dir
git rev-parse --allgit diff
總結
推薦閱讀
我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)
每個前端工程師都應該了解的圖片知識(長文建議收藏)
為什么現(xiàn)在面試總是面試造火箭?

你點的每個在看,我都認真當成了喜歡。
評論
圖片
表情
