首頁 >開發工具 >Git >Git遠端倉庫(Github)知識點總結

Git遠端倉庫(Github)知識點總結

WBOY
WBOY轉載
2022-05-10 18:23:363112瀏覽

這篇文章為大家帶來關於Git的相關知識,其中主要介紹了關於遠端倉庫的相關內容,Git並不像SVN那樣有個中心伺服器,下面看一下使用了Github作為遠端倉庫的一些問題,希望對大家有幫助。

Git遠端倉庫(Github)知識點總結

推薦學習:《Git學習教學

Git 遠端倉庫(Github)

Git 不像SVN 那樣有個中心伺服器。

目前我們使用到的 Git 指令都是在本地執行,如果你想透過 Git 分享你的程式碼或與其他開發人員合作。你就需要將資料放到一台其他開發人員能夠連線的伺服器上。

本範例使用了 Github 作為遠端倉庫,你可以先閱讀我們的 Github 簡明教學。

Git遠端倉庫(Github)知識點總結
遠端倉庫指令
1、 查看目前的遠端庫
Git遠端倉庫(Github)知識點總結
2、新增遠端倉庫
執行git remote add 新增一個新的遠端Git 倉庫, 同時指定一個方便使用的簡寫:
Git遠端倉庫(Github)知識點總結
3、$ git fetch
這個指令會存取遠端倉庫,從中拉取所有你還沒有的資料。執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視。
Git遠端倉庫(Github)知識點總結

origin下所有分支都被複製
Git遠端倉庫(Github)知識點總結
git fetch 指令只會將資料下載到你的本機倉庫-它並不會自動合併或修改你目前的工作。當準備好時你必須手動將其合併入你的工作中。
git pull 指令來自動抓取後合併該遠端分支到目前分支
預設情況下,git clone 指令會自動設定本機master 分支追蹤複製的遠端倉庫的master 分支(或其它名字的預設分支) 。執行 git pull 通常會從最初複製的伺服器上抓取資料並自動嘗試合併到目前所在的分支。
3、git push 推送到遠端倉庫
Git遠端倉庫(Github)知識點總結
只有當你有所克隆伺服器的寫入權限,並且之前沒有人推送過時,這條命令才能生效。當你和其他人在同一時間克隆,他們先推送到上游然後你再推送到上游,你的推送就會毫無疑問地被拒絕。你必須先抓取他們的工作並將其合併進你的工作後才能推送。
4、查看某個遠端倉庫
如果想要查看某一個遠端倉庫的更多信息,可以使用 git remote show 指令。
Git遠端倉庫(Github)知識點總結
5、遠端倉庫的重新命名
git remote rename 來修改一個遠端倉庫的簡寫名稱Git遠端倉庫(Github)知識點總結
6、遠端倉庫的移除
git remote remove 或git remote rm
Git遠端倉庫(Github)知識點總結
7、打標籤:可以給倉庫歷史中的某一個提交打上標籤,以示重要。比較有代表性的是人們會使用這個功能來標記發布結點
1)列出標籤
Git遠端倉庫(Github)知識點總結
# 2)git tag -l/list 通配符方式列出標籤
Git遠端倉庫(Github)知識點總結
3)輕量標籤(lightweight):它只是某個特定提交的引用,本質上將提交校驗和儲存到一個檔案中-沒有保存任何其他資訊
Git遠端倉庫(Github)知識點總結

4)附註標籤(annotated):儲存在Git 資料庫中的一個完整對象, 它們是可以被校驗的,其中包含打標籤者的名字、電子郵件地址、日期時間, 此外還有一個標籤信息
Git遠端倉庫(Github)知識點總結
5)後期打標籤:針對歷史項目打標籤
Git遠端倉庫(Github)知識點總結
6)共享標籤:git push 指令並不會傳送標籤到遠端倉庫伺服器上,可以執行git push origin 。
Git遠端倉庫(Github)知識點總結

git push origin --tags:将会把所有不在远程仓库服务器上的标签全部传送到那里。
![Git遠端倉庫(Github)知識點總結](https://img-blog.csdnimg.cn/498567ecae294ae9af392a975334650f.png)

7)要刪除你本地倉庫上的標籤
git tag -d

#注意上述命令並不會從任何遠端倉庫中移除這個標籤,你必須用git push :refs/tags/ 來更新你的遠端倉庫:
Git遠端倉庫(Github)知識點總結

#注意上述指令並不會從任何遠端倉庫中移除這個標籤
必須用第一種變體是git push :refs/tags/ :

$ git push origin :refs/tags/v1.4-lw
上面這種操作的含義是,將冒號前面的空值推送到遠端標籤名,從而有效率地刪除它。
第二種較直覺的刪除遠端標籤的方式是:
$ git push origin --delete
8、git分支管理
註:git branch ,列出目前所有分支,分支前的* 字元:它代表現在檢出的那一個分支
1)git branch testing 建立testing分支
2) git checkout testing 切換分支, 查看目前分支,可以HEAD 指向即為目前所在的分支
【 git checkout -b 創建並切換分支】
Git遠端倉庫(Github)知識點總結
3)輿情測試testing分支分別提交,head指針會向前移動
兩分支的基準都是9623a70fe,分別提交後各自的指標改變

Git遠端倉庫(Github)知識點總結
Git遠端倉庫(Github)知識點總結
運行git log --oneline --decorate --graph --all ,它會輸出你的提交歷史、各個分支的指向以及專案的分支分叉情況。
Git遠端倉庫(Github)知識點總結
分叉情況:
Git遠端倉庫(Github)知識點總結
分支合併git merge【民意分支不做修改,hotfix分支產生新提交情況】–三方合併
hotfix基於輿情測試分支拉取,於hotfix產生提交,查看hotfix分支的提交id為85bb*,切換回輿情分支,執行git merge,發現輿情分支的提交id也推進到hotfix分支產生的85bb*
Git遠端倉庫(Github)知識點總結
輿情分支及hotfix分支變化圖解:
Git遠端倉庫(Github)知識點總結
分支合併git merge【輿情分支/Testing分支都產生新提交情況】
Test基於輿情測試分支拉取,Test分支/輿情分支分別修改產生提交,在輿情分支合併hotfix分支內容後,切換至Test分支, test分支合併輿情分支時,發現Testing分支直接產生新的提交id41b1*,而輿情分支中的對應的對應的d804和85不會id不會合併過來,此刻新id對應兩個父級id,分別是testing的Da4和輿情分支的85b
1)git checkbox Testing
2)git merge 輿情分支
Git遠端倉庫(Github)知識點總結

Git遠端倉庫(Github)知識點總結
4)git branch -v 查看每个分支的最后一次提交
Git遠端倉庫(Github)知識點總結
5)git branch --merged/–no-merged 过滤这个列表中已经合并或尚未合并到当前分支的分支
Git遠端倉庫(Github)知識點總結
6)git branch -d
包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败,除非用-D
Git遠端倉庫(Github)知識點總結
9、远程分支
1) git ls-remote 来显式地获得远程引用的完整列表
通过 git remote show 获得远程分支的更多信息
Git遠端倉庫(Github)知識點總結
2)origin/master和master区别

master : 它代表本地的某个分支名。
origin master 代表着两个概念,前面的 origin 代表远程名,后面的 master 代表远程分支名
origin/master 本地分支,是从远程拉取后,在本地建立的一份拷贝【是用来和远程分支对应的,一般不可见】
 举几个例子可能会更加清晰地说明问题:
① 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支
 origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。
 ②执行 git merge origin/master 时,它的意思是合并名为 origin/master的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。
 ③执行 git push origin master 时, 推送本地的 master 分支到远程origin, 
④ 一次性拉取多个分支的代码:git fetch origin master dev1 dev2
 ⑤ 一次性合并多个分支的代码:git merge origin/master 分支1 分支2 分支3

Git遠端倉庫(Github)知識點總結
2)如果远程仓库有人提交内容,那么远程仓库就会向前移动,而本地origin/master如果不拉取,将还保持不动,如果希望本地同远程保持一致,可以通过git fetch拉取远程仓库数据,
git fetch
3) git push origin 分支名
推送本地的 舆情测试 分支,将其作为远程仓库的 舆情测试 分支
如果并不想让远程仓库 上的分支叫做 舆情测试 ,可以运行 git push origin 舆情测试 :test0421 来将本地的 舆情测试 分支推送到远程仓库上的 test0421 分支。
Git遠端倉庫(Github)知識點總結
Git遠端倉庫(Github)知識點總結
4)checkout 的操作
通过 git checkout test0421 会把分支切换到test0421分支上

这个操作会处于‘detached Head’ 状态,在这种状态下不会修改origin/test0421上的数据,可以修改并提交做一些实验性的操作,但是切换回test0421分支后,再次从test0421切换回origin/test0421时,之前的改变不会同步,因为origin/test0421 是用户只读的Git遠端倉庫(Github)知識點總結
5)git push origin --delete 分支名 删除远程仓库分支【本地仓库还有数据】
Git遠端倉庫(Github)知識點總結
6)rebase变基:使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
Git遠端倉庫(Github)知識點總結
Git遠端倉庫(Github)知識點總結

首先找到这两个分支(即当前分支 Test0421、变基操作的目标基底分支 Test0420) 的最近共同祖先 85bb,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 3467, 最后以此将之前另存为临时文件的修改依序应用

Git遠端倉庫(Github)知識點總結
Test0420 使用git merge 合并Test0421内容,结果两个分支完全一致,可以发现提交记录没有出现分拆,而是保持在一条直线上【可以比较前面get merge环节中结果出现分叉】

Git遠端倉庫(Github)知識點總結
rebase时一系列提交按照原有次序依次应用,只是当前分支的提交id值改变

Git遠端倉庫(Github)知識點總結
merge时多次提交合并成一次,生成新的提交id
总结:无论是通过变基,还是通过三方合并,整合的最终结果所指向的快照始终是一样的,只不过提交历史不同罢了。 变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。

推荐学习:《Git学习教程

以上是Git遠端倉庫(Github)知識點總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除