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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

git init 会不会清空_Git命令:git pull amp; git fetch

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git init 会不会清空_Git命令:git pull amp; git fetch 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本地倉庫需要獲取遠程倉庫中的更新,需要用到Git命令pull或fetch,這兩個命令在實際使用時有何區別,下面詳細介紹下。

使用工具

  • Git v2.29.2.2
  • TortoiseGit v2.4.0.2

pull 和 fetch 區別

git分為本地倉庫和遠程倉庫,本地的git文件夾中存儲了本地倉庫分支的commit ID和跟蹤的遠程倉庫分支的commit ID

  • .git/refs/head/[本地分支]
  • .git/refs/remotes/[跟蹤的分支]

兩個命令的區別如下:

  • git fetch 只更新跟蹤的遠程倉庫分支commit ID,本地倉庫分支的commit ID保持不變,需要合并(merge)跟蹤的遠程倉庫中的更新到本地倉庫;
  • git pull 更新所有倉庫的commit ID;

git pull = git fetch + git merge ?下面實際測試驗證這個等式是否成立。

測試用例

兩個本地倉庫GitTest-1和GitTest-2,兩個本地倉庫對同一文件進行修改,GitTest-1提交修改并推送到遠程倉庫中,GitTest-2需要獲取遠程倉庫中的更新,并且解決文件更新沖突

pull測試

  1. GitTest-1更改文件change2.txt提交并推送,GitTest-2更改文件change2.txt

2. GitTest-2拉取(git pull)遠程更新,得到以下錯誤

3. GitTest-2根據提示儲藏本地修改(stash save),本地的全部改動保存到臨時倉庫,并撤銷了本地的所有改動
4. GitTest-2再次拉取遠程更新,因為本地修改已保存,不會報錯,這個時候GitTest-2的本地倉庫與遠程倉庫的代碼保持一致,而臨時倉庫中的改動還需要更新,因此操作還要繼續

5. GitTest-2合并臨時倉庫中的本地修改(stash pop/apply)到本地倉庫,檢查臨時倉庫和本地倉庫是否有沖突,提示沖突然后手動解決,兩個合并命令的區別如下:

    • stash pop 會清空stash list
    • stash apply 不會清空stask list

6. GitTest-2提交并推送本地修改,至此兩個本地倉庫代碼與遠程倉庫保持一致

fetch測試

  1. 與之前一致,首先GitTest-1更改文件change2.txt提交并推送,GitTest-2更改文件change2.txt

2. GitTest-2 fetch遠程更新,更新了跟蹤的遠程倉庫(origin/master),本地倉庫(master)未更新

3. GitTest-2合并本地倉庫的修改到跟蹤的遠程倉庫(git merge FETCH_HEAD)

4. GitTest-2提交并推送更新到遠程倉庫

測試總結

從結果上來看,git pull = git fetch + git merge是成立的,不過過程卻不同,尤其是本地倉庫的更新方式。

總結

以上是生活随笔為你收集整理的git init 会不会清空_Git命令:git pull amp; git fetch的全部內容,希望文章能夠幫你解決所遇到的問題。

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