在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

12個訣竅與技巧來讓你的Git經(jīng)驗更加有用和強大

Linux愛好者 ? 來源:未知 ? 作者:李倩 ? 2018-04-17 15:54 ? 次閱讀

Git,一個分布式版本控制系統(tǒng),它已經(jīng)成為了開源世界的源碼控制默認工具,在4月7號12歲了。但是使用Git中更另人沮喪的是,你需要了解多少才能讓你更有效的使用它。同時這也是使用Git中比較美妙的一件事,因為沒有什么比發(fā)現(xiàn)一個新的小技巧來簡化或提高你的工作流的效率更加令人快樂了。

為了紀念Git的12歲生日,這篇文章提供12個訣竅與技巧來讓你的Git經(jīng)驗更加有用和強大,從一些你可能會忽視的基礎(chǔ)開始到一些真正的強大技巧!

1. 你的 ~/.gitconfig 文件

在第一次用git命令來提交一個倉庫的修改,你可能會首先看到像下面這種內(nèi)容:

***Pleasetellmewhoyouare.

Run

gitconfig--globaluser.email"you@example.com"

gitconfig--globaluser.name"YourName"

tosetyouraccount'sdefaultidentity.

你可能還沒有意識到那些命令正在修改~/.gitconfig文件的內(nèi)容,這個文件就是Git存儲全局配置選項的文件。通過你的~/.gitconfig文件你可要做很多事情,包括定義別名,永久的打開(或關(guān)閉)一些特定的命令選項,還可以修改Git如何工作的方面(例如:git diff使用哪個diff算法,或者默認使用什么類型的的合并策略)。你甚至可以按條件地基于路徑包含其他配置文件到一個倉庫!使用“man git-config”查看所有細節(jié)。

2. 你的倉庫的.gitconfig文件

在之前的技巧中,你可能會想知道在git config 命令中的—global標識是做什么的。它告訴Git更新“global”配置,也就是~/.gitconfig發(fā)現(xiàn)的這個配置。當然,擁有一個全局的配置代表了一個本地配置,而且足夠肯定的是,如果你省略—global選項,git config 會更新這個倉庫自己的配置,這個配置文件存儲在.git/config。

在.git/config中設(shè)置的選項會推翻在~/.gitconfig文件中的對應(yīng)設(shè)置。因此,例如,如果你需要在一個特定的倉庫中使用一個不同的郵箱地址,你可以運行“git config user.email “also_you@example.com””。然后,你在這個倉庫中提交會使用你單獨配置的這個郵箱地址。如果你使用一個工作的電腦在開源項目中工作,但是希望在這個項目中使用個人的郵箱地址,而其他在主Git配置中仍然使用工作郵箱,這一點是非常有用的。

在~/.gitconfig中可以設(shè)置的任何東西,都可以在.git/config中設(shè)置來對這個倉庫做特定設(shè)置。在下面的這些技巧中,當我提到在你的~/.gitconfig文件中添加什么東西,同時也說明可以在特定的倉庫的.git/config中添加來設(shè)置那個選項。

3. 別名

別名是你可以在你的~/.gitconfig文件里做的另外一件事。他的工作原理就像shell命令行里的別名——設(shè)置一個新的命令名稱來調(diào)用一個或者多個其他的命令,這些命令通常包括一些特定的選項或標識。別名對于你經(jīng)常使用的那些又長又復雜的命令行是非常有效的。

你可以使用git config命令來定義別名——例如,執(zhí)行”git config —global —addalias.ststatus”命令后,會使得執(zhí)行g(shù)it st與執(zhí)行g(shù)it status做的是同樣的事情——然而,我發(fā)現(xiàn)當定義別名的時候,只需要直接在~/.gitconfig文件里編輯通常會更加容易。

如果你選擇這么做,你會發(fā)現(xiàn)~/.gitconfig文件就是一個INI文件,INI是一種帶有特定段落的基礎(chǔ)鍵值對文件格式。添加一個別名時,你將改變[alias]段落。例如:上面提到的定義相同的git st別名,需要添加下面這段代碼:

[alias]

st=status

(如果已經(jīng)有了[alias]這個段落,只需要在這個段落中添加到第二行)

4. shell命令中的別名

別名不僅僅是運行其他Git子命令——你也可以定義別名,這些別名可以運行其他shell命令。這是一個很好的方法來處理一個重復的、罕見的、復雜的任務(wù):一旦你已經(jīng)想到第一次怎么做,那就使用一個別名保存這個命令。例如,我有幾個倉庫是我fork了一個開源項目,而且在本地做了一些修改,這些修改不用貢獻給這個項目。在項目的持續(xù)的開發(fā)的過程中我想保持最新的版本,同時保留我的本地修改。為了完成這個想法,我需要定期地從upstream倉庫中合并這些修改到我的fork——我定義一個別名“upstream-merge”來完成這個操作。定義如下:

upstream-merge = !"git fetch origin -v && git fetch upstream -v && git merge upstream/master && git push"

別名定義開始的這個“!”是告訴Git來通過shell運行這個命令。這個例子包括了運行一些git命令,但是使用這種方式定義別名可以運行任何shell命令。

(注意:如果你想復制我的upstream-merge別名,你將需要確認你有一個Git remote命名為upstream來指定這個你fork的upstream倉庫。你可以通過“git remote add upstream ”來添加一個。)

5. 可視化提交圖

如果你從事的是一個有很多分支活動的項目,有時可能很難掌握所有正在發(fā)生的工作以及它們之間的相關(guān)性。各種GUI工具可讓你弄清楚不同分支的概況以及在所謂的“提交圖”中提交記錄。例如,以下是我使用GitLab提交圖查看器進行可視化的一個存儲卡的部分截圖:

如果你是專注于命令行的用戶,就可以不在多個工具之間切換導致分心,這個工具在命令行上實現(xiàn)了類似圖形界面的提交視圖。通過 –graph 參數(shù)獲取 git 的記錄:

下面的命令可以得到一樣的倉庫可視化片段:

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

–graph 選項將圖表添加到日志的左側(cè),–abbrev-commit 存儲提交使用了 SHA 方法, –date=relative 表達式用相對的術(shù)語來表示日期,并且 –pretty 以 bit 格式處理自定義格式。我知道 git lg 的別名,它是我最常運行的10個命令之一。

6. 更優(yōu)雅的強制推送(force-push)

有時,就跟你盡量避免使用它一樣困難的是,你會發(fā)現(xiàn)你需要運行 git push –force 來覆寫你倉庫的遠程副本上的歷史記錄。你可能已得到了一些反饋,他們會要求你進行交互式的變基(rebase),或者你可能已經(jīng)搞砸了,并且希望隱藏證據(jù)。

當他人在倉庫的遠程副本的同一分支上進行改動后,會發(fā)生強制推送的風險。當你強制推送已重寫的歷史記錄時,某些提交將會丟失。這是 git push –force-with-lease 出現(xiàn)的原因 – 如果遠程分支已更新,它不會允許你執(zhí)行強制推送,這將確保你不會丟棄他人的工作。

7. git add -N

你是否使用過git commit -a在一次行動中提交你所有未完成的修改,只有在你push完你的提交后才發(fā)現(xiàn)git commit -a忽略了新添加的文件?解決這個問題你可以用git add -N(“通知”)來告訴Git你想把新添加的文件包含在提交中在你第一次實際提交之前。

8. git add -p

一最佳的實踐為當使用Git時確保每個提交只包含一個邏輯更改–不管是修復一個bug還是(實現(xiàn))一個新功能。然而,有時當你工作,會在你的倉庫中出現(xiàn)一個以上的修改提交。你怎么樣把事情分開,使每個提交只包含適當?shù)男薷哪兀縢it add –patch來解救!

這個標志將會使git add命令查看你工作副本中所有的變更,詢問你是否愿意將它提交,跳過,或者推遲決定(還有其他一些更強大的選項,你可以通過在運行這命令后選擇?來查看)。git add -p是一個神奇的工具來生產(chǎn)結(jié)構(gòu)良好的提交。

9. git checkout -p

與 git add -p類似,git checkout命令將使用 –patch 或 -p 選項,這會使 git 在本地工作副本中展示每個“大塊”的改動,并允許丟棄對應(yīng)改動 —— 簡單地說就是恢復本地工作副本到你改變之前的狀態(tài)。

某些場景下這非常有用,例如,在你跟蹤一個 bug 時引入了一堆調(diào)試日志語句,在修正了這個 bug 之后,你可以先使用 git checkout -p 刪除所有新加的調(diào)試日志,之后使用 git add -p 來添加 bug 修復。沒有比組合一個極好的、結(jié)構(gòu)良好的提交更令人滿意的了!

10. Rebase with command execution

有些項目有一條規(guī)則,即存儲庫中的每個提交都必須處于可工作狀態(tài) – 也就是說,在每次提交時,代碼應(yīng)該是可編譯的,或運行測試套件應(yīng)該不會失敗的。當你在某分支上工作時間長時,但如果你最終因為某種原因需要rebase時,那么跳過每個變基后的提交以確保你沒有意外引入一個中斷是有些冗長乏味的。

幸運的是,git rebase已經(jīng)支持了-x或–exec選項。git rebase -x 將在每次提交應(yīng)用到rebase后運行該命令。因此,例如,如果你有一個項目,其中npm run tests會運行你的測試套件,那么在rebase期間應(yīng)用每次提交后,git rebase -x npm run tests將會運行測試套件。這使你可以查看測試套件是否在任何變基后的提交中有失敗情況,因此你可以確保測試套件在每次提交時仍能通過。

11. 基于時間修改的指南

很多Git子命令都接受一個修正的參數(shù)來決定命令作用于倉庫的哪個部分,可能是某次特定的提交的 sha1 值,或者一個分支的名稱,又或者是一個符號性的名稱如 HEAD(代表當前檢出分支最后一次的提交),除了這些簡單的形式以外,你還可以附加一個指定的日期或時間作為參數(shù),表示“這個時間的引用”。

這個功能在某些時候會變得十分有用,比如當你處理最新出現(xiàn)的 bug,自言自語道:“這個功能明明昨天還是好好的,到底又改了些什么”,不用盯著滿屏的 git 日志的輸出試圖弄清楚什么時候更改了提交,您只需運行 git diff HEAD@{yesterday},會看到從昨天以來的所有修改,這也適用于較長的時間段(例如 git diff HEAD@{‘2 months ago’}) ,以及一個確切的日期(例如git diff HEAD@{‘2010-01-01 12:00:00’})。

您還可以將這些基于日期的修改參數(shù)與使用修正參數(shù)的任何 Git 子命令一起使用。在 gitrevisions 手冊頁中有關(guān)于具體使用哪種格式的詳細信息。

12. 全知的 reflog

你是不是試過在 rebase 時干掉過某次提交,后來又發(fā)現(xiàn)你需要保留這次提交的一些東西?你可能覺得這些提交的東西已經(jīng)永遠找不回來了,只能從頭再來了。其實不然,但如果你在本地工作副本中提交了,提交就會進入到 “引用日志” ,你仍然可以訪問到。

運行 git reflog 將在本地工作副本中顯示當前分支的所有活動的列表,并為您提供每個提交的 SHA1 值。一旦發(fā)現(xiàn)你 rebase 時放棄的那個提交,你可以運行 git checkout 來檢出該次提交,復制好你需要的信息,然后再運行 git checkout HEAD 返回到分支最新的提交去。

以上就是全部內(nèi)容

希望這些技巧中至少有一個能教你一些關(guān)于 Git 的新知識,Git 已經(jīng) 12 歲了,在這個持續(xù)創(chuàng)新,不斷添加新特性的項目里,你最喜歡哪個技巧?

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

    關(guān)注

    8

    文章

    668

    瀏覽量

    30196
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1250

    瀏覽量

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

    關(guān)注

    0

    文章

    204

    瀏覽量

    16139

原文標題:Git 12 歲了,為你送上 12 個 Git 的使用技巧!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    開發(fā)者必備的8 git 小技巧

    git 已經(jīng)成為了我日常必備工具之一,我總結(jié)我?guī)缀趺刻焓褂玫?有用(且簡潔)的小技巧。使用-p選擇性添加當你想提交內(nèi)容時,可以通過使用 git
    發(fā)表于 07-05 10:30

    Git工程實踐(一)巧用commit message

    摘要: 大家都知道所有的版本控制系統(tǒng)比如svn,git等設(shè)計的核心價值之一就是為了代碼變更有跡可循,而commit mesage的價值在于有跡可循的代碼對人類更加友好,通常一
    發(fā)表于 05-03 17:30

    使開發(fā)物聯(lián)網(wǎng)解決方案更加有效的方法是什么?

    本文介紹使開發(fā)物聯(lián)網(wǎng)解決方案更加有效的方法的6方法。
    發(fā)表于 05-20 06:10

    GIT入門簡潔版

    學習git,很好的入門資料,立馬上手就會
    發(fā)表于 12-09 16:12 ?0次下載

    物聯(lián)網(wǎng)設(shè)備如何變得更加強大

    有一種方法可以使物聯(lián)網(wǎng)設(shè)備變得更加強大,而無需額外的硬件支持。訣竅是將設(shè)備視為瘦客戶端并執(zhí)行后端處理。
    發(fā)表于 03-26 14:37 ?874次閱讀

    總結(jié)這賦予 UI 以個性的10方式,幫助UI設(shè)計變得更加有

    如果覺得的 UI 設(shè)計起來很無聊,想它看起來更加有趣,其實是有很多相對通用的方法。這些方法大都不算復雜,稍加調(diào)整,總會有不俗的效果。如果你想試試,不妨試試我所總結(jié)的這些賦予 UI
    的頭像 發(fā)表于 10-14 14:13 ?1994次閱讀

    通俗易懂的Git各指令的本質(zhì)

    ? 碰見版本回退就抓瞎?別問我怎么知道的,問就是:“我曾經(jīng)就是這樣啊~~”。 針對這些問題,今天我就將這幾年對Git的認知和理解分享出來,盡可能的從本質(zhì)去講解Git,幫助你一步一步去了解Git的底層原理,相信讀完本篇文章
    的頭像 發(fā)表于 06-24 18:06 ?1622次閱讀

    7實用的Git 小技巧

    這些有用的小技巧將改變在當前最流行的版本控制系統(tǒng)下的工作方式。 Git 是當前最流行最普遍的版本控制系統(tǒng)之一,它被應(yīng)用于私有系統(tǒng)和公開網(wǎng)站上各種各樣的開發(fā)工作。不論我變得對 Git
    的頭像 發(fā)表于 07-29 10:22 ?1491次閱讀

    利用Learn Git Branching輕松學習Git

    托管網(wǎng)站,與他人協(xié)作管理推進開源項目必須要掌握的工具。 而Git中的常用操作,雖然上手難度低,但涉及到細節(jié)處尤其是多分支操作,難免會很多新手犯糊涂,今天我就給大家推薦一開源項目,幫助使用者在輕松游戲的過程中熟練掌握
    的頭像 發(fā)表于 09-15 14:53 ?1901次閱讀

    12小細節(jié)普源示波器的使用更加的便捷(上)

    俗話說細節(jié)決定成敗,示波器作為電子測量的第一工具,雖然使用簡單,但并不是每個人都能注意到細節(jié)。運用好細節(jié),可以使的示波器使用更加的便捷。以下由安泰測試帶來普源示波器測量相關(guān)的12
    的頭像 發(fā)表于 10-12 16:03 ?1428次閱讀

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

    ? #前言 ??? git rebase命令經(jīng)常被認為是Git的巫術(shù),初學者應(yīng)該遠離它,但它實際上可以讓開發(fā)團隊在使用時更加輕松。今天,我們將git rebase與相關(guān)
    的頭像 發(fā)表于 05-26 16:22 ?1317次閱讀
    <b class='flag-5'>git</b> rebase與相關(guān)<b class='flag-5'>git</b> merge命令比較

    git的命令和參數(shù)

    。 給小伙伴們推薦學習git命令即好玩又有趣的神器網(wǎng)站 Learning Git Branching ,它學習git不再那么枯燥乏味,話
    的頭像 發(fā)表于 05-31 14:22 ?720次閱讀

    git rebase和git merge的區(qū)別

    合并到當前分支 他們的 「原理」 如下: 假設(shè)現(xiàn)在基于遠程分支"origin",創(chuàng)建一叫"mywork"的分支。 ? $?git?checkout?-b?mywork?origin ? 假設(shè)遠程分支
    的頭像 發(fā)表于 07-05 09:54 ?859次閱讀
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的區(qū)別

    初次運行Git前的配置

    在系統(tǒng)上安裝了 Git 后,會想要做幾件事定制Git 環(huán)境。每臺計算機上只需要配置一次,程序升級時會保留配置信息。
    的頭像 發(fā)表于 07-22 10:56 ?982次閱讀

    Git的工作原理和基本用法

    本文圖解Git中的最常用命令。如果稍微理解Git的工作原理,這篇文章能夠理解的更透徹。
    的頭像 發(fā)表于 08-07 10:25 ?852次閱讀
    <b class='flag-5'>Git</b>的工作原理和基本用法
    主站蜘蛛池模板: 国产伦子一区二区三区 | 日韩免费视频一区 | 色一情一乱一乱91av | 中文字幕一区二区三区四区五区人 | 制服丝袜在线一区 | 国产精品第一页在线观看 | 美国bj69| 日韩一区二区视频在线观看 | 小泽玛利亚厕所大喷水 | 精品国产乱码一区二区三区 | 天天干夜操 | 日本三级免费看 | 欧美精品网站 | 一级视频在线播放 | 天天躁日日躁成人字幕aⅴ 天天躁夜夜躁 | 欧美色视频日本片高清在线观看 | 高清一区二区 | 国产精品一区电影 | 亚洲va久久久噜噜噜久久天堂 | 免费大片黄在线观看 | 我被黑人巨大开嫩苞在线观看 | 四虎永久在线精品免费观看地址 | 国产午夜精品片一区二区三区 | 男人的天堂一区二区视频在线观看 | 亚洲日本一区二区 | 簧片免费视频 | 天堂最新版中文网 | 亚洲国产色婷婷精品综合在线观看 | 韩国男女无遮挡高清性视频 | 天天色天天舔 | 久久精品国产精品亚洲毛片 | 日日夜夜精品 | 一级毛片在线看在线播放 | 久久精品综合视频 | 奇米色婷婷 | 天天曰夜夜曰 | 玖玖爱这里只有精品 | 久久精品五月天 | 456主播喷水在线观看 | 日韩色天使综合色视频 | 成年视频在线观看 |