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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第二章作业第2题--苏志华

發布時間:2024/4/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章作业第2题--苏志华 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.每人自己建立一個HelloWorld項目,練習使用git的add/commit/push

/pull/fetch/clone等基本命令。比較項目的新舊版本的差別。

(1)創建版本庫:

? ? ?首先在本地電腦新建HelloWorld文件夾,而后打開Git Bash,通過git init命令把這個目錄變成Git可以管理的倉庫:

而后編輯HelloWorld.c文件

(2)設置用戶名、郵箱,添加、提交及查看狀態、日志

a. 設置用戶名和郵箱

b. 將HelloWorld.c添加至暫存區,再提交到本地倉庫

c 查看狀態、日志

git log顯示從最近到最遠的提交日志,其中commit id為版本號,可使用git reset --hard commit id實現版本回退

(3)在github上建立遠程倉庫并添加SSH KEY

建立遠程倉庫

生成SSH KEY

這里要特別注意的是其中郵箱是你github賬號注冊的郵箱,要不然無法將本地倉庫和本地倉庫關聯起來,出現類似下圖的錯誤

?在github上添加SSH KEY

?(4)關聯倉庫并將本地倉庫上傳到遠程倉庫

這時我們查看github上的對應倉庫,會發現已然同步。

由于遠程庫是空的,因而第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令

?(5)從遠程庫fetch、pull、clone

為了便于比較fetch和pull的區別,首先將本地的工作空間中HelloWorld.c文件修改如下并提交至本地倉庫

通過git log可查看具體提交情況

a、使用git fetch從遠程獲取最新版本到本地

這里git branch -a是顯示所有分支情況(可看出目前分支位于master),而git branch -r是只顯示遠程分支

下圖中使用git diff命令查看不同分支的情況,兩者有差異,說明git fetch不會自動merge,那么我想merge該如何呢?

使用git merge命令,即合并分支,按照預想的應該是兩分支有沖突,合并的時候會出現錯誤,然后得先解決沖突才能合并,可會出現下面的情況

what???ㄟ(▔︹▔ㄟ) (╯▔︹▔)╯

Already up-to-date 說明已經合并了啊,可是切換到對應的分支,分別查看HelloWorld.c的內容仍然是不一樣,這是為什么呢?

這里推薦一個gitk的命令,它可將分支情況很好的可視化以及歷史信息顯示出來,

舉一個例子來更好地說明這種情況,假設在branch1分支上提交歷史如下

然后建立一個新的分支branch2,繼續提交四次:

此時branch1的頭指針指向D,branch2的頭指針指向H。"Already up-to-date"說明你想要合并的分支已然成為你現在分支的parent,這里D便是H的parent

那么將branch1分支合并到branch2是不管用的,因為branch2并沒有發生改變,要想合并就需要將branch1的指針提交歷史變成

即使用git reset --hard H強制變成branch1分支的指針指向H?

回到問題中,remotes/origin/master顯然是master的parent,因此無法將其合并到master分支中。

下圖中git fetch origin master:temp 這句命令的意思是:將遠程origin倉庫的master分支下載到本地并新建一個分支temp

顯然這種情況是可以將master分支合并到temp分支上

b、git pull命令的作用是,取回遠程主機某個分支的更新,再與本地的指定分支合并。

git pull <遠程主機名> <遠程分支名>:<本地分支名>

比如,取回origin主機的master分支,與本地的master分支合并,需要寫成下面這樣。

git pull origin master:master

如果遠程分支是與當前分支合并,則冒號后面的部分可以省略。

git pull origin master

上面命令表示,取回origin/master分支,再與當前分支合并。實質上,這等同于先做git fetch,再做git merge。

c、可使用git clone將遠程庫克隆到本地倉庫

d、在遠程倉庫新建一文件,而后git fetch、git clone

新建test.txt文件

?

git merge

git pull

(6)總結:

? ? ? 整個過程中我們可以看出git作為分布式系統的強大之處,而遠程倉庫和本地倉庫既相互獨立而又緊密相連,分支的存在使得工作能夠分工而有條理地進行。由上我們也可以得知,"git fetch"命令執行完畢之后,還不會立即將下載的文件合并到當前工作目錄里,要是想將從遠程分支下載的文件更新到工作目錄里,需要執行一個合并("git merge")操作。"git pull"的問題是它把過程的細節都隱藏了起來而是自動合并,這樣導致本地工作目錄在未經確認的情況下就會被遠程分支更新,一旦代碼有問題,很難找到錯誤的地方,因而建議使用git fetch+git merge。

轉載于:https://www.cnblogs.com/bywb/p/5873611.html

總結

以上是生活随笔為你收集整理的第二章作业第2题--苏志华的全部內容,希望文章能夠幫你解決所遇到的問題。

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