0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Git命令合集(下)

jf_78858299 ? 來(lái)源:阿Q正磚 ? 作者:阿Q正磚 ? 2023-02-15 10:44 ? 次閱讀

7、git reset

將版本庫(kù)還原到歷史的某個(gè)時(shí)刻的狀態(tài)

git reset --hard logid(logid的前幾位即可)

將版本庫(kù)還原到上一次commit之前的狀態(tài)

git reset --hard HEAD^

有時(shí)候,進(jìn)行了錯(cuò)誤的提交,但是還沒(méi)有push到遠(yuǎn)程分支,想要撤銷本次提交,可以使用git reset –-soft/hard命令。

回退到某個(gè)版本,只回退了commit的信息,代碼修改過(guò)的沒(méi)變。如果還要提交,直接commit即可;

git reset –-soft

徹底回退到某個(gè)版本,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容,撤銷的commit中所包含的更改被沖掉,即commit與修改過(guò)代碼都撤銷,變?yōu)樵瓉?lái)的某個(gè)版本;

git reset -–hard

8、git config

添加版本庫(kù)的用戶名到本地配置文件

git config --global user.name 'username'

添加版本庫(kù)的用戶郵箱到本地配置文件

git config --global user.emal 'emal'

9、git diff

執(zhí)行g(shù)it diff來(lái)查看執(zhí)行g(shù)it status的結(jié)果的詳細(xì)信息。

git diff命令顯示已寫入緩存與已修改但尚未寫入緩存的改動(dòng)的區(qū)別。

尚未緩存的改動(dòng):

git diff

查看已緩存的改動(dòng)

git diff --cached

查看已緩存的與未緩存的所有改動(dòng)

git diff HEAD

顯示摘要而非整個(gè)diff

git diff --stat

舉個(gè)栗子:

git status -s

git diff

git add hello.php

git status -s

git diff --cached

10、git commit

git commit -m 'test comment from w3cschool.cn'

提交緩存的流程太過(guò)繁瑣,Git 也允許你用 -a 選項(xiàng)跳過(guò)這一步

git add

git commit -am 'changes to hello file'

表示提交的信息中帶有署名信息

git commit --signoff -m 'xxx'

表示對(duì)上一次提交的信息,進(jìn)行修改提交

git commit --amend 'xxx'

11、git rm

將文件從緩存區(qū)中移除

git rm

git rm hello.php

將文件從緩存區(qū)和你的硬盤中(工作目錄)刪除。如果要在工作目錄中留著該文件

git rm file

git rm --cached

12、git log

git log 查看提交歷史

git log --oneline --oneline 選項(xiàng)來(lái)查看歷史記錄的簡(jiǎn)潔的版本

git log --oneline --graph -graph 選項(xiàng),查看歷史中什么時(shí)候出現(xiàn)了分支、合并。

git log --reverse --oneline '--reverse'參數(shù)來(lái)逆向顯示所有日志

git log --author=Linus --oneline -5 --author , 例如,比方說(shuō)我們要找 Git 源碼中 Linus 提交的部分

git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

13、git tag

查看所有標(biāo)簽

git tag

-a選項(xiàng)意為“創(chuàng)建一個(gè)帶注解的標(biāo)簽”。不用-a選項(xiàng)也可以執(zhí)行,但它不會(huì)記錄這標(biāo)簽是啥時(shí)候打的,誰(shuí)打的,也不會(huì)讓你添加標(biāo)簽的注解

git tag -a v1.0

git log --online --decorate --graph --decorate 時(shí),我們可以看到我們的標(biāo)簽

追加標(biāo)簽

git tag -a v0.9 85fc7e7

git log --oneline --decorate --graph

指定標(biāo)簽信息命令

git tag -a -m "w3cschool.cn標(biāo)簽"

PGP標(biāo)簽命令

git tag -s -m "w3cschool.cn標(biāo)簽"

查看版本:

git tag

創(chuàng)建版本:

git tag [name]

刪除版本:

git tag -d [name]

查看遠(yuǎn)程版本:

git tag -r

創(chuàng)建遠(yuǎn)程版本(本地版本push到遠(yuǎn)程):

git push origin [name]

刪除遠(yuǎn)程版本:

git push origin :refs/tags/[name]

合并遠(yuǎn)程倉(cāng)庫(kù)的tag到本地:

git pull origin --tags

上傳本地tag到遠(yuǎn)程倉(cāng)庫(kù):

git push origin --tags

創(chuàng)建帶注釋的tag:

git tag -a [name] -m 'yourMessage'

二、Git與SVN比較

SVN是當(dāng)前使用最多的版本控制工具。與它相比,Git最大的優(yōu)勢(shì)在于兩點(diǎn):易于本地增加分支和分布式的特性。

圖片

1、本地增加分支

圖中Git本地和服務(wù)器端結(jié)構(gòu)都很靈活,所有版本都存儲(chǔ)在一個(gè)目錄中,你只需要進(jìn)行分支的切換即可達(dá)到在某個(gè)分支工作的效果。

而SVN則完全不同,如果你需要在本地試驗(yàn)一些自己的代碼,只能本地維護(hù)多個(gè)不同的拷貝,每個(gè)拷貝對(duì)應(yīng)一個(gè)SVN服務(wù)器地址。

舉個(gè)例子:

使用SVN作為版本控制工具,當(dāng)正在試圖增強(qiáng)一個(gè)模塊,工作做到一半,由于會(huì)改變?cè)K的行為導(dǎo)致代碼服務(wù)器上許多測(cè)試的失敗,所以并沒(méi)有提交代碼。

這時(shí)候假如現(xiàn)在有一個(gè)很緊急的Bug需要處理, 必須在兩個(gè)小時(shí)內(nèi)完成。我只好將本地的所有修改diff,并輸出成為一個(gè)patch文件,然后回滾有關(guān)當(dāng)前任務(wù)的所有代碼,再開(kāi)始修改Bug的任務(wù),等到修改好后,在將patch應(yīng)用回來(lái)。前前后后要完成多個(gè)繁瑣的步驟,這還不計(jì)中間代碼發(fā)生沖突所要進(jìn)行的工作量。

可是如果使用Git, 我們只需要開(kāi)一個(gè)分支或者轉(zhuǎn)回到主分支上,就可以隨時(shí)開(kāi)始Bug修改的任務(wù),完成之后,只要切換到原來(lái)的分支就可以優(yōu)雅的繼續(xù)以前的任務(wù)。只要你愿意,每一個(gè)新的任務(wù)都可以開(kāi)一個(gè)分支,完成后,再將它合并到主分支上,輕松而優(yōu)雅。

2、分布式提交

Git 可以本地提交代碼,所以在上面的圖中,Git有利于將一個(gè)大任務(wù)分解,進(jìn)行本地的多次提交;

而SVN只能在本地進(jìn)行大量的一次性更改,導(dǎo)致將來(lái)合并到主干上造成巨大的風(fēng)險(xiǎn)。

3、日志查看

Git 的代碼日志是在本地的,可以隨時(shí)查看;

SVN的日志在服務(wù)器上的,每次查看日志需要先從服務(wù)器上下載下來(lái)。

例如:代碼服務(wù)器在美國(guó),當(dāng)每次查看幾年前所做的工作時(shí),日志下載可能需要十分鐘,這不能不說(shuō)是一個(gè)痛苦。但是如果遷移到Git上,利用Git日志在本地的特性,查看某個(gè)具體任務(wù)的所有代碼歷史,每次只需要幾秒鐘,大大方便了工作,提高了效率。

當(dāng)然分布式并不是說(shuō)用了Git就不需要一個(gè)代碼中心服務(wù)器,如果你工作在一個(gè)團(tuán)隊(duì)里,還是需要一個(gè)服務(wù)器來(lái)保存所有的代碼的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207914
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2942

    瀏覽量

    66444
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    15688
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Git常用命令總結(jié)

    在之前的文章中,我們討論了一些初學(xué)者必備的 Git 命令。然而,這些命令僅僅觸及了 Git 功能的皮毛。
    發(fā)表于 07-21 10:30 ?263次閱讀

    Git常用的超級(jí)實(shí)用命令

    的一些Git工作流。 1 Git 常用的超級(jí)實(shí)用命令 1.1 與倉(cāng)庫(kù)相關(guān)的操作 克隆代碼倉(cāng)庫(kù)到本地,開(kāi)發(fā)必用 git clone 查看本地倉(cāng)庫(kù)配置了那些對(duì)應(yīng)的遠(yuǎn)程倉(cāng)庫(kù)。
    的頭像 發(fā)表于 10-09 17:19 ?1063次閱讀
    <b class='flag-5'>Git</b>常用的超級(jí)實(shí)用<b class='flag-5'>命令</b>

    git命令的基本使用

    git config 第一次使用git或者剛安裝的git時(shí),使用此命令設(shè)置身份Name 和 Eamail 地址。并且每次提交時(shí)會(huì)使用此信息。
    的頭像 發(fā)表于 12-11 13:53 ?806次閱讀

    Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    在實(shí)際的工作生活中,往往需要將本地的分支和遠(yuǎn)程分支關(guān)聯(lián),這樣我們就可以使用git pull命令來(lái)更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠(yuǎn)程倉(cāng)庫(kù)。但是如果此
    的頭像 發(fā)表于 12-15 09:27 ?2190次閱讀
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    SVN,HG,GIT命令對(duì)照

    SVN,HG,GIT是三種常見(jiàn)的版本控制系統(tǒng),本文簡(jiǎn)單列出一些相似的操作命令。當(dāng)然,三種系統(tǒng)各有特點(diǎn),嚴(yán)格的對(duì)應(yīng)關(guān)系是沒(méi)有的。1,第一次下載,包括源碼和版本庫(kù): svn checkout http
    發(fā)表于 01-13 16:53 ?0次下載

    Git 命令+原理 程序員必備的基礎(chǔ)

    掌握Git命令是每位程序員必備的基礎(chǔ),之前一直是用smartGit工具,直到看到大佬們都是在用Git命令操作的,回想一,發(fā)現(xiàn)有些
    的頭像 發(fā)表于 11-14 10:01 ?1670次閱讀
    <b class='flag-5'>Git</b> <b class='flag-5'>命令</b>+原理 程序員必備的基礎(chǔ)

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述

    Git常見(jiàn)的誤區(qū)和命令行工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    Git命令合集(上)

    Git是一個(gè)很強(qiáng)大的分布式版本管理工具,它不但適用于管理大型開(kāi)源軟件的源代碼(如:Linux、kernel),管理私人的文檔和源代碼也有很多優(yōu)勢(shì)(如:wsi-lgame-pro)
    的頭像 發(fā)表于 02-15 10:43 ?535次閱讀
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b><b class='flag-5'>合集</b>(上)

    Git高效命令的使用技巧

    今天浩道跟大家分享關(guān)于Git高效命令的硬核干貨,掌握這些技巧,使你事半功倍!
    的頭像 發(fā)表于 02-28 16:41 ?848次閱讀

    git rebase與相關(guān)git merge命令比較

    。 #概念 ????首先要理解的是git rebase和git merge解決了同樣的問(wèn)題。這兩個(gè)命令都旨在將更改從一個(gè)分支集成到另一個(gè)分支 - 它們只是以不同的方式進(jìn)行。試想一當(dāng)你
    的頭像 發(fā)表于 05-26 16:22 ?725次閱讀
    <b class='flag-5'>git</b> rebase與相關(guān)<b class='flag-5'>git</b> merge<b class='flag-5'>命令</b>比較

    git命令和參數(shù)

    ? ? 不知道大家平時(shí)都是怎么去學(xué)習(xí)git的,要記憶那么多的命令和參數(shù),我個(gè)人是不推薦死記硬背的,以往經(jīng)驗(yàn)證明卷的越瘋狂忘的也越快! 其實(shí)簡(jiǎn)單的理解工作原理和熟練運(yùn)用少部分常用命令,日常開(kāi)發(fā)問(wèn)題不大
    的頭像 發(fā)表于 05-31 14:22 ?489次閱讀

    Git命令的綜合手冊(cè)怎么找

    若你使用 Git 時(shí)需要獲取幫助,有三種等價(jià)的方法可以找到 Git 命令的綜合手冊(cè)(manpage): $ git help $ git -
    的頭像 發(fā)表于 07-22 11:02 ?564次閱讀

    git基本操作命令用法

    基本用法 上面的四條命令在工作目錄、暫存目錄(也叫做索引)和倉(cāng)庫(kù)之間復(fù)制文件。 git add files把當(dāng)前文件放入暫存區(qū)域。 git commit給暫存區(qū)域生成快照并提交。 git
    的頭像 發(fā)表于 09-13 16:29 ?696次閱讀
    <b class='flag-5'>git</b>基本操作<b class='flag-5'>命令</b>用法

    Git中最常用的命令介紹

    git add命令用于將修改的文件添加到下一次提交的暫存區(qū)。你可以指定要添加的文件git add命令用于將修改的文件添加到下一次提交的暫存區(qū)。你可以指定要添加的文件,例如
    發(fā)表于 10-26 10:27 ?182次閱讀
    <b class='flag-5'>Git</b>中最常用的<b class='flag-5'>命令</b>介紹

    Git命令解決常見(jiàn)場(chǎng)景記錄

    不需要這些文件了,想要批量處理掉,所以記錄一命令行一次性丟棄未跟蹤文件的方法,同時(shí)也記錄一撤銷push請(qǐng)求的git記錄。
    的頭像 發(fā)表于 12-20 09:44 ?327次閱讀
    用<b class='flag-5'>Git</b><b class='flag-5'>命令</b>解決常見(jiàn)場(chǎng)景記錄