[誤人子弟]Git常用命令

Git 全局設(shè)置

配置

git config/co

git config user.name <lilith> [--global/--local]
git config user.email <lilith@163.com> [--global/--local]
# 刪除
git config -–unset/-u user.name [--global/--local]
# 編輯
git config --edit/-e [--global/--local]
# 查看
git config --list/-l [--global/--local]
# 查看/設(shè)置忽略大小寫
git config core.ignorecase [--global/--local]
git config core.ignorecase <false> [--global/--local]

git help

git help -a

創(chuàng)建和獲取倉庫

創(chuàng)建倉庫 git init/it

git init [directory]

克隆倉庫 git clone/cl

git clone <repo> [directory]

基本操作

添加文件到倉庫 git add/ad

git add [file1] [file2]
git add [dir]
git add .

查看倉庫當(dāng)前的狀態(tài) git status/st

git status

提交暫存區(qū)到本地倉庫 git commit/cm

git commit -m <message>
git commit [file1] [file2] ... -m <message>
git commit -a # 無需git add 直接提交
git commit --amend # -am 修改提交注釋

恢復(fù)工作區(qū)文件

git restore [file1] [file2]
git restore .

回退版本 git reset/re

# --mixed 默認(rèn)婆排,混合重置
git reset [--soft | --mixed | --hard] [HEAD | hash]
# 回退到當(dāng)前版本删掀,即重置暫存區(qū)
git reset HEAD [file1] [file2]
git reset HEAD . # 默認(rèn)

重命名一個(gè)文件 git mv

# 可用于修改大小寫文件统捶,重命名后會(huì)自行添加到暫存區(qū)
git mv -f [file] [newfile]

分支與合并

分支的增刪改查 git branch/br

# 增
git branch <branchname>
git push origin <branchname> [--set-upstream] # 推送到遠(yuǎn)端[關(guān)聯(lián)]
 # 將localbranch與遠(yuǎn)端remote-branch分支關(guān)聯(lián)浪册,關(guān)聯(lián)后推送可直接推送
git branch --set-upstream-to=origin/<remote-branch> <localbranch>
# 刪
git branch -d <branchname>
git branch -D <branchname>
# 改
git branch -m <oldName> <newName>
# 查
git branch [-r] # 可查看遠(yuǎn)端分支

檢出分支 git checkout/ch 推薦直接使用 switch 代替

git checkout <branchname>
git checkout -b <branchname> # 新建并切換到新分支

切換分支 git switch/sw 具有檢出功能

git switch <branchname>

合并分支 git merge/mr

git merge <branchname>

查看歷史提交記錄 git log

git log [--oneline] [--graph] [--reverse]
# oneline 一行展示
# graph 查看歷史中什么時(shí)候出現(xiàn)了分支惠豺、合并
# reverse 反向展示

暫存到 git 棧中 git stash

git stash # 備份當(dāng)前工作區(qū)的內(nèi)容,保存到git棧中
git stash pop # 取出最近一次stash的內(nèi)容抛寝,并刪除對應(yīng)的stash
git stash list # 查看所有的stash

標(biāo)簽 git tag

# 增
git tag <tagname> [hash]
git push origin <tagname>
# 刪
git tag -d <tagname>
git push origin -d <tagname>
# 改
# 刪除原有標(biāo)簽涨颜,新建即可
# 查
git tag
# 批量操作
git push --tags # 推送
git fetch --tags # 拉取遠(yuǎn)端
git tag -l | xargs git tag -d # 刪除
git tag -l | xargs git push origin tag -d # 刪除遠(yuǎn)端

共享和更新項(xiàng)目

獲取本地沒有的數(shù)據(jù) git fetch/fe

git fetch [origin] [branch] # 倉庫別名
git fetch -p # 同步遠(yuǎn)程庫變化

從遠(yuǎn)程獲取代碼并合并本地的版本 git pull/pl

git pull
git pull [<遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>[:<本地分支名>]]
# 將遠(yuǎn)程主機(jī) origin 的 master 分支拉取過來,與本地的 localbranch 分支合并
git pull origin master:<localbranch>
git pull [--prune/-p] # 同步遠(yuǎn)程庫變化

上傳到遠(yuǎn)程并合并 git push/ps

git push [<遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>] # 推送到指定分支
git push --force/-f # 強(qiáng)制推送
git push origin <branchname> [--set-upstream] # 推送到遠(yuǎn)端[關(guān)聯(lián)]
git push origin <branchname> --delete/-d # 刪除遠(yuǎn)程分支
git push -u origin --all # 將本地分支推送到遠(yuǎn)程并關(guān)聯(lián)
git push -u origin --tags # 將本地標(biāo)簽推送到遠(yuǎn)程并關(guān)聯(lián)

遠(yuǎn)程倉庫的操作 git remote/rem

git remote -v # 查看遠(yuǎn)程倉庫信息
git remote add <origin> <url> # 添加遠(yuǎn)程倉庫
git remote rm <origin>  # 刪除遠(yuǎn)程倉庫
git remote rename <old-origin> <new-origin>  # 修改倉庫名
git remote update <origin> --prune  # 同步遠(yuǎn)程庫變化

其他操作

合并多條 commit git rebase

git rebase -i HEAD~n | hash

推送現(xiàn)有的 Git 倉庫

cd existing_repo
git remote rename <origin> <old-origin>
git remote add <origin> 倉庫地址
git push -u <origin> --all
git push -u <origin> --tags
git push -u origin <branchname>
## 相當(dāng)于執(zhí)行一下操作
git push origin <branchname1>
git branch --set-upstream-to=origin/<branchname1> <branchname1>

配置 ssh

配置用戶名及郵箱

git config --global user.name <lilith>
git config --global user.email <lilith@163.com>

設(shè)置 ssh

ssh-keygen -t rsa -C <lilith@163.com>

查看

cat ~/.ssh/id_rsa.pub

復(fù)制

clip < ~/.ssh/id_rsa.pub

預(yù)設(shè)全局配置

[user]
  name = lilith
  email = lilith@163.com

[alias]
  it = init
  co = config
  cl = clone
  ad = add
  st = status
  cm = commit
  rb = rebase
  mr = merge
  ch = checkout
  sw = switch
  br = branch
  rm = remote
  rs = reset
  fe = fetch
  pl = pull
  ps = push
  unstage = reset HEAD --
  last = log -1 HEAD
  lp = log --pretty=oneline
  lg = log --color --graph --pretty=format:'%Cred%h%Creset%C(yellow)%d%Creset %s %Cgreen%ci'
  lg5 = log -5 --color --graph --pretty=format:'%Cred%h%Creset%C(yellow)%d%Creset %s %Cgreen%ci'
  lg10 = log -10 --color --graph --pretty=format:'%Cred%h%Creset%C(yellow)%d%Creset %s %Cgreen%ci %C(bold blue)<%an>'

[color "branch"]
  current = magenta
  local = yellow
  remote = cyan

# git status 的顏色配置
[color "status"]
  changed = green   # 已變更的文件
  added = yellow    # 已暫存的文件 git add .
  untracked = cyan  # 未跟蹤的文件 新增的文件

[color "diff"]
  meta = yellow
  frag = magenta bold
  commit = yellow bold
  old = red bold
  new = green bold
  whitespace = red reverse

[color "diff-highlight"]
  oldNormal = red bold
  oldHighlight = red bold 52
  newNormal = green bold
  newHighlight = green bold 22

[core]
  excludesfile = /Users/hhdd/.gitignore_global
  ignorecase = true
  pager = less  # 分頁器 默認(rèn)是less

[pager]
  # branch, log, diff等支持paper
  branch = false



[difftool "sourcetree"]
  cmd = opendiff \"$LOCAL\" \"$REMOTE\"
  path =
[mergetool "sourcetree"]
  cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
  trustExitCode = true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末依沮,一起剝皮案震驚了整個(gè)濱河市涯贞,隨后出現(xiàn)的幾起案子枪狂,更是在濱河造成了極大的恐慌,老刑警劉巖宋渔,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件州疾,死亡現(xiàn)場離奇詭異,居然都是意外死亡皇拣,警方通過查閱死者的電腦和手機(jī)严蓖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氧急,“玉大人颗胡,你說我怎么就攤上這事》园樱” “怎么了毒姨?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钉寝。 經(jīng)常有香客問我弧呐,道長,這世上最難降的妖魔是什么嵌纲? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任泉懦,我火速辦了婚禮,結(jié)果婚禮上疹瘦,老公的妹妹穿的比我還像新娘崩哩。我一直安慰自己,他們只是感情好言沐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布邓嘹。 她就那樣靜靜地躺著,像睡著了一般险胰。 火紅的嫁衣襯著肌膚如雪汹押。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天起便,我揣著相機(jī)與錄音棚贾,去河邊找鬼。 笑死榆综,一個(gè)胖子當(dāng)著我的面吹牛妙痹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鼻疮,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怯伊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了判沟?” 一聲冷哼從身側(cè)響起耿芹,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤崭篡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吧秕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琉闪,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年砸彬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塘偎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拿霉,死狀恐怖吟秩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绽淘,我是刑警寧澤涵防,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站沪铭,受9級(jí)特大地震影響壮池,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杀怠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一椰憋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赔退,春花似錦橙依、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漆枚,卻和暖如春创译,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墙基。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工软族, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人残制。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓立砸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痘拆。 傳聞我的和親對象是個(gè)殘疾皇子仰禽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354