git我的學習筆記

git我的學習筆記

git是什麼

git版本控制庫,協同開發工具
最近迷上看官網文檔,由於實在如今的博客大多都只是講本身學習到的只知其一;不知其二,大可能是湊字數的口水文,並且一部分仍是挖了坑等你去跳,做爲小白實在是看不下去了,從入門到放棄,因此本身整理了一些關於git的基本知識和操做。git

自從上次在博客中跳入坑後從官網上找到答案,就不想再去看那些口水文了,迷上了去官網尋找答案,雖然是英文,可是,一點也不慫(裝的!),趁着最近學習git操做,因此也研究一下git的官方操做詳解工具

首先,瞭解一下git的結構,git做爲一個版本控制庫,結構主要分爲三個部分。學習

clipboard.png
這三個部分通常被人稱爲:工做區、暫存區、倉庫
通常建立完倉庫後會生成.git文件夾,主要存放版本信息、更新記錄、HEAD等信息,主要上要結構以下圖所示開發工具

clipboard.png

命令詳解

接下來看一下官網給的常規操做幫助 git --helpfetch

clipboard.png
其實對於有經驗的人來講,這些命令給得已經挺詳細的了,若是可以看得懂這些命令,git的基礎操做基礎是沒問題的,更可能是隻是平時操做方式的一個積累。
全部經常使用的命令都在這裏
分紅了五個部分
start a working area(建立一個工做區)
work on the current change(操做當前的變化)
examine the history and state(檢查歷史和狀態)
grow mark and tweak your common history(增加標記和調整共同歷史)
collaborate(協做)spa

clone   克隆一個倉庫到一個新的目錄
init   建立一個空的倉庫或從新初始化一個已存在的倉庫翻譯

add   將工做區(working tree)的文件內存添加到暫存區(index)
mv   移動或重命名
reset   重置當前HEAD到一個特定的狀態/版本
rm   從工做區或暫存區刪除文件版本控制

bisect   使用二分查找法查找介紹bug的提交
grep   打印匹配模式的行
log   顯示提交日誌
show   顯示各類類型的對象
status   顯示工做區的狀態日誌

branch   羅列、建立或刪除分支
checkout   切分分支或恢復工做區的文件
commit   記錄修改到倉庫
diff   顯示不一樣提交之間,提交跟工做區之間的修改
merge   合併兩個或多個開發版本
rebase   把一個分支的修改合併到當前分支(這一名不知道怎麼翻譯~~)
tag   建立、羅列、刪除或驗證GPG簽名的標籤對象code

fetch   從另外一個倉庫(遠程倉庫)下載文件對象和引用
pull   從另外一個倉庫或本地分支fetch並整合(至關於fetch+merge)
push   沿關聯對象更新遠程文件

能夠了,先寫這麼點
週末再更新


分割線·····························································································
週五晚,利用的時間再寫一點

上面已經列出了git的所有基本命令,其實一點都不復雜,學用的那些操做也就幾個:
add   commit   chekcout   merge   branch   remote   clone   status   log   fetch   pull   push
差很少就這些吧,不用被嚇到,其實每一個命令都是固定的操做套路。

學一個命令
只須要會用它的-help跟能有點英語基礎就行了~

好比add
經過 git add -h

clipboard.png


2019年5月29日0:1:34
閒着沒事,忽然想到了這個總結只寫了一半-.-! 趁如今有點時間就再整理一下。
接下來分別針對一些經常使用的命令進行總結,主要寫命令的常見操做。

init

git init 命令其實算是用得比較少的一個命令,主要用來建立git倉庫,通常建立完倉庫就不須要用到了,這裏咱們經過git init -help看一下它的命令幫助

clipboard.png

init 最經常使用的用法無非是如下兩種方式。

git init 
git init --bare (建立空的倉庫)初始化完成後便會在當前目錄生成一個.git文件夾,即版本控制庫

--template <template-directory>表示以一個模板來建立倉庫
-q 是靜默模式

add

咱們建立完版本控制庫後,就能夠開始在工做區上開發,平時咱們添加代碼、修改代碼和刪除代碼就是在工做區中進行的。咱們前面說過了,git版本控制庫主要由三個結構組成:working/index/rep,index區保存工做區內容的快照,並將此快照做爲下一次提交的內容,所以在對工做目錄進行任務更改以後,在進行commit命令提交到rep以前,須要執行add命令將任何新的或修改的文件添加到index中,add命令作的事情就是將咱們當前工做區working所作的修改添加到暫存區index中。

clipboard.png

參數詳解

-n 排練,只是模擬操做,不真正提交到暫存區。
-v 操做時打印詳細日誌
-i 這個是交互模式選擇內容添加到索引,這個交互模式挺方便的,後面單獨講。
-p 這個一樣是經過交互模式挑選補丁,並添加到索引。使用戶有機會在將修改後的內容添加到索引以前查看差別。這裏是直接跳過-i的命令選擇界面直接進行patch命令。
-e 直接編輯並應用到索引 ,這個沒用過。
-f 強制,容許添加.ignored文件上忽略的文件
-u 更新索引,只容許應用跟蹤文件的更改,不能添加新的文件到索引
-N 只添加路徑,但不更新內容
-A 全部
--refresh 不添加,只刷新索引的狀態信息
--ignore-removal 添加當前工做區到索引,但不添加移除
--ignore-errors 跳過添加錯誤的文件

基本操做

一、git add -A 添加當前工做區全部修改到索引,主要平時工做中不推薦直接執行這個操做,由於工做區相對來講修改頻繁,而且會比較混亂,若是執行這個操做,那麼可能會將一些不應添加的文件添加到索引中.
二、git add -i 交互模式挑選修改到索引,使用這個模式來添加索引時很是方便,能夠自由選擇修改到索引,能夠選擇update(更新),revert(還原),add untracked(添加未跟蹤文件),patch(補丁),diff(查看索引與工做區不一樣)等

clipboard.png

選擇2直接進入update命令,挑選要工做區的修改應用到索引的修改

clipboard.png

挑選完成後,選項前面會有個*標識,直接enter便可以回到上一個命令選擇界面。

commit

上一個操做add所完成的任務就是將工做區的修改添加到索引inde中,而當前所要介紹的commit就是將索引提交到本地倉庫rep中。

clipboard.png

相較於其餘命令來講,commit的可選選項比較多,但其實一部分選項都是與其餘命令重複的,並且經常使用的也就那麼幾個,這裏重點講一些前面沒有解釋過的。

參數詳解

-C (主意是大寫C) 這裏主要複用指定的commit提交信息,包含評論,做者,日期
用法是 git commit -C <commitId>(commitId爲以前提供過的commit的id)
-c (小寫c)這個選擇跟-C類似,但不一樣的是它能夠在指定的commit的提交信息基礎上從新編輯提交信息。
--reset-author 修改提交信息的做者,能夠與-C、-c、--amend一塊兒使用
-i 添加指定文件的修改到索引,這個說白了執行的就是git add xxxfile
--interactive 這個東西是互動模式,跟git add -i是同樣的
-o 只將指定路徑的文件提交到暫存區,忽略暫存區中其餘路徑暫存的內容。
-n 繞過提交前的勾子
--short 只顯示不多的信息
--branch 顯示當前分支的信息
--amend 從新提交上一次的提交,至關於取消上一次的提交,而後再從新提交一遍,這個命令很是好用,通常用在提交後發現有些修改未提交、或是提交後發現代碼有誤但不想再開啓另外一個commit的狀況下使用。

經常使用命令

git commit -m "msg"    提交commit,comment爲msg
git commit --amend "msg"    從新提交先前的一次提交。

reset

reset 即重置的意思,使用這個命令能夠重置工做區、索引以及HEAD

clipboard.png

命令詳解

--soft 重置HEAD ,git commit提交成功,HEAD的指向會從新定位到最新的提交上,這裏主要用於撤銷前n個提交,並將head重置回以前的某個提交上,命令格式爲 git reset --soft HEAD^ ^的個數表示前幾個提交,也可使用另外一個格式 git reset --sort HEAD~n(n表示前n個提交)
eg:撤銷前兩個提交 git reset --soft HEAD^^git reset --soft HEAD~2
--hard 重置整個倉庫,這裏會將工做區、索引、HEAD所有重置到上次n次提交的狀態,用法同上
--mixed 重置索引、HEAD
--keep 重置HEAD,若是索引和上次提交之間不一樣的文件具備本地修改,那麼將不會執行。
-p 重置補丁所做的修改,這與git add -p 是相反的操做

經常使用命令

git reset --soft
git reset --mixed
git reset --hard

branch

git 分支,通常來講項目不可能只有只一個分支,都是多個分支同時維護來應用項目的不一樣版本,branch主要用來完成建立分支、切換分支等操做

clipboard.png

命令詳解

-t 建立出一條跟蹤當前分支的新分支,這個命令與git checkout --track xxx 相同效果
--set-upstream 目前是deprecated,更換爲-u,效果同上
-r 列出遠程分支
--contains 列出包含某個commit的全部分支
-d 刪除
-D -d的升級版,強制force
-m 移動或重命名一個分支(-M是升級版,自帶--force)
--list 列出分支
--merged
--column
--sort
--points-at


未完待續

相關文章
相關標籤/搜索