<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          高頻使用的 Git 命令

          共 3625字,需瀏覽 8分鐘

           ·

          2020-03-13 23:26


          作者:CRPER

          juejin.im/post/5de8d849e51d455808332166

          前言

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

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

          使用的 Git版本:git version 2.24.0

          命令


          git log




          #?輸出概要日志,這條命令等同于
          #?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ī)操作,必備


          daf88394fc41d2123a607b1ee8e2e58c.webp


          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?-F


          git 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_sha1


          git revert

          一般用于master 的代碼回滾,因為多人在上面協(xié)作,

          revert?可以平穩(wěn)的回滾代碼,但卻保留提交記錄,不會讓協(xié)作的人各種沖突


          git revert commit-sha1


          git rebase

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

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

          在整個功能開發(fā)完畢的時侯,會有非常多的 commit,用 rebase?可以讓我們的commit記錄很干凈


          git rebase -i git-sha1|branch(HEAD)
          git rebase --continue
          git rebase --skip
          git rebase --abort
          115b956ac5e94d0c6dc41faca9dab210.webp


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


          突然發(fā)現(xiàn)截圖還有幾個新的行為,估計是新版本帶來的,從字面上就可以看出來大體的意思, 就是把回滾和打標簽這些放到變基中簡化操作。溫馨提示:


          • 本地提交之前,最好把基準點變?yōu)樾枰喜⒌姆种В@樣提交 PR/MR 的時侯就不會沖突(本地來解決沖突)
          • 不要在公共分支上變基!!!一變其他協(xié)作者基本都一堆沖突!除非你們有很清晰的分支管理機制

          git merge


          git merge?--no-ff branchName


          git pull


          git pull中用的最多是帶--rebase(-r)的方式(變基形式拉取合并代碼),保持分支一條線。默認的pull會走ff模式,多數(shù)情況會產(chǎn)生新的commit,部分參數(shù)與 merge提供一致。


          git push


          當本地分支存在,遠程分支不存在的時侯,可以這樣推送關聯(liá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-lease


          git remote


          這個東西用在你需要考慮維護多個地方倉庫的時侯會考慮,或者修改倉庫源的時侯
          git remote add origin url
          git remote add github url
          git remote set-url??origin(或者其他上游域) url
          git branch該命令用的最多的就是刪除本地分支,重命名分支,刪除遠程分支了
          git branch -d branchName
          git branch -M oldBranch newNameBranch
          git branch --set-upstream-to=origin/xxx
          git branch --set-upstream-to?origin xxx


          git stash


          暫存用的最多時侯就是你擼代碼擼到一半,突然說有個緊急 BUG 要修正。或者別人在你這里需要幫忙排查代碼,你這時候也會用到。強烈建議給每個 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 -5


          git cherry-pick


          這個東西你可以理解為你去買橘子,你會專門挑一些符合心意的橘子放到購物籃中。你可以從多個分支同時挑取部分需要的 commit 合并到同一個地方去,是不是賊騷。這貨和變基有點類似,但是僅僅類似,挑過來的 commit 若是沒有沖突則追加。有沖突會中斷,解決后 --continue
          git cherry-pick commit-sha1
          git cherry-pick master~4?master~2
          git cherry-pick startGitSha1..endGitSha1


          git rm


          這個命令在舊的版本用的比較最多的姿勢是為了重新索引.gitignore 的范圍
          git rm --cache -- file
          git rm -r --cached .
          git add .
          git commit?-m "xxx"



          git rev-parse


          這個估計一般人用的不是很多,可以通過這個快速獲取部分git 倉庫的信息我在弄腳本的時侯就會從這里拿東西
          git rev-parse --short HEAD --verify
          git rev-parse --show-toplevel
          git rev-parse --git-dir
          git rev-parse --all


          git diff


          對于這個命令,在終端比對用的不是很頻繁,除了少量改動的時侯可能會用這個看看。其他情況下我更傾向于用 GUI 工具來看,因為比對更加直觀。


          總結


          git 的常用命令其實很好掌握,很多命令都有 Linux 的影子。列出來的命令都是高頻使用的,或許有一些更騷的姿勢沒有摸索到,有更好建議的,或者發(fā)現(xiàn)不對之處的請留言,會及時修正,謝謝閱讀。




          推薦閱讀




          我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)

          每個前端工程師都應該了解的圖片知識(長文建議收藏)

          為什么現(xiàn)在面試總是面試造火箭?



          bc341a77693b6e77ae8c7fbf62d3eeff.webp

          你點的每個在看,我都認真當成了喜歡。

          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲 无码 人妻 | 蜜桃传媒AV | 美女艹逼视频网站 | 一本色道久久综合无码欧美 | 丁香五月婷婷啪啪啪 |