5年程序员生涯,使用的最频繁的Git 命令总结
點(diǎn)擊上方小詹學(xué)Python,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
作者:CRPER
鏈接:juejin.im/post/5de8d849e51d455808332166
前言
匯總下我在項(xiàng)目中高頻使用的git命令及姿勢。
不是入門文檔,官方文檔肯定比我全面,這里是結(jié)合實(shí)際業(yè)務(wù)場景輸出。
使用的 Git版本:git version 2.24.0
命令
git log
#?輸出概要日志,這條命令等同于 #?git log?--pretty=oneline --abbrev-commit git log --oneline#?指定最近幾個(gè)提交可以帶上 - + 數(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用來切換到對應(yīng)記錄的,可以基于分支,提交,標(biāo)簽。
切提交和標(biāo)簽一般用來熱修復(fù)或者老版本需要加新特性。
git checkout devgit checkout origin/testgit checkout --track origin/feature-testgit checkout -b testbranchgit checkout -- filegit checkout .git checkout -git commit
天天打交道的命令,這里說一些很常見的姿勢
git commit?--amend --no-editgit commit?--no-verify -m "xxx"git commit?-m "xxx"git commit?-t templateFilegit commit?-Fgit reset
不得不說,代碼回滾中這個(gè)命令也是用的很多,而且是 --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 的代碼回滾,因?yàn)槎嗳嗽谏厦鎱f(xié)作,
revert?可以平穩(wěn)的回滾代碼,但卻保留提交記錄,不會讓協(xié)作的人各種沖突
git revert commit-sha1git rebase
變基在項(xiàng)目中算是很頻繁的,為什么這么說。
比如你開發(fā)一個(gè)新的 feature, 遵循最小化代碼提交的理念。
在整個(gè)功能開發(fā)完畢的時(shí)侯,會有非常多的 commit,用 rebase?可以讓我們的commit記錄很干凈
git rebase -i git-sha1|branch(HEAD) git rebase --continue git rebase --skip git rebase --abortpick: 是保留該 commit(采用)
edit: 一般你提交的東西多了,可以用這個(gè)把東東拿回工作區(qū)拆分更細(xì)的 commit
reword: 這個(gè)可以重新修改你的 commit msg
squash: 內(nèi)容保留,把提交信息往上一個(gè) commit 合并進(jìn)去
fixup: 保留變動(dòng)內(nèi)容,但是拋棄 commit msg
drop:?用的比較少,無用的改動(dòng)你會提交么!!!
突然發(fā)現(xiàn)截圖還有幾個(gè)新的行為,估計(jì)是新版本帶來的,
從字面上就可以看出來大體的意思, 就是把回滾和打標(biāo)簽這些放到變基中簡化操作。
溫馨提示:
本地提交之前,最好把基準(zhǔn)點(diǎn)變?yōu)樾枰喜⒌姆种?#xff0c;這樣提交 PR/MR 的時(shí)侯就不會沖突(本地來解決沖突)
不要在公共分支上變基!!!一變其他協(xié)作者基本都一堆沖突!除非你們有很清晰的分支管理機(jī)制
git merge
git merge?--no-ff branchNamegit pull
git pull中用的最多是帶--rebase(-r)的方式(變基形式拉取合并代碼),保持分支一條線。
默認(rèn)的pull會走ff模式,多數(shù)情況會產(chǎn)生新的commit,部分參數(shù)與 merge提供一致。
git push
當(dāng)本地分支存在,遠(yuǎn)程分支不存在的時(shí)侯,可以這樣推送關(guān)聯(lián)的遠(yuǎn)程分支
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
這個(gè)東西用在你需要考慮維護(hù)多個(gè)地方倉庫的時(shí)侯會考慮,或者修改倉庫源的時(shí)侯
git remote add origin url git remote add github url git remote set-url??origin(或者其他上游域) urlgit branch
該命令用的最多的就是刪除本地分支,重命名分支,刪除遠(yuǎn)程分支了
git branch -d branchName git branch -M oldBranch newNameBranch git branch --set-upstream-to=origin/xxx git branch --set-upstream-to?origin xxxgit stash
暫存用的最多時(shí)侯就是你擼代碼擼到一半,突然說有個(gè)緊急 BUG 要修正。
或者別人在你這里需要幫忙排查代碼,你這時(shí)候也會用到。
強(qiáng)烈建議給每個(gè) 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
這個(gè)命令的強(qiáng)大之處,是記錄了所有行為,包括你 rebase,merge, reset?這些
當(dāng)我們不小心硬回滾的時(shí)侯,或變基錯(cuò)了都可以在這里找到行為之前的commit,然后回滾。
當(dāng)然這個(gè)時(shí)間回溯也只在本地有用,你推送到遠(yuǎn)程分支的破壞性改動(dòng),該涼還是得涼。
git?reflog -5git cherry-pick
這個(gè)東西你可以理解為你去買橘子,你會專門挑一些符合心意的橘子放到購物籃中。
你可以從多個(gè)分支同時(shí)挑取部分需要的 commit 合并到同一個(gè)地方去,是不是賊騷。
這貨和變基有點(diǎn)類似,但是僅僅類似,挑過來的 commit 若是沒有沖突則追加。
有沖突會中斷,解決后 --continue
git cherry-pick commit-sha1 git cherry-pick master~4?master~2 git cherry-pick startGitSha1..endGitSha1git rm
這個(gè)命令在舊的版本用的比較最多的姿勢是為了重新索引.gitignore 的范圍
git rm --cache -- file git rm -r --cached . git add . git commit?-m "xxx"git rev-parse
這個(gè)估計(jì)一般人用的不是很多,可以通過這個(gè)快速獲取部分git 倉庫的信息
我在弄腳本的時(shí)侯就會從這里拿東西
git rev-parse --short HEAD --verify git rev-parse --show-toplevel git rev-parse --git-dir git rev-parse --allgit diff
對于這個(gè)命令,在終端比對用的不是很頻繁,除了少量改動(dòng)的時(shí)侯可能會用這個(gè)看看。
其他情況下我更傾向于用 GUI 工具來看,因?yàn)楸葘Ω又庇^。
總結(jié)
git 的常用命令其實(shí)很好掌握,很多命令都有 Linux 的影子。
列出來的命令都是高頻使用的,或許有一些更騷的姿勢沒有摸索到,
有更好建議的,或者發(fā)現(xiàn)不對之處的請留言,會及時(shí)修正,謝謝閱讀。
來和小伙伴們一起向上生長呀!
掃描下方二維碼,添加小詹微信,可領(lǐng)取千元大禮包并申請加入 Python 學(xué)習(xí)交流群,群內(nèi)僅供學(xué)術(shù)交流,日常互動(dòng),如果是想發(fā)推文、廣告、砍價(jià)小程序的敬請繞道!一定記得備注「交流學(xué)習(xí)」,我會盡快通過好友申請哦!
????長按識別,添加微信
(添加人數(shù)較多,請耐心等待)
????長按識別,關(guān)注小詹
(掃碼回復(fù) 1024 領(lǐng)取程序員大禮包)
總結(jié)
以上是生活随笔為你收集整理的5年程序员生涯,使用的最频繁的Git 命令总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非常适合小白的 Asyncio 教程
- 下一篇: 技术解析:如何用pyecharts绘制时