国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

git使用雜記

ctriptech / 3173人閱讀

摘要:今天只是對(duì)自己在日常中使用的一些常用命令的介紹與自己認(rèn)為不錯(cuò)且能提高我們辦公效率的命令。先從命令來介紹,使用過的都知道它。相信提示已經(jīng)說的很明顯了,對(duì)于我們這種要修改的情況,需要使用。這樣如果我們使用命令不小心刪除了需要的東西。

前言

作為一個(gè)開發(fā)者,如果現(xiàn)在還不知道git或者還不會(huì)使用git,那么你應(yīng)該好好的反省。自己去好好看一遍的入門介紹吧。今天只是對(duì)自己在日常中使用git的一些常用命令的介紹與自己認(rèn)為不錯(cuò)且能提高我們辦公效率的命令。內(nèi)容可能會(huì)有點(diǎn)雜亂,但絕對(duì)都是經(jīng)典的命令,在此記下筆記,也希望能幫助來賞臉關(guān)顧的你們。

區(qū)域

在這之前,來介紹一下git的三個(gè)區(qū)域

工作區(qū)(working directory)

暫存區(qū)(stage index)

本地歷史區(qū)(history)

通過一張圖就能簡潔易懂的明白它們之間的轉(zhuǎn)化。

clone

先從clone命令來介紹,使用過git的都知道它。git colne命令拉取遠(yuǎn)程倉庫到本地。但當(dāng)我們要拉取到指定的文件夾下時(shí),你可能會(huì)直接mkdir,其實(shí)無需如此,一條命令就能搞定git clone 遠(yuǎn)程倉庫 文件名,就是如此簡單。

rm

我們?cè)诠ぷ髦锌赡軙?huì)遇到這么一種情況,使用git add .直接將工作區(qū)的所有修改的文件加入到暫存區(qū)了,但是后面發(fā)現(xiàn)有一個(gè)文件先不要加進(jìn)去,此時(shí)我們就可以使用如下命令就可以將該文件退回到工作區(qū)中。

git rm --cached 
stash

有這么一種情況,當(dāng)你正在開發(fā)中時(shí),有一個(gè)線上的緊急bug需要修復(fù),此時(shí)開發(fā)中的功能又沒有完成你不想提交,此時(shí)你可以使用git stash將工作區(qū)的文件都存放起來。這時(shí)你就可以放心的去切分支修復(fù)bug,修復(fù)完之后執(zhí)行git stash pop可以將先前存放的取出,當(dāng)然也有一些其他的相關(guān)命令例如:git stash list查看存放的記錄,git stash drop丟棄存放的記錄。

tag

可能在開發(fā)中我們要打標(biāo)簽git tag tagName,并且要將相應(yīng)的標(biāo)簽推送到遠(yuǎn)程倉庫中,此時(shí)可以使用如下命令進(jìn)行推送。

git push --tags tagName
amend

當(dāng)你commit以后,發(fā)現(xiàn)有一個(gè)文件沒有加進(jìn)上次的commit中,或者又修改了一些文件。此時(shí)你并不想增加新的commit信息,只是想將其加入到上次的commit中。這時(shí)你就可以使用

git commit --amend 

將暫存區(qū)的文件加入其中,并且你也可以修改此時(shí)的commit信息。

reset

reset也能實(shí)現(xiàn)前面的rm的效果,可以使用如下命令來替代前面的git rm --cached 命令

git reset HEAD 

reset用途更廣,結(jié)合soft參數(shù)可以回撤到任意的commit節(jié)點(diǎn)進(jìn)行操作

git reset --soft index

執(zhí)行該命令之后,就回到index處,工作區(qū)不變、暫存區(qū)回到當(dāng)時(shí)的index處。另外還有一個(gè)hard參數(shù)。

git reset --hard index

soft可以說對(duì)立,它的效果就在于工作區(qū)與暫存區(qū)的不同,它會(huì)清空這兩個(gè)區(qū)。

rebase

對(duì)于rebase是重定向的意思,如果你當(dāng)前的分支與遠(yuǎn)程的分支commit信息存在差異時(shí),會(huì)提醒你此時(shí)不能進(jìn)行push,必須先將遠(yuǎn)程的commit信息拉去到本地來,才能進(jìn)行提交。對(duì)于這種情況就可以使用rebase命令了。如下當(dāng)前處在develop分支

此時(shí)應(yīng)該先執(zhí)行rebase命令

git fetch
git rebase origin/master

執(zhí)行完之后,最后再push到遠(yuǎn)程master

git push origin master

最終各個(gè)分支的情況就是上圖的效果了。如果覺得命令多難記,這里也可用一條命令來完成上面的效果

git pull --rebase origin master

這是rebase的簡單運(yùn)用,也是常見的命令了。下面介紹rebase的一個(gè)可選參數(shù)--onto

--onto

使用場景:開發(fā)過程中我們都會(huì)創(chuàng)建不同的分支進(jìn)行開發(fā)不同的功能,當(dāng)你在分支A上創(chuàng)建了新分支B進(jìn)行開發(fā)功能并且也提交了一些commit時(shí),此時(shí)你發(fā)現(xiàn)原來A分支上有錯(cuò)誤的commit,如果要rebasemaster上時(shí),不能將這個(gè)錯(cuò)誤的commit也附帶上。這個(gè)時(shí)候就該--onto大顯神通了。

當(dāng)前處在B分支,要得到上面的結(jié)果,只需執(zhí)行如下命令

git rebase --onto master  B

這個(gè)不僅可以針對(duì)不同的分支,也能作用于同一個(gè)分支上。所以針對(duì)上面的情況可以只對(duì)分支B進(jìn)行操作,等價(jià)命令如下:

git rebase --onto   B
--interactive

當(dāng)我們要修改commit信息的名稱時(shí),如果要修改的commit處在第一個(gè)時(shí),可以使用

git commit --amend

如果不是第一個(gè)時(shí),我們就要使用到rebase--interactive可選參數(shù)了,可以簡寫為-i

git rebase -i 

參數(shù)后面的commit hash code為需要修改的commit的前一個(gè)。執(zhí)行之后就會(huì)出現(xiàn)如下類似的信息:

pick 137cf0a First coommit
pick 163dc38 Second commit

# Rebase f9aee6e..163dc38 onto f9aee6e (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit"s log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

根據(jù)提示我們可以有6個(gè)可選擇的操作。相信提示已經(jīng)說的很明顯了,對(duì)于我們這種要修改First coommit的情況,需要使用r

r 137cf0a First commit
pick 163dc38 Second commit

執(zhí)行之后會(huì)跳到修該First coomit的界面,進(jìn)行修改即可。

First commit

# Please enter the commit message for your changes. Lines starting
# with "#" will be ignored, and an empty message aborts the commit.
#
# Date:      Thu Jan 26 23:07:10 2017 +0800
#
# rebase in progress; onto f9aee6e
# You are currently editing a commit while rebasing branch "master" on "f9aee6e".
#
# Changes to be committed:
#       new file:   file1

至于其他的操作項(xiàng),有興趣的可以自己去嘗試一下。例如s操作就可以用來合并commit

branch

相信branch都很熟悉,我這里要說的是他的另一種可能會(huì)用到的情況。場景是這樣的:如果在你進(jìn)行創(chuàng)建新的分支時(shí),并不想從當(dāng)前的commit信息節(jié)點(diǎn)進(jìn)行創(chuàng)建分支。

要實(shí)現(xiàn)如上效果只需在創(chuàng)建分支時(shí)在后面再添加額外的參數(shù),該參數(shù)就是你所需調(diào)到的commit節(jié)點(diǎn)的hash code

git branch new_branch 
push

這里提一下push--set-upstream,它的效果是設(shè)置上游分支,當(dāng)我們將遠(yuǎn)程不存在的本地分支推送到遠(yuǎn)程時(shí),如果不在推送的分支上,我們一般會(huì)使用如下命令進(jìn)行推送。

git checkout push_branch
git push origin push_branch

下面是簡潔的方法,使用該參數(shù)無需切換分支,可以直接使用如下命令進(jìn)行推送。

git push --set-upstream origin push_branch
cherry-pick

這個(gè)命令的場景是:當(dāng)你所在的分支沒用,你要?jiǎng)h除它,但其中的一個(gè)commit你還是想推送到遠(yuǎn)程master上。

將分支切換到master,執(zhí)行以下命令:

git cherry-pick 
merge

我們所熟知的是使用merge來進(jìn)行分支的合并,每次使用merge時(shí)都會(huì)自動(dòng)將副分支合并成一個(gè)commit進(jìn)行推送到主分支上,那么如果我不想它自動(dòng)推送到主分支上時(shí)(可能我還需要進(jìn)行修改),這時(shí)就可以使用--squash操作

git merge --squash dev_branch

執(zhí)行完以上命令后,我們就可以在暫存區(qū)看到一個(gè)還未提交的文件狀態(tài)。

reflog

當(dāng)我們切分支太頻繁了之后,可能會(huì)忘了一些分支是從哪個(gè)分支切過來的,此時(shí)可以使用如下命令查看:

git reflog
894a16d HEAD@{0}: commit: commit another todo
6876e5b HEAD@{1}: checkout: moving from solve_world_hunger to kill_the_batman
324336a HEAD@{2}: commit: commit todo
6876e5b HEAD@{3}: checkout: moving from blowup_sun_for_ransom to solve_world_hunger
6876e5b HEAD@{4}: checkout: moving from kill_the_batman to blowup_sun_for_ransom
6876e5b HEAD@{5}: checkout: moving from cure_common_cold to kill_the_batman
6876e5b HEAD@{6}: commit (initial): initial commit

這樣我們就可以看到所用的操作歷史了。這樣如果我們使用git reset命令不小心刪除了需要的東西。可以通過此來查找到刪除操作的hash code,之后就可以通過如下命令進(jìn)行恢復(fù)。

git checkout 
目前想到的就這些了,希望能有所幫助

個(gè)人博客:https://idisfkj.github.io

關(guān)注

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66580.html

相關(guān)文章

  • git使用雜記

    摘要:今天只是對(duì)自己在日常中使用的一些常用命令的介紹與自己認(rèn)為不錯(cuò)且能提高我們辦公效率的命令。先從命令來介紹,使用過的都知道它。相信提示已經(jīng)說的很明顯了,對(duì)于我們這種要修改的情況,需要使用。這樣如果我們使用命令不小心刪除了需要的東西。 前言 作為一個(gè)開發(fā)者,如果現(xiàn)在還不知道git或者還不會(huì)使用git,那么你應(yīng)該好好的反省。自己去好好看一遍的入門介紹吧。今天只是對(duì)自己在日常中使用git的一些常...

    genedna 評(píng)論0 收藏0
  • CSS 雜記

    摘要:樣式優(yōu)先級(jí)內(nèi)聯(lián)樣式表標(biāo)簽內(nèi)部嵌入樣式表當(dāng)前文件中外部樣式表外部文件中。標(biāo)簽的權(quán)值為類選擇符的權(quán)值為選擇符的權(quán)值最高為權(quán)值為權(quán)值為權(quán)值為權(quán)值為權(quán)值為權(quán)值為但是因?yàn)橛袨樽罡邫?quán)值可以用來設(shè)置最高權(quán)值優(yōu)先級(jí)樣式,權(quán)值高于用戶自己設(shè)置的樣式。 css 樣式優(yōu)先級(jí) 內(nèi)聯(lián)樣式表(標(biāo)簽內(nèi)部)> 嵌入樣式表(當(dāng)前文件中)> 外部樣式表(外部文件中)。 權(quán)值 瀏覽器會(huì)根據(jù)權(quán)值來判斷使用哪種 css 樣式的...

    lavor 評(píng)論0 收藏0
  • JavaScript 雜記(一)

    摘要:基礎(chǔ)簡單基礎(chǔ)數(shù)據(jù)類型值得注意的是的值是,表示一個(gè)空對(duì)象指針,沒有指向任何對(duì)象。的值是,表示申明變量或?qū)ο蟮膶傩詤s未初始化。值是派生自的,所以對(duì)他們執(zhí)行相等測試會(huì)返回。字符串單引號(hào)和雙引號(hào)都可以用來表示字符串,只要前后一致即可。 目的 記憶總是會(huì)隨著時(shí)間而淡化,學(xué)習(xí)了點(diǎn)什么,就記錄下點(diǎn)什么。 做點(diǎn)什么,總比不做要好。 基礎(chǔ) 簡單(基礎(chǔ))數(shù)據(jù)類型 Number ...

    raise_yang 評(píng)論0 收藏0
  • 2018.12月問題整理雜記

    摘要:布局如下對(duì)于這塊,我不是很理解,后發(fā)現(xiàn),注銷這個(gè)樣式,用可以解決。后查閱一些資料,到了原因。 -12.24-:html布局如下: html css javascript vue css: tab{ width: 600px; margin: 0 auto; } .tab-tit{ width: 600px; font-si...

    wudengzan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

ctriptech

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<