小編給大家分享一下git怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)商城網(wǎng)站建設(shè)、微信營(yíng)銷、系統(tǒng)平臺(tái)開(kāi)發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
區(qū)域
在這之前,來(lái)介紹一下git的三個(gè)區(qū)域
工作區(qū)(working directory)
暫存區(qū)(stage index)
本地歷史區(qū)(history)
通過(guò)一張圖就能簡(jiǎn)潔易懂的明白它們之間的轉(zhuǎn)化。
clone
先從clone命令來(lái)介紹,使用過(guò)git的都知道它。git colne命令拉取遠(yuǎn)程倉(cāng)庫(kù)到本地。但當(dāng)我們要拉取到指定的文件夾下時(shí),你可能會(huì)直接mkdir,其實(shí)無(wú)需如此,一條命令就能搞定git clone 遠(yuǎn)程倉(cāng)庫(kù) 文件名,就是如此簡(jiǎn)單。
rm
我們?cè)诠ぷ髦锌赡軙?huì)遇到這么一種情況,使用git add .直接將工作區(qū)的所有修改的文件加入到暫存區(qū)了,但是后面發(fā)現(xiàn)有一個(gè)文件先不要加進(jìn)去,此時(shí)我們就可以使用如下命令就可以將該文件退回到工作區(qū)中。
git rm --cached <file>
stash
有這么一種情況,當(dāng)你正在開(kāi)發(fā)中時(shí),有一個(gè)線上的緊急bug需要修復(fù),此時(shí)開(kāi)發(fā)中的功能又沒(méi)有完成你不想提交,此時(shí)你可以使用git stash將工作區(qū)的文件都存放起來(lái)。這時(shí)你就可以放心的去切分支修復(fù)bug,修復(fù)完之后執(zhí)行g(shù)it stash pop可以將先前存放的取出,當(dāng)然也有一些其他的相關(guān)命令例如:git stash list查看存放的記錄,git stash drop丟棄存放的記錄。
tag
可能在開(kāi)發(fā)中我們要打標(biāo)簽git tag tagName,并且要將相應(yīng)的標(biāo)簽推送到遠(yuǎn)程倉(cāng)庫(kù)中,此時(shí)可以使用如下命令進(jìn)行推送。
git push --tags tagName
amend
當(dāng)你commit以后,發(fā)現(xiàn)有一個(gè)文件沒(méi)有加進(jìn)上次的commit中,或者又修改了一些文件。此時(shí)你并不想增加新的commit信息,只是想將其加入到上次的commit中。這時(shí)你就可以使用
git commit --amend <file>
將暫存區(qū)的文件加入其中,并且你也可以修改此時(shí)的commit信息。
reset
reset也能實(shí)現(xiàn)前面的rm的效果,可以使用如下命令來(lái)替代前面的git rm --cached <file>命令
git reset HEAD <file>
但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可以說(shuō)對(duì)立,它的效果就在于工作區(qū)與暫存區(qū)的不同,它會(huì)清空這兩個(gè)區(qū)。
rebase
對(duì)于rebase是重定向的意思,如果你當(dāng)前的分支與遠(yuǎn)程的分支commit信息存在差異時(shí),會(huì)提醒你此時(shí)不能進(jìn)行push,必須先將遠(yuǎn)程的commit信息拉去到本地來(lái),才能進(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è)分支的情況就是上圖的效果了。如果覺(jué)得命令多難記,這里也可用一條命令來(lái)完成上面的效果
git pull --rebase origin master
這是rebase的簡(jiǎn)單運(yùn)用,也是常見(jiàn)的命令了。下面介紹rebase的一個(gè)可選參數(shù)--onto。
--onto
使用場(chǎng)景:開(kāi)發(fā)過(guò)程中我們都會(huì)創(chuàng)建不同的分支進(jìn)行開(kāi)發(fā)不同的功能,當(dāng)你在分支A上創(chuàng)建了新分支B進(jìn)行開(kāi)發(fā)功能并且也提交了一些commit時(shí),此時(shí)你發(fā)現(xiàn)原來(lái)A分支上有錯(cuò)誤的commit,如果要rebase到master上時(shí),不能將這個(gè)錯(cuò)誤的commit也附帶上。這個(gè)時(shí)候就該--onto大顯神通了。
當(dāng)前處在B分支,要得到上面的結(jié)果,只需執(zhí)行如下命令
git rebase --onto master <b的commit hash code> B
這個(gè)不僅可以針對(duì)不同的分支,也能作用于同一個(gè)分支上。所以針對(duì)上面的情況可以只對(duì)分支B進(jìn)行操作,等價(jià)命令如下:
git rebase --onto <a的commit hash code> <b的commit hash code> B
--interactive
當(dāng)我們要修改commit信息的名稱時(shí),如果要修改的commit處在***個(gè)時(shí),可以使用
git commit --amend
如果不是***個(gè)時(shí),我們就要使用到rebase的--interactive可選參數(shù)了,可以簡(jiǎn)寫為-i。
git rebase -i <commit hash code>
參數(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)說(shuō)的很明顯了,對(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操作就可以用來(lái)合并commit。
branch
相信branch都很熟悉,我這里要說(shuō)的是他的另一種可能會(huì)用到的情況。場(chǎng)景是這樣的:如果在你進(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 <commit hash code>
push
這里提一下push的--set-upstream,它的效果是設(shè)置上游分支,當(dāng)我們將遠(yuǎn)程不存在的本地分支推送到遠(yuǎn)程時(shí),如果不在推送的分支上,我們一般會(huì)使用如下命令進(jìn)行推送。
git checkout push_branch git push origin push_branch
下面是簡(jiǎn)潔的方法,使用該參數(shù)無(wú)需切換分支,可以直接使用如下命令進(jìn)行推送。
git push --set-upstream origin push_branch
cherry-pick
這個(gè)命令的場(chǎng)景是:當(dāng)你所在的分支沒(méi)用,你要?jiǎng)h除它,但其中的一個(gè)commit你還是想推送到遠(yuǎn)程master上。
將分支切換到master,執(zhí)行以下命令:
git cherry-pick <b的 commit hash code>
merge
我們所熟知的是使用merge來(lái)進(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è)分支切過(guò)來(lái)的,此時(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命令不小心刪除了需要的東西。可以通過(guò)此來(lái)查找到刪除操作的hash code,之后就可以通過(guò)如下命令進(jìn)行恢復(fù)。
git checkout <hash code>
以上是“git怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章題目:git怎么用
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article18/iihjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、域名注冊(cè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)