導航:首頁 > 程序命令 > git的fetch命令

git的fetch命令

發布時間:2022-10-24 21:25:58

『壹』 fetch是做什麼git

git fetch是將遠程倉庫的更新同步到本地倉庫,但並不執行合並操作,你確保沒問題可以合並後執行git merge合並操作
git pull = git fetch + git merge

『貳』 Git常用命令

1.1 配置環境

當安裝Git後首先要做的事情是設置用戶名稱和email地址。這是非常重要的,因為每次Git提交都會使用該用戶信息。該用戶信息和GitHub上注冊的遠程倉庫的相關信息沒有任何關系。

git config --global user.name "你的名字"

git config --global user.email "你的郵箱"

git config --list

配置信息保存在用戶目錄下的.giitconfig文件中

1.2 獲取Git倉庫

要使用Git對我們的代碼進行版本控制,首先需要獲得Git倉庫

獲取Git倉庫通常有兩種方式:

執行步驟如下:

1、在電腦的任意位置創建一個空目錄作為我們的本地Git倉庫

2、進入這個目錄中,點擊右鍵打開Git bash 窗口

3、執行命令git init

可以通過Git提供的命令從遠程倉庫進行克隆,將遠程倉庫克隆到本地的命令形式為:

git clone 遠程Git倉庫地址

1.3 工作目錄、暫存區以及版本庫概念

版本庫:.git隱藏文件就是版本庫,版本庫存儲了很多配置信息、日誌信息和文件版本信息等

工作目錄(工作區):包含.git文件夾的目錄就是工作目錄,主要用於存放開發的代碼

暫存區:.git文件夾中有很多文件,其中一個index文件就是暫存區,也可以叫做stage。暫存區是一個臨時保存修改文件的地方

1.4 Git工作目錄下文件的兩種狀態

Git工作目錄下的文件存在兩種狀態:

Unmodified 未修改狀態

Modified 已修改狀態

Staged 已暫存狀態

這些文件的狀態會隨著我們執行Git的命令發生變化

1.5 本地倉庫操作

git status 查看文件狀態

也可以使用git status -s使輸出信息更簡潔

git add 將未跟蹤的文件加入暫存區,將已經修改的文件加入暫存區也是通過這個命令

git reset 將暫存區文件取消暫存

git commit -m 「你的說明」 將暫存區文件提交到本地倉庫

git rm 刪除文件 說明:這種操作是直接將文件加入到暫存區裡面,直接提交到本地倉庫生效,而直接刪除的話沒有進入到暫存區,需要先把文件加入到暫存區之後,再提交到本地倉庫。

將文件添加至忽略列表

一般我們總會有些文件無需納入Git的管理,也不希望他們總出現在未跟蹤文件列表。通常這些都是自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。在這種情況下,我們可以在工作目錄中創建一個名為.gitnore的文件(文件名稱固定),列出忽略的文件模式。下面是一個示例:#代表注釋

由於windows無法創建不含文件名的文件,因此我們需要在bash窗口中用如下命令創建。

git log 查看日記記錄

1.6 遠程倉庫操作

如果想查看已經配置的遠程倉庫伺服器,可以運行git remote 命令。它會列出指定的每一個遠程伺服器的簡寫。如果已經克隆了遠程倉庫,那麼至少可以看見origin,這是Git克隆的倉庫伺服器的默認名字

git remote -v 可以查看對遠程倉庫詳細一點的說明

git remote show origin 可以查看對origin更詳細的遠程倉庫的說明

運行git remote add 添加一個遠程Git倉庫,同時指定一個可以引用的簡寫

如果你想獲得一份已經存在了的Git倉庫的拷貝,這時需要用到 git clone 命令。Git克隆的是Git倉庫伺服器上的幾乎所有數據(包括日誌信息、 歷史 記錄等),而不僅僅是復制工作所需要的文件。當你執行git clone 命令的時候,默認配置下Git倉庫中的每一個文件的每一個版本都將被拉取下來。

如果因為一些原因想要移除一個遠程倉庫,可以使用git remote rm

注意:此命令只是從本地移除遠程倉庫的記錄,並不會影響到遠程倉庫

git fetch 是從遠程倉庫獲取最新版本到本地倉庫,不會自動merge

說明:如果使用fetch命令,拉取的文件會放到版本庫裡面,不會自動整合到工作區,如果需要整合到工作區,需要使用 git merge 遠程倉庫別名/遠程倉庫分支

git pull 是從遠程倉庫獲取最新版本並merge到本地倉庫

注意:如果本地倉庫不是從遠程倉庫克隆,而是本地創建的倉庫,並且倉庫中存在文件,此時再從遠程倉庫中拉取文件的時候會報錯(fatal:refusing to merge unrelated histories),解決此我呢提可以在git pull 命令後加入參數 --allow-unrelated-histories

git push

1.7 Git分支

幾乎所有的版本控制系統都是以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。Git的master是一個特殊分支。它跟其它分支沒有區別。之所以每一個倉庫都有mater分支,是因為git init默認創建它,並且大多數人都懶得去改動它。

# 列出所有本地分支

$ git branch

#列出所有遠程分支

$ git branch -r

#列出所有本地分支和遠程分支

$git branch -a

git branch 分支名稱

git checkout 分支名稱

git push 遠程倉庫別名 遠程倉庫分支

git merge 分支名稱 說明:在當前分支下合並其他分支

注意:如果兩個分支存在同樣的文件名且同行的內容不一樣,那麼會產生矛盾,需要自己手動修改產生矛盾後的文件,然後添加到暫存區然後提交。

git branch -d 分支名稱

如果要刪除的分支中進行了一些開發動作,此時執行上面的刪除命令並不會刪除分支,可以將命令中的-d參數改為-D

如果要刪除遠程倉庫中的分支,可以使用命令git push origin -d branchName

1.8 Git標簽

像其他版本控制系統一樣,Git可以給 歷史 中的某一給提交打上標簽,以示重要。比較有代表性的是人們會使用這個功能來標記發布結點(v1.0、v1.2等)。標簽指的是某個分支某個特定時間點的狀態。通過標簽,可以很方便地切換到標記時的狀態。

#新建一個tag

$ git tag [tagName]

$ git tag

#新建一個分支,指向某個tag

$ git checkout -b [branch] [tag]

#刪除本地tag

$git tag -d[tag]

#刪除遠程tag

$git push origin :refs/tags/[tag]

『叄』 Git fetch和git pull的區別

Git fetch和git pull區別為:遠端跟蹤分支不同、拉取不同、commitID不同。

一、遠端跟蹤分支不同

1、Git fetch:Git fetch能夠直接更改遠端跟蹤分支。

2、git pull:git pull無法直接對遠程跟蹤分支操作,我們必須先切回本地分支然後創建一個新的commit提交。

二、拉取不同

1、Git fetch:Git fetch會將數據拉取到本地倉庫 - 它並不會自動合並或修改當前的工作。

2、git pull:git pull是從遠程獲取最新版本並merge到本地,會自動合並或修改當前的工作。

三、commitID不同

1、Git fetch:使用Gitfetch更新代碼,本地的庫中master的commitID不變,還是等於1。

2、git pull:使用git pull更新代碼,本地的庫中master的commitID發生改變,變成了2。

『肆』 怎麼把 git fetch

而理解 fetch 的關鍵, 是理解 FETCH_HEAD.
這里需要解釋下什麼是FETCH_HEAD??

FETCH_HEAD指的是: 某個branch在伺服器上的最新狀態'.
每一個執行過fetch操作的項目'都會存在一個FETCH_HEAD列表,
這個列表保存在 .git/FETCH_HEAD 文件中, 其中每一行對應於遠程伺服器的一個分支.
當前分支指向的FETCH_HEAD, 就是這個文件第一行對應的那個分支.

一般來說, 存在兩種情況:

如果沒有顯式的指定遠程分支, 則遠程分支的master將作為默認的FETCH_HEAD.

如果指定了遠程分支, 就將這個遠程分支作為FETCH_HEAD.

常見的git fetch 使用方式包含以下四種:

git fetch

這一步其實是執行了兩個關鍵操作:
- 創建並更新所有遠程分支的本地遠程分支.
- 設定當前分支的FETCH_HEAD為遠程伺服器的master分支 (上面說的第一種情況)

需要注意的是: 和push不同, fetch會自動獲取遠程`新加入'的分支.

git fetch origin

同上, 只不過手動指定了remote.

git fetch origin branch1

設定當前分支的 FETCH_HEAD' 為遠程伺服器的branch1分支`.

注意: 在這種情況下, 不會在本地創建本地遠程分支, 這是因為:

這個操作是git pull origin branch1的第一步, 而對應的pull操作,並不會在本地創建新的branch.

一個附加效果是:

這個命令可以用來測試遠程主機的遠程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 拋出一個異常.

git fetch origin branch1:branch2

只要明白了上面的含義, 這個就很簡單了,

首先執行上面的fetch操作

使用遠程branch1分支在本地創建branch2(但不會切換到該分支),
如果本地不存在branch2分支, 則會自動創建一個新的branch2分支,
如果本地存在branch2分支, 並且是`fast forward', 則自動合並兩個分支, 否則, 會阻止以上操作.

git fetch origin :branch2

等價於: git fetch origin master:branch2

『伍』 怎麼把 git fetch

而理解fetch的關鍵, 是理解FETCH_HEAD.

這里需要解釋下什麼是FETCH_HEAD??

FETCH_HEAD指的是:某個branch在伺服器上的最新狀態'.
每一個執行過fetch操作的項目'都會存在一個FETCH_HEAD列表,
這個列表保存在.git/FETCH_HEAD文件中, 其中每一行對應於遠程伺服器的一個分支.
當前分支指向的FETCH_HEAD, 就是這個文件第一行對應的那個分支.

一般來說, 存在兩種情況:

『陸』 git中fetch和pull的區別

Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:
1. git
fetch:相當於是從遠程獲取最新版本到本地,不會自動merge

git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含義:
首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
然後比較本地的master分支和origin/master分支的差別
最後進行合並
上述過程其實可以用以下更清晰的方式來進行:

git fetch origin master:tmp
git diff tmp
git merge tmp
從遠程獲取最新的版本到本地的test分支上
之後再進行比較合並
2. git
pull:相當於是從遠程獲取最新版本並merge到本地

git pull origin master
上述命令其實相當於git fetch 和 git merge
在實際使用中,git fetch更安全一些
因為在merge前,我們可以查看更新情況,然後再決定是否合並

閱讀全文

與git的fetch命令相關的資料

熱點內容
android平滑滾動效果 瀏覽:841
什麼是編譯器指令 瀏覽:219
微控制器邏輯命令使用什麼匯流排 瀏覽:885
程序員在學校里是學什麼的 瀏覽:601
oraclejava數據類型 瀏覽:890
程序員考注冊會計師 瀏覽:957
怎麼使用access的命令按鈕 瀏覽:899
有點錢app在哪裡下載 瀏覽:832
博途v15解壓後無法安裝 瀏覽:205
什麼是根伺服器主機 瀏覽:438
安卓手游怎麼申請退款 瀏覽:555
安卓系統如何分享網頁 瀏覽:278
ad如何編譯pcb工程 瀏覽:414
除了滴滴app哪裡還能用滴滴 瀏覽:399
截圖怎麼保存文件夾然後壓縮 瀏覽:8
幻影伺服器怎麼樣 瀏覽:28
具體哪些廣東公司招程序員 瀏覽:871
嵌入式編譯器教程 瀏覽:307
ssl數據加密傳輸 瀏覽:87
51單片機定時器方式2 瀏覽:332