2019-10-25

git 使用筆記

git原理:

文件(blob)對(duì)象揍障,樹(shù)(tree)對(duì)象,提交(commit)對(duì)象

tree對(duì)象 : {指針俩由,權(quán)限模式毒嫡,類型,文件名}

commit對(duì)象: {上層tree指針幻梯,作者审胚,時(shí)間戳,上次提交對(duì)象id礼旅,注釋} 可通過(guò)git log 獲取

文件對(duì)象blob:{文件內(nèi)容}

  1. Git保存文件完整內(nèi)容膳叨。
  2. 儲(chǔ)鍵值對(duì)key-value。
  3. 文件的不同版本痘系,都有一個(gè)(40位)的 SHA-1校驗(yàn)和與之對(duì)應(yīng)菲嘴。
  4. SHA-1 校驗(yàn)和是文件的指針,Git依靠它來(lái)區(qū)分文件汰翠。
  5. 每一個(gè)文件都會(huì)在Git的版本庫(kù)里生成blob對(duì)象來(lái)保存龄坪。
  6. 對(duì)于沒(méi)有變化的文件,Git只會(huì)保留上一個(gè)版本的指針复唤。
  7. Git實(shí)際上是通過(guò)維持復(fù)雜的文件樹(shù)來(lái)實(shí)現(xiàn)版本控制的健田。
  8. 使用Git的工作流程基本就是就是文件在三個(gè)工作區(qū)域之間的流動(dòng)。
  9. 應(yīng)該大量使用分支進(jìn)行團(tuán)隊(duì)協(xié)作佛纫。
  10. 分支只是對(duì)提交對(duì)象的一個(gè)引用妓局。

SHA-1 校驗(yàn)和:

是文件指針,每個(gè)文件不同版本都有一個(gè)指針對(duì)應(yīng)

分布式版本控制

默認(rèn)分支是master呈宇,存儲(chǔ)在.git\refs\heads\master文件中

引用就是SHA-1 校驗(yàn)和的別名好爬,存儲(chǔ)在.git/refs文件夾中

引用master,Git默認(rèn)創(chuàng)建的始終指向你項(xiàng)目主分支的最后一次提交記錄

創(chuàng)建分支只是copy一份引用甥啄,非常輕量存炮,只有commit提交操作是重量的

git commit 文件改變 生成新的blob對(duì)象 存入一份新的文件快照

git commit 文件未改變 存入上一版本的文件指針

當(dāng)前分支的最后一次的提交ID cat .git/HEAD

tag指向一個(gè)commit對(duì)象,固定不變的。

存儲(chǔ)鍵值對(duì)(key-value)

工作目錄穆桂,暫存區(qū)域宫盔,以及本地倉(cāng)庫(kù)

已提交(committed),已修改(modified)和已暫存(staged)

git config 配置

換行符問(wèn)題:

Windows(\r\n)享完、Linux(\n)和MacOS(\r)三個(gè)系統(tǒng)的換行符不同飘言,在跨平臺(tái)合作的時(shí)候就會(huì)出現(xiàn)換行符的問(wèn)題。 Git 提供了 autocrlf 和 safecrlf 兩個(gè)參數(shù)來(lái)解決這個(gè)問(wèn)題驼侠。

例如姿鸿,出現(xiàn)這種情況: A和B兩個(gè)開(kāi)發(fā)人員,A使用LF(\n)做換行符倒源,B使用CRLF(\r\n)做換行符苛预,且都沒(méi)有開(kāi)啟 autocrlf 參數(shù),那么A在遷出B的文件笋熬,并使用自己的編輯器打開(kāi)之后就會(huì)發(fā)現(xiàn)热某,雖然沒(méi)有對(duì)文件做任何修改,但它的狀態(tài)是modified胳螟。這是由于A的編輯器自動(dòng)將B的文件中的所有換行符替換成了(LF)昔馋,這與版本庫(kù)中的(CRLF)不同。

autocrlf

git config --global core.autocrlf true # 簽出時(shí)將換行符轉(zhuǎn)換成CRLF糖耸,簽入時(shí)轉(zhuǎn)換回 LF秘遏。

git config --global core.autocrlf input #簽出時(shí)不轉(zhuǎn)換換行符,簽入時(shí)轉(zhuǎn)換回 LF

git config --global core.autocrlf false #簽出簽入均不轉(zhuǎn)換

safecrlf

如果你把換行符搞亂了嘉竟,在一個(gè)文件中既包含windows風(fēng)格的換行符也包含unix風(fēng)格換行符邦危。

git config --global core.safecrlf true # 拒絕提交包含混合換行符的文件

git config --global core.safecrlf false # 允許提交包含混合換行符的文件

git config --global core.safecrlf warn # 提交包含混合換行符的文件時(shí)候給出警示

問(wèn)題描述

項(xiàng)目組現(xiàn)在用git做版本控制,使用中遇到不同平臺(tái)下?lián)Q行符不同造成的問(wèn)題舍扰,windows下的換行符為crlf倦蚪,linux和MAX OS 下?lián)Q行符是 lf。linux和MAX os就按說(shuō)明設(shè)置為core.autocrlf input(貌似是默認(rèn)值)边苹,windows設(shè)置為core.autocrlf true陵且。可是有時(shí)候還是會(huì)遇到換行符的問(wèn)題个束。review的時(shí)候就會(huì)發(fā)現(xiàn)有的commit的變化是所有行都被刪除重建

解決方案:

  1. 無(wú)論什么系統(tǒng)慕购,把所有人的編輯器的換行符模式設(shè)置成Unix格式,然后把a(bǔ)utocrlf設(shè)置成false播急。

  2. 修改git設(shè)置 core.autocrlf=input.檢出時(shí)不轉(zhuǎn)換脓钾,提交轉(zhuǎn)換為lf,這樣可以避免提交windows換行符的情況桩警;

  3. 修改eclipse設(shè)置 windows>General> workspace 下 new text file line delimiter 選擇Unix。

  4. 已有的項(xiàng)目可能已經(jīng)存在換行符不同的問(wèn)題需要修正一下昌妹。 如果當(dāng)前開(kāi)發(fā)有多個(gè)分支且各分支不同步捶枢,需要每個(gè)分支進(jìn)行一次轉(zhuǎn)換:選中項(xiàng)目 file> convert line delimiter to > Unix 握截,創(chuàng)建新的commit; 如果只有一個(gè)分支或多個(gè)分支處于同一節(jié)點(diǎn)烂叔〗靼可以從master切換一個(gè)新分支,進(jìn)行第2步的修改操作蒜鸡,然后commit 胯努,將此分支合并到所有分支。

  5. 將修改過(guò)的分支push到gitlab逢防,其他成員更新代碼即可叶沛。 (ps:由于每個(gè)人系統(tǒng)不同或者就是git的問(wèn)題,可能出現(xiàn)更新完代碼換行符不變忘朝,這時(shí)以服務(wù)器上的代碼為準(zhǔn)重新clone一份最新代碼即可)

.ignore文件

*.html #忽略所有html

!foo.html # 不忽略foo.html

*.[oa] # 忽略所有.o和 .a文件

dbg # 忽略dbg文件和dbg目錄

dbg/ # 只忽略dbg目錄

!dbg/ #不忽略dbg目錄

/dbg # 只忽略當(dāng)前目錄下的dbg文件和目錄灰署,子目錄的dbg不在忽略范圍內(nèi)

錯(cuò)誤解決方案:注意帶sudo

git Please move or remove them before you can merge. 錯(cuò)誤解決方案

git clean -d -fx ""

x -----刪除忽略文件已經(jīng)對(duì)git來(lái)說(shuō)不識(shí)別的文件

d -----刪除未被添加到git的路徑中的文件

f -----強(qiáng)制運(yùn)行

修改git commit 提交

  1. 沒(méi)有g(shù)it push : git commit --amend參數(shù)
  2. 已 git push :

git commit --amend改寫(xiě)單次commit

git rebase -i <commit range>刪改排以及合并多個(gè)commit

git checkout <commit> -- <filename>獲取歷史版本的某個(gè)文件

git reset [--hard] <commit>移動(dòng)HEAD指針

git revert <commit>創(chuàng)建一個(gè)回退提交

git push -f <remote> <branch>強(qiáng)制push,覆蓋原有遠(yuǎn)程倉(cāng)庫(kù)

https://github.com/uolcano/blog/issues/12

git pull****失敗當(dāng)本地commit一個(gè)提交和遠(yuǎn)端服務(wù)器中的代碼有沖突(別人也改了相同的文件)時(shí)

git pull --rebase

  1. 把本地 repo. 從上次 pull 之后的變更暫存
  2. 恢復(fù)到上次 pull 時(shí)的狀態(tài)
  3. 合并遠(yuǎn)端的變更到本地
  4. 最后再合并剛剛暫存下來(lái)的本地變更

git rebase 合并

rebase的時(shí)候局嘁,修改沖突后的提交不是使用commit命令溉箕,而是執(zhí)行rebase命令指定 --continue選項(xiàng)。若要取消rebase悦昵,指定 --abort選項(xiàng)肴茄。

$ git add myfile.txt

$ git rebase --continue

git stash 保存工作區(qū)

保存:git stash 保存當(dāng)前操作 git stash save “msg”

查看:git stash list

恢復(fù): git stash apply <stash@{num}>,默認(rèn)恢復(fù)上次操作但指,不刪除stash內(nèi)容独郎;恢復(fù)指定序號(hào)<stash@{num}>;

git stash pop <stash@{num}>,默認(rèn)恢復(fù)上次操作,同時(shí)刪除stash內(nèi)容枚赡;恢復(fù)指定序號(hào)的操作<stash@{num}>

刪除: git stash drop <stash@{num} > 默認(rèn)刪除上次記錄氓癌;刪除指定記錄<stash@{num}>

git stash clear 清空所有記錄

git diff

git diff HEAD^^ HEAD main.c //兩個(gè)提交之間查看文件" main.c"的差異

你還可以在兩個(gè)不同版本中比較兩個(gè)不同的文件,如下所示:

git diff <revision_1>:<file_1> <revision_2>:<file_2>**

git 遠(yuǎn)程操作 5個(gè)命令

  1. git clone git clone -o <參數(shù)-o命名遠(yuǎn)程主機(jī)> <版本庫(kù)的網(wǎng)址> <本地目錄名>
  2. git remote 改名:git remote rename <原主機(jī)名> <新主機(jī)名> 添加遠(yuǎn)程主機(jī):git remote add <主機(jī)名> <網(wǎng)址> 查看詳情:git remote show <主機(jī)名>
  3. git fetch 取回遠(yuǎn)程分支更新: git fetch <遠(yuǎn)程主機(jī)名> <分支名>
  4. git pull git push <遠(yuǎn)程主機(jī)名> <來(lái)源地>:<目的地>
  5. git push

git tag 標(biāo)簽(打在HEAD指向的commit里)

輕標(biāo)簽(名稱) 本地臨時(shí)使用 git tag <tagname>

注解標(biāo)簽(名稱贫橙,注解草描,簽名) 發(fā)版使用

git tag

git tag stable-1 1b2e3f

git tag [-a|-s|-u] stable-1 1b2e3f

git tag -a <tagname> -m “選項(xiàng)來(lái)添加注解”

git tag -am注解”標(biāo)簽名

如果在tag命令指定-n選項(xiàng)執(zhí)行,可以顯示標(biāo)簽的列表和注解

BASIC

git add files 把當(dāng)前文件放入暫存區(qū)域

git commit 給暫存區(qū)域生成快照并提交

git status 查看狀態(tài) gst

git diff 對(duì)比工作區(qū)與版本庫(kù)內(nèi)容

git log 查看所有commit記錄

git reflog 查看所有操作記錄

git checkout xxx 切換到xxx分支

git branch 查看分支

git checkout -b xxx 創(chuàng)建并切換到新分支

git merge xxx 合并xxx分支到當(dāng)前

git branch -d xxx 刪除xxx分支

git diff HEAD -- <文件名> 對(duì)比工作區(qū)和版本庫(kù)最新版本的修改

修改回退:

git reset HEAD <文件名> 退出暫存區(qū) 修改保留

git checkout -- <文件名> 沒(méi)git add 拿暫存區(qū)替換疏哗;已git add拿版本庫(kù)替換

git reset –hard HEAD^ 回退上一版本(本地源碼一起改變)

git reset --hard commitID 回退到指定版本

撤銷git add

git reset --mixed 版本回退若未,所有文件退出暫存區(qū),但是修改保留

git reset <文件目錄>/ 撤銷目錄

git reset –soft:修改保留在暫存區(qū)莫湘,如果還要提交直接commit即可

git reset –hard:徹底回退到某個(gè)版本尤蒿,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容

git reset 提交層面 在私有分支上舍棄一些沒(méi)有提交的更改

git reset 文件層面 將文件從緩存區(qū)中移除

git checkout 提交層面 切換分支或查看舊版本

git checkout 文件層面 舍棄工作目錄中的更改

git revert 提交層面 在公共分支上回滾更改

git revert 文件層面 (木有

刪除文件

git rm <文件名> && git commit -m 從版本庫(kù)刪除 (git rm 從暫存區(qū)刪除)

git checkout -- <文件名> 從版本庫(kù)恢復(fù)

其他操作

git reset -- files 撤銷最后一次git add files,git reset撤銷所有暫存區(qū)文件

git checkout -- files 從暫存區(qū)域復(fù)制到工作區(qū)幅垮,丟棄沒(méi)有g(shù)it add的修改

git commit -a 相當(dāng)于git add + git commit

git commit files

git checkout HEAD -- files 回滾到復(fù)制最后一次提交

遠(yuǎn)程操作

git clone <庫(kù)地址> 克隆遠(yuǎn)程庫(kù)到本地

git remote -v 列出關(guān)聯(lián)的遠(yuǎn)程主機(jī)

git remote add <庫(kù)名><庫(kù)地址> 關(guān)聯(lián)遠(yuǎn)程庫(kù)

<庫(kù)地址> 取消遠(yuǎn)程庫(kù)關(guān)聯(lián)

git push :gh-pages 刪除遠(yuǎn)程分支(原理:推送空白分支覆蓋)

git remote rename <原名> <新名> 參數(shù)rename腰池,遠(yuǎn)程庫(kù)改名

git fetch <遠(yuǎn)程主機(jī)名> <分支名> 拉取遠(yuǎn)程庫(kù)更新

git branch -r <遠(yuǎn)程主機(jī)名> <分支名> 查看遠(yuǎn)程分支

git branch -a 查看所有分支(包括遠(yuǎn)程分支)

git pull <遠(yuǎn)程庫(kù)名> <遠(yuǎn)程分支名>:<本地分支名> 取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地的指定分支合并

git push <遠(yuǎn)程庫(kù)名> <本地分支名>:<遠(yuǎn)程分支名>

git push origin dev:dev_branch // 推送本地dev分支到遠(yuǎn)程dev_branch分支

在命令行上創(chuàng)建新的存儲(chǔ)庫(kù)

echo“#LargeScreen”>> README.md

git init

git add README.md

git commit -m“first commit”

git remote add origin git@github.com:qiansr/LargeScreen.git

git push -u origin master

從命令行推送現(xiàn)有存儲(chǔ)庫(kù)

git remote add origin git@github.com:qiansr/LargeScreen.git

git push -u origin master

git reset --soft HEAD^

終極恢復(fù)

git reflog 顯示整個(gè)本地倉(cāng)儲(chǔ)的commit(所有branch,包括已撤銷的commit

git log 只包括當(dāng)前分支的commit.

git reflog --relative-date 顯示相對(duì)時(shí)間的commit紀(jì)錄

分支

git branch 查看分支

git branch <分支> 創(chuàng)建分支

git checkout <分支> 切換到分支

git checkout -b <分支> 創(chuàng)建+切換分支

git merge <分支> 合并分支到當(dāng)前分支

git branch -d <分支> 刪除分支

git branch -D <分支> 強(qiáng)行刪除沒(méi)被合并的分支

git merge --no-ff -m "" dev merge時(shí)會(huì)生成一個(gè)新的commit

分支策略

master分支 發(fā)布新版本

dev分支 每個(gè)人都有自己的分支示弓,往dev分支上合并

—no-ff參數(shù) 用普通模式合并讳侨,能看出曾經(jīng)做過(guò)合并

fast forward合并 看不出來(lái)曾經(jīng)做過(guò)合并

Bug****修復(fù)

首先,隱藏當(dāng)前工作現(xiàn)場(chǎng)

git stash

確定要在哪個(gè)分支上修復(fù)****bug****奏属,就從那個(gè)分支創(chuàng)建臨時(shí)****bug****分支

$ git checkout master

$ git checkout -b issue-101

修復(fù)****bug****跨跨,然后提交

$ git add readme.txt

$ git commit -m "fix bug 101"

切換到****master****分支,完成合并囱皿,最后刪除****bug****分支

git checkout master

git merge --no-ff -m "merged bug fix 101" issue-101

最后回到****dev****分支干活

$ git checkout dev

工作流程模式:

  1. 首先勇婴,可以試圖用git push origin branch-name推送自己的修改
  2. 如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新嘱腥,需要先用git pull試圖合并
  3. 如果合并有沖突耕渴,則解決沖突,并在本地提交
  4. 沒(méi)有沖突或者解決掉沖突后爹橱,再用git push origin branch-name推送就能成功萨螺!

注意:

如果git pull提示“no tracking information”,則用命令git branch --set-upstream dev origin/dev 創(chuàng)建本地分支和遠(yuǎn)程分支的關(guān)鏈愧驱。

查看遠(yuǎn)程庫(kù)信息慰技,使用git remote -v;

本地新建的分支如果不推送到遠(yuǎn)程组砚,對(duì)其他人就是不可見(jiàn)的吻商;

標(biāo)簽管理

Git的標(biāo)簽是版本庫(kù)的快照,它指向某個(gè)commit的指針糟红。發(fā)布一個(gè)版本時(shí)艾帐,先打一個(gè)版本標(biāo)簽,這樣盆偿,就唯一確定了打標(biāo)簽時(shí)刻的版本柒爸。將來(lái)無(wú)論什么時(shí)候,取某個(gè)標(biāo)簽的版本事扭,就是把那個(gè)打標(biāo)簽的時(shí)刻的歷史版本取出來(lái)捎稚。

git tag git tag用來(lái)為某個(gè)提交創(chuàng)建一個(gè)輕量級(jí)標(biāo)簽

$git tag stable-1 1b2e3f

如果想為標(biāo)簽添加注釋,那么需要?jiǎng)?chuàng)建一個(gè)標(biāo)簽對(duì)象求橄。創(chuàng)建標(biāo)簽對(duì)象后今野,一個(gè)對(duì)象就會(huì)被添加到git對(duì)象庫(kù)中,然后標(biāo)簽指向這個(gè)對(duì)象

$git tag [-a|-s|-u] stable-1 1b2e3f

簽名的標(biāo)簽

git config user.signingkey

git diff $git diff [--cached]

--cached參數(shù)只顯示將要被提交的改變

$git diff branch1..branch2

比較兩個(gè)分支

$git diff HEAD

比較當(dāng)前工作目錄和上次提交(HEAD)

$git diff file

比較file在當(dāng)前工作目錄和上次提交

[--stat] 統(tǒng)計(jì)數(shù)據(jù)

git pull $git pull repourl branchname

默認(rèn)的branch_name是master罐农,這會(huì)將遠(yuǎn)程的repo拉過(guò)來(lái)并且和當(dāng)前分支合并条霜。

遠(yuǎn)程工作時(shí),可以添加別名

$git remote add aliasname repourl

$git fetch alias_name

fetch命令只會(huì)拉下來(lái)更新涵亏,而不會(huì)執(zhí)行merge工作

$git merge aliasname/branchname

github 創(chuàng)建項(xiàng)目主頁(yè)****page

  • 登錄github 新建一個(gè) mybook項(xiàng)目 倉(cāng)庫(kù)
  • 建立本地git的遠(yuǎn)程關(guān)聯(lián)

git remote add mybook git@github.io/xxx.git //

git checkout -b ph-pages // 建立ph-pages分支

git add xxx

git commit -m "" //將要發(fā)布的內(nèi)容提交入庫(kù)

git push mybook -u ph-pages //推送到遠(yuǎn)程倉(cāng)庫(kù)并 -u參數(shù)建立綁定

通過(guò)訪問(wèn)****http:///github.io/<****項(xiàng)目名****> 訪問(wèn)項(xiàng)目主頁(yè)

git log 查看提交日志

glgga git log --all --decorate --graph --decorate參數(shù) 顯示所標(biāo)記的標(biāo)簽

glola ||**glol **

ZSH git命令簡(jiǎn)寫(xiě)

gb='git branch'

gba='git branch -a'

gbda='git branch --merged | command grep -vE "^(*|\smaster\s$)" | command xargs -n 1 git branch -d'**

gbl='git blame -b -w'

gbnm='git branch --no-merged'

gbr='git branch --remote'

gbs='git bisect'

gbsb='git bisect bad'

gbsg='git bisect good'

gbsr='git bisect reset'

gbss='git bisect start'

g='git'

ga='git add'

gaa='git add --all'

gapa='git add --patch'

gc='git commit -v'

gc!='git commit -v --amend'

gca='git commit -v -a'

gca!='git commit -v -a --amend'

gcan!='git commit -v -a -s --no-edit --amend'

gcam='git commit -a -m'

gcb='git checkout -b'

gcf='git config --list'

gcl='git clone --recursive'

gclean='git clean -fd'

gpristine='git reset --hard && git clean -dfx'

gcm='git checkout master'

gcmsg='git commit -m'

gco='git checkout'

gcount='git shortlog -sn'

compdef gcount=git

gcp='git cherry-pick'

gcs='git commit -S'

gd='git diff'

gdca='git diff --cached'

gdct='git describe --tags git rev-list --tags --max-count=1'

**gdt='git diff-tree --no-commit-id --name-only -r' **

gdw='git diff --word-diff'

gf='git fetch'

gfa='git fetch --all --prune'

gfo='git fetch origin'

gg='git gui citool'

gga='git gui citool --amend'

ggpull='git pull origin $(git_current_branch)'

ggpush='git push origin $(git_current_branch)'

ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'

ggpur='ggu'

gignore='git update-index --assume-unchanged'

gignored='git ls-files -v | grep "^[[:lower:]]"'

git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'

gk='\gitk --all --branches'

gke='\gitk --all $(git log -g --pretty=format:%h)'

gl='git pull'

git log --all --decorate --graph

glg='git log --stat'

glgp='git log --stat -p'

glgg='git log --graph'

glgga='git log --graph --decorate --all'

glgm='git log --graph --max-count=10'

glo='git log --oneline --decorate'

glol="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

glola="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"

glog='git log --oneline --decorate --graph'

glp="_git_log_prettily"

gm='git merge'

gmom='git merge origin/master'

gmt='git mergetool --no-prompt'

gmtvim='git mergetool --no-prompt --tool=vimdiff'

gmum='git merge upstream/master'

gp='git push'

gpd='git push --dry-run'

gpoat='git push origin --all && git push origin --tags'

gpu='git push upstream'

gpv='git push -v'

gr='git remote'

gra='git remote add'

grb='git rebase'

grba='git rebase --abort'

grbc='git rebase --continue'

grbi='git rebase -i'

grbm='git rebase master'

grbs='git rebase --skip'

grh='git reset HEAD'

grhh='git reset HEAD --hard'

grmv='git remote rename'

grrm='git remote remove'

grset='git remote set-url'

grt='cd $(git rev-parse --show-toplevel || echo ".")'

gru='git reset --'

grup='git remote update'

grv='git remote -v'

gsb='git status -sb'

gsd='git svn dcommit'

gsi='git submodule init'

gsps='git show --pretty=short --show-signature'

gsr='git svn rebase'

gss='git status -s'

gst='git status'

gsta='git stash'

gstaa='git stash apply'

gstd='git stash drop'

gstl='git stash list'

gstp='git stash pop'

gsts='git stash show --text'

gsu='git submodule update'

gts='git tag -s'

gtv='git tag | sort -V'

gunignore='git update-index --no-assume-unchanged'

gunwip='git log -n 1 | grep -q -c "--wip--" && git reset HEAD~1'

gup='git pull --rebase'

gupv='git pull --rebase -v'

glum='git pull upstream master'

gwch='git whatchanged -p --abbrev-commit --pretty=medium'

gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit -m "--wip--"'

分支合并

rebase宰睡,merge

分支變基:

$ git checkout dev

$ git rebase master

git checkout master

$ git merge dev

gitsvn命令對(duì)比

常用的svngit命令對(duì)比如下:

svnadmin create ------------------------------> git init

svn co ------------------------------> git clone

svn update ------------------------------> git pull

svn add ------------------------------> git add

svn commit ------------------------------> git add, git commit

svn status ------------------------------> git status

svn switch <branch> ------------------------> git checkout <branch>

svn merge <branch> ------------------------> git merge <branch>

svn revert <file> ------------------------------> git checkout <file>

設(shè)置當(dāng)前倉(cāng)庫(kù)的user.name/user.email

$ git config user.email aaa

$ git config user.email aaa@aaa.com

設(shè)置全局user.name/user.email

$ git config --global user.name yinlijun

$ git config --global user.email yinlijun2004@gmail.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒲凶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夹厌,更是在濱河造成了極大的恐慌豹爹,老刑警劉巖裆悄,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矛纹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡光稼,警方通過(guò)查閱死者的電腦和手機(jī)或南,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艾君,“玉大人采够,你說(shuō)我怎么就攤上這事”ⅲ” “怎么了蹬癌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)虹茶。 經(jīng)常有香客問(wèn)我逝薪,道長(zhǎng),這世上最難降的妖魔是什么蝴罪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任董济,我火速辦了婚禮,結(jié)果婚禮上要门,老公的妹妹穿的比我還像新娘虏肾。我一直安慰自己,他們只是感情好欢搜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布封豪。 她就那樣靜靜地躺著,像睡著了一般炒瘟。 火紅的嫁衣襯著肌膚如雪吹埠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天唧领,我揣著相機(jī)與錄音藻雌,去河邊找鬼。 笑死斩个,一個(gè)胖子當(dāng)著我的面吹牛胯杭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播受啥,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼做个,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸽心!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起居暖,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤顽频,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后太闺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體糯景,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年省骂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蟀淮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钞澳,死狀恐怖怠惶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轧粟,我是刑警寧澤策治,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站兰吟,受9級(jí)特大地震影響通惫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揽祥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一讽膏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拄丰,春花似錦府树、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至载矿,卻和暖如春垄潮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闷盔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工弯洗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逢勾。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓牡整,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溺拱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逃贝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • git 使用筆記 git原理: 文件(blob)對(duì)象谣辞,樹(shù)(tree)對(duì)象,提交(commit)對(duì)象 tree對(duì)象 ...
    神刀閱讀 3,773評(píng)論 0 10
  • 1. GIT命令 git init在本地新建一個(gè)repo沐扳,進(jìn)入一個(gè)項(xiàng)目目錄泥从,執(zhí)行g(shù)it init,會(huì)初始化一個(gè)re...
    江邊一蓑煙閱讀 799評(píng)論 0 0
  • Add & Commit git init 初始化一個(gè) Git 倉(cāng)庫(kù)(repository)沪摄,即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,832評(píng)論 0 9
  • 查看躯嫉、添加、提交卓起、刪除和敬、找回凹炸,重置修改文件 git help # 顯示command的help git sho...
    Swiftor閱讀 2,113評(píng)論 0 2
  • 輸入 y 戏阅,創(chuàng)建 git_hug 目錄No githug directory found, do you wish...
    風(fēng)花花閱讀 1,927評(píng)論 0 4