日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 嵌入式微處理器
[導(dǎo)讀]Git是程序員學(xué)習(xí)和工作都離不開發(fā)工具,今天和大家分享Git常用命令總結(jié)。


  • 前言
  • Git簡介
  • 實(shí)用主義
  • 深入探索
  • 總結(jié)
  • 參考資料

前言

?Git?是程序員學(xué)習(xí)和工作都離不開發(fā)工具,今天和大家分享?Git?常用命令總結(jié)。

Git簡介

Git?是一種分布式版本控制系統(tǒng),它可以不受網(wǎng)絡(luò)連接的限制,加上其它眾多優(yōu)點(diǎn),目前已經(jīng)成為程序開發(fā)人員做項(xiàng)目版本管理時(shí)的首選,非開發(fā)人員也可以用?Git?來做自己的文檔版本管理工具。

大概是大二的時(shí)候開始接觸和使用Git,從一開始的零接觸到現(xiàn)在的重度依賴,真是感嘆?Git?的強(qiáng)大。

Git?的api很多,但其實(shí)平時(shí)項(xiàng)目中90%的需求都只需要用到幾個(gè)基本的功能即可,所以本文將從?實(shí)用主義?和?深入探索?2個(gè)方面去談?wù)勅绾卧陧?xiàng)目中使用?Git,一般來說,看完?實(shí)用主義?這一節(jié)就可以開始在項(xiàng)目中動(dòng)手用。

說明:本文的操作都是基于 Mac 系統(tǒng)

實(shí)用主義

準(zhǔn)備階段

進(jìn)入 Git官網(wǎng) 下載合適你的安裝包,安裝好?Git?后,打開命令行工具,進(jìn)入工作文件夾(為了便于理解我們在系統(tǒng)桌面上演示),創(chuàng)建一個(gè)新的demo文件夾。

進(jìn)入 Github網(wǎng)站 注冊一個(gè)賬號并登錄,進(jìn)入 我的博客,點(diǎn)擊?Clone or download?,再點(diǎn)擊?Use HTTPS?,復(fù)制項(xiàng)目地址?https://github.com/gafish/gafish.github.com.git?備用。

再回到命令行工具,一切就緒,接下來進(jìn)入本文的重點(diǎn)。

常用操作

所謂實(shí)用主義,就是掌握了以下知識就可以玩轉(zhuǎn)?Git,輕松應(yīng)對90%以上的需求。以下是實(shí)用主義型的Git命令列表,先大致看一下

  • git clone
  • git config
  • git branch
  • git checkout
  • git status
  • git add
  • git commit
  • git push
  • git pull
  • git log
  • git tag

接下來,將通過對 我的博客 倉庫進(jìn)行實(shí)例操作,講解如何使用?Git?拉取代碼到提交代碼的整個(gè)流程。

git clone

從git服務(wù)器拉取代碼

git?clone?https://github.com/gafish/gafish.github.com.git

代碼下載完成后在當(dāng)前文件夾中會(huì)有一個(gè)?gafish.github.com?的目錄,通過?cd gafish.github.com?命令進(jìn)入目錄。

git config

配置開發(fā)者用戶名和郵箱

git?config?user.name?gafish
git?config?user.email?gafish@qqqq.com

每次代碼提交的時(shí)候都會(huì)生成一條提交記錄,其中會(huì)包含當(dāng)前配置的用戶名和郵箱。

git branch

創(chuàng)建、重命名、查看、刪除項(xiàng)目分支,通過?Git?做項(xiàng)目開發(fā)時(shí),一般都是在開發(fā)分支中進(jìn)行,開發(fā)完成后合并分支到主干。

git?branch?daily/0.0.0

創(chuàng)建一個(gè)名為?daily/0.0.0?的日常開發(fā)分支,分支名只要不包括特殊字符即可。

git?branch?-m?daily/0.0.0?daily/0.0.1

如果覺得之前的分支名不合適,可以為新建的分支重命名,重命名分支名為?daily/0.0.1

git?branch

通過不帶參數(shù)的branch命令可以查看當(dāng)前項(xiàng)目分支列表

git?branch?-d?daily/0.0.1

如果分支已經(jīng)完成使命則可以通過?-d?參數(shù)將分支刪除,這里為了繼續(xù)下一步操作,暫不執(zhí)行刪除操作

git checkout

切換分支

git?checkout?daily/0.0.1

切換到?daily/0.0.1?分支,后續(xù)的操作將在這個(gè)分支上進(jìn)行

git status

查看文件變動(dòng)狀態(tài)

通過任何你喜歡的編輯器對項(xiàng)目中的?README.md?文件做一些改動(dòng),保存。

git?status

通過?git status?命令可以看到文件當(dāng)前狀態(tài)?Changes not staged for commit:?(改動(dòng)文件未提交到暫存區(qū)

On branch daily/0.0.1
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")

git add

添加文件變動(dòng)到暫存區(qū)

git?add?README.md

通過指定文件名?README.md?可以將該文件添加到暫存區(qū),如果想添加所有文件可用?git add .?命令,這時(shí)候可通過?git status?看到文件當(dāng)前狀態(tài)?Changes to be committed:?(文件已提交到暫存區(qū)

On branch daily/0.0.1
Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: README.md

git commit

提交文件變動(dòng)到版本庫

git?commit?-m?'這里寫提交原因'

通過?-m?參數(shù)可直接在命令行里輸入提交描述文本

git push

將本地的代碼改動(dòng)推送到服務(wù)器

git?push?origin?daily/0.0.1

origin?指代的是當(dāng)前的git服務(wù)器地址,這行命令的意思是把?daily/0.0.1?分支推送到服務(wù)器,當(dāng)看到命令行返回如下字符表示推送成功了。

Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 267 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
To https://github.com/gafish/gafish.github.com.git
* [new branch] daily/0.0.1 -> daily/0.0.1

現(xiàn)在我們回到Github網(wǎng)站的項(xiàng)目首頁,點(diǎn)擊?Branch:master?下拉按鈕,就會(huì)看到剛才推送的?daily/00.1?分支了

git pull

將服務(wù)器上的最新代碼拉取到本地

git?pull?origin?daily/0.0.1

如果其它項(xiàng)目成員對項(xiàng)目做了改動(dòng)并推送到服務(wù)器,我們需要將最新的改動(dòng)更新到本地,這里我們來模擬一下這種情況。

進(jìn)入Github網(wǎng)站的項(xiàng)目首頁,再進(jìn)入?daily/0.0.1?分支,在線對?README.md?文件做一些修改并保存,然后在命令中執(zhí)行以上命令,它將把剛才在線修改的部分拉取到本地,用編輯器打開?README.md?,你會(huì)發(fā)現(xiàn)文件已經(jīng)跟線上的內(nèi)容同步了。

如果線上代碼做了變動(dòng),而你本地的代碼也有變動(dòng),拉取的代碼就有可能會(huì)跟你本地的改動(dòng)沖突,一般情況下?Git?會(huì)自動(dòng)處理這種沖突合并,但如果改動(dòng)的是同一行,那就需要手動(dòng)來合并代碼,編輯文件,保存最新的改動(dòng),再通過?git add .?和?git commit -m 'xxx'?來提交合并。

git log

查看版本提交記錄

git?log

通過以上命令,我們可以查看整個(gè)項(xiàng)目的版本提交記錄,它里面包含了提交人、日期、提交原因等信息,得到的結(jié)果如下:

commit?c334730f8dba5096c54c8ac04fdc2b31ede7107a
Author:?gafish?@qqqq.com>
Date:???Wed?Jan?11?09:44:13?2017?+0800
????Update?README.md
commit?ba6e3d21fcb1c87a718d2a73cdd11261eb672b2a
Author:?gafish?@qqqq.com>
Date:???Wed?Jan?11?09:31:33?2017?+0800
????test
.....

提交記錄可能會(huì)非常多,按?J?鍵往下翻,按?K?鍵往上翻,按?Q?鍵退出查看

git tag

為項(xiàng)目標(biāo)記里程碑

git?tag?publish/0.0.1
git?push?origin?publish/0.0.1

當(dāng)我們完成某個(gè)功能需求準(zhǔn)備發(fā)布上線時(shí),應(yīng)該將此次完整的項(xiàng)目代碼做個(gè)標(biāo)記,并將這個(gè)標(biāo)記好的版本發(fā)布到線上,這里我們以?publish/0.0.1?為標(biāo)記名并發(fā)布,當(dāng)看到命令行返回如下內(nèi)容則表示發(fā)布成功了

Total?0?(delta?0),?reused?0?(delta?0)
To?https://github.com/gafish/gafish.github.com.git
?*?[new?tag]?????????publish/0.0.1?->?publish/0.0.1

.gitignore

設(shè)置哪些內(nèi)容不需要推送到服務(wù)器,這是一個(gè)配置文件

touch?.gitignore

.gitignore?不是?Git?命令,而在項(xiàng)目中的一個(gè)文件,通過設(shè)置?.gitignore?的內(nèi)容告訴?Git?哪些文件應(yīng)該被忽略不需要推送到服務(wù)器,通過以上命令可以創(chuàng)建一個(gè)?.gitignore?文件,并在編輯器中打開文件,每一行代表一個(gè)要忽略的文件或目錄,如:

demo.html
build/

以上內(nèi)容的意思是?Git?將忽略?demo.html?文件 和?build/?目錄,這些內(nèi)容不會(huì)被推送到服務(wù)器上

小結(jié)

通過掌握以上這些基本命令就可以在項(xiàng)目中開始用起來了,如果追求實(shí)用,那關(guān)于?Git?的學(xué)習(xí)就可以到此結(jié)束了,偶爾遇到的問題也基本上通過?Google?也能找到答案,如果想深入探索?Git?的高階功能,那就繼續(xù)往下看?深入探索?部分。

深入探索

基本概念

工作區(qū)(Working Directory

就是你在電腦里能看到的目錄,比如上文中的?gafish.github.com?文件夾就是一個(gè)工作區(qū)

本地版本庫(Local Repository

工作區(qū)有一個(gè)隱藏目錄?.git,這個(gè)不算工作區(qū),而是?Git?的版本庫。

暫存區(qū)(stage

本地版本庫里存了很多東西,其中最重要的就是稱為?stage(或者叫index)的暫存區(qū),還有?Git?為我們自動(dòng)創(chuàng)建的第一個(gè)分支?master,以及指向?master?的一個(gè)指針叫?HEAD。

遠(yuǎn)程版本庫(Remote Repository

一般指的是?Git?服務(wù)器上所對應(yīng)的倉庫,本文的示例所在的github倉庫就是一個(gè)遠(yuǎn)程版本庫

以上概念之間的關(guān)系

工作區(qū)、暫存區(qū)、本地版本庫遠(yuǎn)程版本庫之間幾個(gè)常用的?Git?操作流程如下圖所示:

分支(Branch

分支是為了將修改記錄的整個(gè)流程分開存儲,讓分開的分支不受其它分支的影響,所以在同一個(gè)數(shù)據(jù)庫里可以同時(shí)進(jìn)行多個(gè)不同的修改

主分支(Master

前面提到過?master?是?Git?為我們自動(dòng)創(chuàng)建的第一個(gè)分支,也叫主分支,其它分支開發(fā)完成后都要合并到?master


標(biāo)簽(Tag

標(biāo)簽是用于標(biāo)記特定的點(diǎn)或提交的歷史,通常會(huì)用來標(biāo)記發(fā)布版本的名稱或版本號(如:publish/0.0.1),雖然標(biāo)簽看起來有點(diǎn)像分支,但打上標(biāo)簽的提交是固定的,不能隨意的改動(dòng),參見上圖中的1.0?/?2.0?/?3.0

HEAD

HEAD?指向的就是當(dāng)前分支的最新提交

以上概念了解的差不多,那就可以繼續(xù)往下看,下面將以具體的操作類型來講解?Git?的高階用法

操作文件

git add

添加文件到暫存區(qū)

git?add?-i

通過此命令將打開交互式子命令系統(tǒng),你將看到如下子命令

***Commands***
??1:?status??????2:?update??????3:?revert??????4:?add?untracked
??5:?patch??????6:?diff??????7:?quit??????8:?help

通過輸入序列號或首字母可以選擇相應(yīng)的功能,具體的功能解釋如下:

  • status:功能上和? git add -i?相似,沒什么鳥用
  • update:詳見下方? git add -u
  • revert:把已經(jīng)添加到暫存區(qū)的文件從暫存區(qū)剔除,其操作方式和? update?類似
  • add untracked:可以把新增的文件添加到暫存區(qū),其操作方式和? update?類似
  • patch:詳見下方? git add -p
  • diff:比較暫存區(qū)文件和本地版本庫的差異,其操作方式和? update?類似
  • quit:退出? git add -i?命令系統(tǒng)
  • help:查看幫助信息
git?add?-p

直接進(jìn)入交互命令中最有用的?patch?模式

這是交互命令中最有用的模式,其操作方式和?update?類似,選擇后?Git?會(huì)顯示這些文件的當(dāng)前內(nèi)容與本地版本庫中的差異,然后您可以自己決定是否添加這些修改到暫存區(qū),在命令行?Stage deletion [y,n,q,a,d,/,?]??后輸入?y,n,q,a,d,/,??其中一項(xiàng)選擇操作方式,具體功能解釋如下:

  • y:接受修改
  • n:忽略修改
  • q:退出當(dāng)前命令
  • a:添加修改
  • d:放棄修改
  • /:通過正則表達(dá)式匹配修改內(nèi)容
  • ?:查看幫助信息
git?add?-u

直接進(jìn)入交互命令中的?update?模式

它會(huì)先列出工作區(qū)?修改?或?刪除?的文件列表,新增?的文件不會(huì)被顯示,在命令行?Update>>?后輸入相應(yīng)的列表序列號表示選中該項(xiàng),回車?yán)^續(xù)選擇,如果已選好,直接回車回到命令主界面

git?add?--ignore-removal?.

添加工作區(qū)?修改?或?新增?的文件列表,?刪除?的文件不會(huì)被添加

git commit

把暫存區(qū)的文件提交到本地版本庫

git?commit?-m?'第一行提交原因'??-m?'第二行提交原因'

不打開編輯器,直接在命令行中輸入多行提交原因

git?commit?-am?'提交原因'

將工作區(qū)?修改?或?刪除?的文件提交到本地版本庫,?新增?的文件不會(huì)被提交

git?commit?--amend?-m?'提交原因'

修改最新一條提交記錄的提交原因

git?commit?-C?HEAD

將當(dāng)前文件改動(dòng)提交到?HEAD?或當(dāng)前分支的歷史ID

git mv

移動(dòng)或重命名文件、目錄

git?mv?a.md?b.md?-f

將?a.md?重命名為?b.md?,同時(shí)添加變動(dòng)到暫存區(qū),加?-f?參數(shù)可以強(qiáng)制重命名,相比用?mv a.md b.md?命令省去了?git add?操作

git rm

從工作區(qū)和暫存區(qū)移除文件

git?rm?b.md

從工作區(qū)和暫存區(qū)移除文件?b.md?,同時(shí)添加變動(dòng)到暫存區(qū),相比用?rm b.md?命令省去了?git add?操作

git?rm?src/?-r

允許從工作區(qū)和暫存區(qū)移除目錄

git status

git?status?-s

以簡短方式查看工作區(qū)和暫存區(qū)文件狀態(tài),示例如下:

 M demo.html
?? test.html
git?status?--ignored

查看工作區(qū)和暫存區(qū)文件狀態(tài),包括被忽略的文件

操作分支

git branch

查看、創(chuàng)建、刪除分支

git?branch?-a

查看本地版本庫和遠(yuǎn)程版本庫上的分支列表

git?branch?-r

查看遠(yuǎn)程版本庫上的分支列表,加上?-d?參數(shù)可以刪除遠(yuǎn)程版本庫上的分支

git?branch?-D

分支未提交到本地版本庫前強(qiáng)制刪除分支

git?branch?-vv

查看帶有最后提交id、最近提交原因等信息的本地版本庫分支列表

git merge

將其它分支合并到當(dāng)前分支

git?merge?--squash

將待合并分支上的?commit?合并成一個(gè)新的?commit?放入當(dāng)前分支,適用于待合并分支的提交記錄不需要保留的情況

git?merge?--no-ff

默認(rèn)情況下,Git?執(zhí)行"快進(jìn)式合并"(fast-farward merge),會(huì)直接將?Master?分支指向?Develop?分支,使用?--no-ff?參數(shù)后,會(huì)執(zhí)行正常合并,在?Master?分支上生成一個(gè)新節(jié)點(diǎn),保證版本演進(jìn)更清晰。

git?merge?--no-edit

在沒有沖突的情況下合并,不想手動(dòng)編輯提交原因,而是用?Git?自動(dòng)生成的類似?Merge branch 'test'?的文字直接提交

git checkout

切換分支

git?checkout?-b?daily/0.0.1

創(chuàng)建?daily/0.0.1?分支,同時(shí)切換到這個(gè)新創(chuàng)建的分支

git?checkout?HEAD?demo.html

從本地版本庫的?HEAD(也可以是提交ID、分支名、Tag名) 歷史中檢出?demo.html?覆蓋當(dāng)前工作區(qū)的文件,如果省略?HEAD?則是從暫存區(qū)檢出

git?checkout?--orphan?new_branch

這個(gè)命令會(huì)創(chuàng)建一個(gè)全新的,完全沒有歷史記錄的新分支,但當(dāng)前源分支上所有的最新文件都還在,真是強(qiáng)迫癥患者的福音,但這個(gè)新分支必須做一次?git commit?操作后才會(huì)真正成為一個(gè)新分支。

git?checkout?-p?other_branch

這個(gè)命令主要用來比較兩個(gè)分支間的差異內(nèi)容,并提供交互式的界面來選擇進(jìn)一步的操作,這個(gè)命令不僅可以比較兩個(gè)分支間的差異,還可以比較單個(gè)文件的差異。

git stash

在?Git?的棧中保存當(dāng)前修改或刪除的工作進(jìn)度,當(dāng)你在一個(gè)分支里做某項(xiàng)功能開發(fā)時(shí),接到通知把昨天已經(jīng)測試完沒問題的代碼發(fā)布到線上,但這時(shí)你已經(jīng)在這個(gè)分支里加入了其它未提交的代碼,這個(gè)時(shí)候就可以把這些未提交的代碼存到棧里。

git?stash

將未提交的文件保存到Git棧中

git?stash?list

查看棧中保存的列表

git?stash?show?stash@{0}

顯示棧中其中一條記錄

git?stash?drop?stash@{0}

移除棧中其中一條記錄

git?stash?pop

從Git棧中檢出最新保存的一條記錄,并將它從棧中移除

git?stash?apply?stash@{0}

從Git棧中檢出其中一條記錄,但不從棧中移除

git?stash?branch?new_banch

把當(dāng)前棧中最近一次記錄檢出并創(chuàng)建一個(gè)新分支

git?stash?clear

清空棧里的所有記錄

git?stash?create

為當(dāng)前修改或刪除的文件創(chuàng)建一個(gè)自定義的棧并返回一個(gè)ID,此時(shí)并未真正存儲到棧里

git?stash?store?xxxxxx

將?create?方法里返回的ID放到?store?后面,此時(shí)在棧里真正創(chuàng)建了一個(gè)記錄,但當(dāng)前修改或刪除的文件并未從工作區(qū)移除

$?git?stash?create
09eb9a97ad632d0825be1ece361936d1d0bdb5c7
$?git?stash?store?09eb9a97ad632d0825be1ece361936d1d0bdb5c7
$?git?stash?list
stash@{0}:?Created?via?"git?stash?store".

操作歷史

git log

顯示提交歷史記錄

git?log?-p

顯示帶提交差異對比的歷史記錄

git?log?demo.html

顯示?demo.html?文件的歷史記錄

git?log?--since="2?weeks?ago"

顯示2周前開始到現(xiàn)在的歷史記錄,其它時(shí)間可以類推

git?log?--before="2?weeks?ago"

顯示截止到2周前的歷史記錄,其它時(shí)間可以類推

git?log?-10

顯示最近10條歷史記錄

git?log?f5f630a..HEAD

顯示從提交ID?f5f630a?到?HEAD?之間的記錄,HEAD?可以為空或其它提交ID

git?log?--pretty=oneline

在一行中輸出簡短的歷史記錄

git?log?--pretty=format:"%h"

格式化輸出歷史記錄

Git?用各種?placeholder?來決定各種顯示內(nèi)容,我挑幾個(gè)常用的顯示如下:

  • %H: commit hash
  • %h: 縮短的commit hash
  • %T: tree hash
  • %t: 縮短的 tree hash
  • %P: parent hashes
  • %p: 縮短的 parent hashes
  • %an: 作者名字
  • %aN: mailmap的作者名
  • %ae: 作者郵箱
  • %ad: 日期 (--date= 制定的格式)
  • %ar: 日期, 相對格式(1 day ago)
  • %cn: 提交者名字
  • %ce: 提交者 email
  • %cd: 提交日期 (--date= 制定的格式)
  • %cr: 提交日期, 相對格式(1 day ago)
  • %d: ref名稱
  • %s: commit信息標(biāo)題
  • %b: commit信息內(nèi)容
  • %n: 換行

git cherry-pick

合并分支的一條或幾條提交記錄到當(dāng)前分支末梢

git?cherry-pick?170a305

合并提交ID?170a305?到當(dāng)前分支末梢

git reset

將當(dāng)前的分支重設(shè)(reset)到指定的??或者?HEAD

git?reset?--mixed?

--mixed?是不帶參數(shù)時(shí)的默認(rèn)參數(shù),它退回到某個(gè)版本,保留文件內(nèi)容,回退提交歷史

git?reset?--soft?

暫存區(qū)和工作區(qū)中的內(nèi)容不作任何改變,僅僅把?HEAD?指向?

git?reset?--hard?

自從??以來在工作區(qū)中的任何改變都被丟棄,并把?HEAD?指向?

git rebase

重新定義分支的版本庫狀態(tài)

git?rebase?branch_name

合并分支,這跟?merge?很像,但還是有本質(zhì)區(qū)別,看下圖:

合并過程中可能需要先解決沖突,然后執(zhí)行?git rebase --continue

git?rebase?-i?HEAD~~

打開文本編輯器,將看到從?HEAD?到?HEAD~~?的提交如下

pick 9a54fd4 添加commit的說明
pick 0d4a808 添加pull的說明
# Rebase 326fc9f..0d4a808 onto d286baa
#
# 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
#

將第一行的?pick?改成?Commands?中所列出來的命令,然后保存并退出,所對應(yīng)的修改將會(huì)生效。如果移動(dòng)提交記錄的順序,將改變歷史記錄中的排序。

git revert

撤銷某次操作,此次操作之前和之后的?commit?和?history?都會(huì)保留,并且把這次撤銷作為一次最新的提交

git?revert?HEAD

撤銷前一次提交操作

git?revert?HEAD?--no-edit

撤銷前一次提交操作,并以默認(rèn)的?Revert "xxx"?為提交原因

git?revert?-n?HEAD

需要撤銷多次操作的時(shí)候加?-n?參數(shù),這樣不會(huì)每次撤銷操作都提交,而是等所有撤銷都完成后一起提交

git diff

查看工作區(qū)、暫存區(qū)、本地版本庫之間的文件差異,用一張圖來解釋

git?diff?--stat

通過?--stat?參數(shù)可以查看變更統(tǒng)計(jì)數(shù)據(jù)

?test.md?|?1?-
?1?file?changed,?1?deletion(-)

git reflog

reflog?可以查看所有分支的所有操作記錄(包括commit和reset的操作、已經(jīng)被刪除的commit記錄,跟?git log?的區(qū)別在于它不能查看已經(jīng)刪除了的commit記錄

遠(yuǎn)程版本庫連接

如果在GitHub項(xiàng)目初始化之前,文件已經(jīng)存在于本地目錄中,那可以在本地初始化本地版本庫,再將本地版本庫跟遠(yuǎn)程版本庫連接起來

git init

在本地目錄內(nèi)部會(huì)生成.git文件夾

git remote

git?remote?-v

不帶參數(shù),列出已經(jīng)存在的遠(yuǎn)程分支,加上?-v?列出詳細(xì)信息,在每一個(gè)名字后面列出其遠(yuǎn)程url

git?remote?add?origin?https://github.com/gafish/gafish.github.com.git

添加一個(gè)新的遠(yuǎn)程倉庫,指定一個(gè)名字,以便引用后面帶的URL

git fetch

將遠(yuǎn)程版本庫的更新取回到本地版本庫

git?fetch?origin?daily/0.0.1

默認(rèn)情況下,git fetch?取回所有分支的更新。如果只想取回特定分支的更新,可以指定分支名。

問題排查

git blame

查看文件每行代碼塊的歷史信息

git?blame?-L?1,10?demo.html

截取?demo.html?文件1-10行歷史信息

git bisect

二分查找歷史記錄,排查BUG

git?bisect?start

開始二分查找

git?bisect?bad

標(biāo)記當(dāng)前二分提交ID為有問題的點(diǎn)

git?bisect?good

標(biāo)記當(dāng)前二分提交ID為沒問題的點(diǎn)

git?bisect?reset

查到有問題的提交ID后回到原分支

更多操作

git submodule

通過 Git 子模塊可以跟蹤外部版本庫,它允許在某一版本庫中再存儲另一版本庫,并且能夠保持2個(gè)版本庫完全獨(dú)立

git?submodule?add?https://github.com/gafish/demo.git?demo

將?demo?倉庫添加為子模塊

git?submodule?update?demo

更新子模塊?demo

git gc

運(yùn)行Git的垃圾回收功能,清理冗余的歷史快照

git archive

將加了tag的某個(gè)版本打包提取

git?archive?-v?--format=zip?v0.1?>?v0.1.zip

--format?表示打包的格式,如?zip-v?表示對應(yīng)的tag名,后面跟的是tag名,如?v0.1。

總結(jié)

本文只是對?Git?的所有功能中的部分實(shí)用功能做了一次探秘,Git非常強(qiáng)大,還有很多功能有待我們?nèi)グl(fā)現(xiàn),限于本文篇幅,咱就此打住吧,預(yù)知更多好用功能,請善用谷歌。


END


轉(zhuǎn)自:gafish
鏈接:https://github.com/gafish/gafish.github.com

版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。

推薦閱讀
呵,你會(huì)51單片機(jī)的精確延時(shí)嗎?
關(guān)于畫電路圖的10大分歧,你站哪邊?
早期MCU芯片是怎么加密的?


→點(diǎn)關(guān)注,不迷路←

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉