日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git基础指南

發布時間:2024/1/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git基础指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git基礎指南

@(OTHERS)[others, git]

  • git基礎指南
  • 一基本原理
    • 一概述
    • 二git文件的三種狀態
  • 二基本操作
    • 一取得項目的Git 倉庫
      • 1從當前目錄初始化
      • 從現有倉庫克隆
    • 二提交代碼
    • 三遠程倉庫
      • 1查看當前的遠程庫
      • 2添加遠程倉庫從遠程倉庫抓取數據
      • 3推送數據到遠程倉庫
      • 4查看遠程倉庫信息
      • 5遠程倉庫的刪除和重命名
    • 四查看提交歷史
  • 三常用操作
    • 一參與開源項目
    • 二gitlab項目
    • 三將現有代碼上傳
    • 三常用分支操作
      • 查看所有分支
      • 創建本地新的dev分支
      • 發布dev分支
      • 在dev分支開發代碼
      • 刪除分支
      • 6checkout某一個歷史版本

注:git有很完善的官方文檔,同時有中文版,但版本較舊。

一、基本原理

(一)概述

1、在分布式的版本控制系統中,諸如Git,Mercurial,Bazaar 還有Darcs 等,客戶端并不只提取最新版本的文件快照,而是把原始的代碼倉庫完整地鏡像下來。這么一來,任何一處協同工作用的服務器發生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

2、Git 并不保存這些前后變化的差異數據。實際上,Git 更像是把變化的文件作快照后,記錄在一個微型的文件系統中。每次提交更新時,它會縱覽一遍所有文件的指紋信息并對文件作一快照,然后保存一個指向這次快照的索引。為提高性能,若文件沒有變化,Git 不會再次保存,而只對上次保存的快照作一連接。

3、在Git 中的絕大多數操作都只需要訪問本地文件和資源,不用連網。但如果用CVCS 的話,差不多所有操作都需要連接網絡。因為Git 在本地磁盤上就保存著所有有關當前項目的歷史更新,所以處理起來速度飛快。

(二)git文件的三種狀態

對于任何一個文件,在Git 內都只有三種狀態:已修改(modified),已暫存(staged)和已提交(committed)。已修改表示修改了某個文件,但還沒有提交保存;已暫存表示把已修改的文件放在下次提交時要保存的清單中;已提交表示該文件已經被安全地保存在本地數據庫中了。
由此我們看到Git 管理項目時,文件流轉的三個工作區域:Git 的本地數據目錄,工作
目錄以及暫存區域。

每個項目都有一個git 目錄,它是Git 用來保存元數據和對象數據庫的地方。該目錄非
常重要,每次克隆鏡像倉庫的時候,實際拷貝的就是這個目錄里面的數據。
從項目中取出某個版本的所有文件和目錄,用以開始后續工作的叫做工作目錄。這些文件實際上都是從git 目錄中的壓縮對象數據庫中提取出來的,接下來就可以在工作目錄中對這些文件進行編輯。
所謂的暫存區域只不過是個簡單的文件,一般都放在git 目錄中。有時候人們會把這個
文件叫做索引文件,不過標準說法還是叫暫存區域。
基本的Git 工作流程如下所示:
1. 在工作目錄中修改某些文件。(git clone后修改文件)
2. 對這些修改了的文件作快照,并保存到暫存區域。(git add)
3. 提交更新,將保存在暫存區域的文件快照轉儲到git 目錄中。(git commit)

所以,我們可以從文件所處的位置來判斷狀態:如果是git 目錄中保存著的特定版本文
件,就屬于已提交狀態;如果作了修改并已放入暫存區域,就屬于已暫存狀態;如果自上次取出后,作了修改但還沒有放到暫存區域,就是已修改狀態。

二、基本操作

(一)取得項目的Git 倉庫

有兩種取得Git 項目倉庫的方法。第一種是在現存的目錄下,通過導入所有文件來創建
新的Git 倉庫。第二種是從已有的Git 倉庫克隆出一個新的鏡像倉庫來。

1、從當前目錄初始化

要對現有的某個項目開始用Git 管理,只需到此項目所在的目錄,執行:

$ git init

初始化后,在當前目錄下會出現一個名為.git 的目錄,所有Git 需要的數據和資源都
存放在這個目錄中。不過目前,僅僅是按照既有的結構框架初始化好了里邊所有的文件和目錄,但我們還沒有開始跟蹤管理項目中的任何一個文件。
如果當前目錄下有幾個文件想要納入版本控制,需要先用git add 命令告訴Git 開始對
這些文件進行跟蹤,然后提交:

$ git add *.c $ git add README $ git commit -m 'initial project version'

現在,你已經得到了一個實際維護著若干文件的Git 倉庫。

2 從現有倉庫克隆

如果想對某個開源項目出一份力,可以先把該項目的Git 倉庫復制一份出來,這就需要
用到git clone 命令。如果你熟悉其他的VCS 比如Subversion,你可能已經注意到這里
使用的是clone 而不是checkout。這是個非常重要的差別,Git 收取的是項目歷史的所有
數據(每一個文件的每一個版本),服務器上有的數據克隆之后本地也都有了。實際上,即便服務器的磁盤發生故障,用任何一個克隆出來的客戶端都可以重建服務器上的倉庫,回到當初克隆時的狀態。
克隆倉庫的命令格式為git clone [url]。比如,要克隆Ruby 語言的Git 代碼倉庫
Grit,可以用下面的命令:

$ git clone git://github.com/schacon/grit.git

這會在當前目錄下創建一個名為“grit” 的目錄,其中內含一個.git 的目錄,并從同
步后的倉庫中拉出所有的數據,取出最新版本的文件拷貝。如果進入這個新建的grit 目
錄,你會看到項目中的所有文件已經在里邊了,準備好后續的開發和使用。如果希望在克隆的時候,自己定義要新建的項目目錄名稱,可以在上面的命令最后指定:

$ git clone git://github.com/schacon/grit.git mygrit

唯一的差別就是,現在新建的目錄成了mygrit,其他的都和上邊的一樣。
Git 支持許多數據傳輸協議。之前的例子使用的是git:// 協議,不過你也可以用
http(s):// 或者user@server:/path.git 表示的SSH 傳輸協議。

(二)提交代碼

1、檢查當前狀態

git status

2、跟蹤新文件或者暫存文件

git add .

暫存這次更新,需要運行git add 命令(這是個多功能命令,根據目標文件的狀態不同,此命令的效果也不同:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用于合并時把有沖突的文件標記為已解決狀態等)。

3、忽略某些文件
創建.gitignore文件

4、查看差異

git diff

此命令比較的是工作目錄中當前文件和暫存區域快照之間的差異,也就是修改之后還沒有暫存起來的變化內容。
若要看已經暫存起來的文件和上次提交時的快照之間的差異,可以用

git diff --cached

命令。(Git 1.6.1 及更高版本還允許使用git diff –staged,效果是相同的,但更好記
些。)

5、提交

git commit -m "comment"

這個代碼就被提交到本地倉庫了。

6、刪除文件

git rm *.txt

(三)遠程倉庫

1、查看當前的遠程庫

git remote git remote -v

一般默認的遠程倉庫命名為origin,默認的分支名稱為master。

2、添加遠程倉庫&從遠程倉庫抓取數據

$ git remote origin $ git remote add pb git://github.com/paulboone/ticgit.git $ git remote -v $ git fetch pb

如果是克隆了一個倉庫,此命令會自動將遠程倉庫歸于origin 名下。所以,git fetch
origin 會抓取從你上次克隆以來別人上傳到此遠程倉庫中的所有更新(或是上次fetch 以
來別人提交的更新)。有一點很重要,需要記住,fetch 命令只是將遠端的數據拉到本地倉庫,并不自動合并到當前工作分支,只有當你確實準備好了,才能手工合并。
如果設置了某個分支用于跟蹤某個遠端倉庫的分支(參見下節及第三章的內容),可以使用git pull 命令自動抓取數據下來,然后將遠端分支自動合并到本地倉庫中當前分支。在日常工作中我們經常這么用,既快且好。實際上,默認情況下git clone 命令本質上就是自動創建了本地的master 分支用于跟蹤遠程倉庫中的master 分支(假設遠程倉庫確實有master 分支)。所以一般我們運行git pull,目的都是要從原始克隆的遠端倉庫中抓取數據后,合并到工作目錄中當前分支。

3、推送數據到遠程倉庫

項目進行到一個階段,要同別人分享目前的成果,可以將本地倉庫中的數據推送到遠程
倉庫。實現這個任務的命令很簡單: git push [remote-name] [branch-name]。如果要把本地的master 分支推送到origin 服務器上(再次說明下,克隆操作會自動使用默認的
master 和origin 名字),可以運行下面的命令:

$ git push origin master

4、查看遠程倉庫信息

我們可以通過命令git remote show [remote-name] 查看某個遠程倉庫的詳細信息,比
如要看所克隆的origin 倉庫,可以運行:

git remote show origin

5、遠程倉庫的刪除和重命名

$ git remote rename pb paul $ git remote rm paul

(四)查看提交歷史

1、git log可以查看基本的信息,如

$ git log commit 49d14429375bf9b4be29be603eaa22e6287ce1de Author: jinhong-lu <lu_Jin_hong@163.com> Date: Tue Oct 13 17:33:18 2015 +0800testcommit d79066da60cd1a6721acc0ea3336b4b8a84f85be Author: jinhong-lu <lu_Jin_hong@163.com> Date: Tue Oct 13 14:12:32 2015 +0800new

默認不用任何參數的話,git log 會按提交時間列出所有的更新,最近的更新排在最上
面。看到了嗎,每次更新都有一個SHA-1 校驗和、作者的名字和電子郵件地址、提交時
間,最后縮進一個段落顯示提交說明。
git log 有許多選項可以幫助你搜尋感興趣的提交,接下來我們介紹些最常用的。

2、git log –p -2

git log 有許多選項可以幫助你搜尋感興趣的提交,接下來我們介紹些最常用的。
我們常用-p 選項展開顯示每次提交的內容差異,用-2 則僅顯示最近的兩次更新.

在做代碼審查,或者要快速瀏覽其他協作者提交的更新都作了哪些改動時,就可以用這個選項。

3、git log –stat,僅顯示簡要的增改行數統計

4、指定log的格式

git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 11 months ago : changed the verison number 085bb3b - Scott Chacon, 11 months ago : removed unnecessary test code a11bef0 - Scott Chacon, 11 months ago : first commit

5、完整選項:

選項說明 -p 按補丁格式顯示每個更新之間的差異。 --stat 顯示每次更新的文件修改統計信息。 --shortstat 只顯示--stat 中最后的行數修改添加移除統計。 --name-only 僅在提交信息后顯示已修改的文件清單。 --name-status 顯示新增、修改、刪除的文件清單。 --abbrev-commit 僅顯示SHA-1 的前幾個字符,而非所有的40 個字符。 --relative-date 使用較短的相對時間顯示(比如,“2 weeks ago”)。 --graph 顯示ASCII 圖形表示的分支合并歷史。 --pretty 使用其他格式顯示歷史提交信息。可用的選項包括oneline,short,full,fuller 和format(后跟指定格式)。

詳見官方文檔。

三、常用操作

(一)參與開源項目

$git clone https://github.com/lujinhong/dao.git $vi pom.xml $git add . $git commit -m "change version" [master 8ed26de] change version1 file changed, 1 insertion(+), 1 deletion(-) $ git push origin master

(二)gitlab項目

1、在web頁面上創建一個項目并取得URL

2、git clone后操作如同上面

其實更好的辦法是使用IDE。

(三)將現有代碼上傳

git init git remote add origin ssh://git@192.168.1.1:22/ljhn1829/lujinhong.git git add . git commit -m 'new' git push origin master

或者也可以clone以后再將當前代碼add進來,然后push。

(三)常用分支操作

1. 查看所有分支

git branch --all # 默認只有master分支,所以會看到如下兩個分支 # master[本地主分支] origin/master[遠程主分支] # 新克隆下來的代碼默認master和origin/master是關聯的,也就是他們的代碼保持同步

2. 創建本地新的dev分支

git branch dev # 創建本地分支 git branch # 查看分支 # 這是會看到master和dev,而且master上會有一個星號 # 這個時候dev是一個本地分支,遠程倉庫不知道它的存在 # 本地分支可以不同步到遠程倉庫,我們可以在dev開發,然后merge到master,使用master同步代碼,當然也可以同步

3. 發布dev分支

發布dev分支指的是同步dev分支的代碼到遠程服務器

git push origin dev:dev # 這樣遠程倉庫也有一個dev分支了

4. 在dev分支開發代碼

git checkout dev # 切換到dev分支進行開發 # 開發代碼之后,我們有兩個選擇 # 第一個:如果功能開發完成了,可以合并主分支 git checkout master # 切換到主分支 git merge dev # 把dev分支的更改和master合并 git push # 提交主分支代碼遠程 git checkout dev # 切換到dev遠程分支 git push # 提交dev分支到遠程 # 第二個:如果功能沒有完成,可以直接推送 git push # 提交到dev遠程分支 # 注意:在分支切換之前最好先commit全部的改變,除非你真的知道自己在做什么

5. 刪除分支

git push origin :dev # 刪除遠程dev分支,危險命令哦 # 下面兩條是刪除本地分支 git checkout master # 切換到master分支 git branch -d dev # 刪除本地dev分支

6、checkout某一個歷史版本

git log git checkout -b redis2 a8e55ff906b3917dcd0125f497fa009f49b6c3b2

將a8e55ff906b3917dcd0125f497fa009f49b6c3b2這個歷史commit checkout到一個新的branch redis2。

總結

以上是生活随笔為你收集整理的git基础指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。