Git 的origin和master解析

首先要明確一點,對git的操作是圍繞3個大的步驟來展開的(其實幾乎所有的SCM都是這樣)

1.?????git取數據(git clone

2.?????改動代碼

3.?????將改動傳回gitgit push

3個步驟又涉及到兩個repository,一個是remote repository,再遠程服務器上,一個是local repository,再自己工作區上。其中

1, 3兩個步驟涉及到remote server/remote repository/remote branch

2涉及到local repository/local branchgit clone?會根據你指定的remote server/repository/branch,拷貝一個副本到你本地,再git push之前,你對所有文件的改動都是在你自己本地的local repository來做的,你的改動(local branch)remote branch是獨立(并行)的。Gitk顯示的就是local repository

?

clone完成之后,Git?會自動為你將此遠程倉庫命名為originorigin只相當于一個別名,運行git remote –v或者查看.git/config可以看到origin的含義)(guyue: 即origin是代表遠程倉庫的一個默認別名, 可以在項目工程目錄中.git/config文件中查看或修改),并下載其中所有的數據,建立一個指向它的master?分支的指針,我們用(遠程倉庫名)/(分支名)?這樣的形式表示遠程分支,所以origin/master指向的是一個remote branch(從那個branch我們clone數據到本地),但你無法在本地更改其數據。

同時,Git?會建立一個屬于你自己的本地master?分支,它指向的是你剛剛從remote server傳到你本地的副本。隨著你不斷的改動文件,git add, git commitmaster的指向會自動移動,你也可以通過mergefast forward)來移動master的指向。

?$git branch -a (to show all the branches git knows about)

* master

??remotes/origin/HEAD -> origin/master

??remotes/origin/master

?

$git branch -r (to show remote branches git knows about)

??origin/HEAD -> origin/master

??origin/master

?

可以發現,master就是local branchorigin/masterremote branchmaster is a branch in the local repository. remotes/origin/master is a branch named master on the remote named origin

$git diff origin/master master?show me the changes between the remote master branch and my master branch).

需要注意的是,remotes/origin/masterorigin/master的指向是相同的

$git diff origin/master remotes/origin/master

?

git push origin master

origin指定了你要push到哪個remote

master其實是一個“refspec”,正常的“refspec”的形式為”+<src>:<dst>”,冒號前表示local branch的名字,冒號后表示remote repository?branch的名字。注意,如果你省略了<dst>git就認為你想pushremote repository下和local branch相同名字的branch。聽起來有點拗口,再解釋下,push是怎么個push法,就是把本地branch指向的commit pushremote repository下的branch,比如

$git push origin master:master?(local repository中找到名字為masterbranch,使用它去更新remote repository下名字為masterbranch,如果remote repository下不存在名字是masterbranch,那么新建一個)

$git push origin master?(省略了<dst>,等價于“git push origin master:master”)

$git push origin master:refs/for/mybranch?(local repository中找到名字為masterbranch,用他去更新remote repository下面名字為mybranchbranch)

$git push origin HEAD:refs/for/mybranch?HEAD指向當前工作的branchmaster不一定指向當前工作的branch,所以我覺得用HEAD還比master好些)

$git push origin :mybranch?(再origin repository里面查找mybranch,刪除它。用一個空的去更新它,就相當于刪除了)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

end to end testing

概念 https://www.softwaretestinghelp.com/what-is-end-to-end-testing/ What is “End to End Testing”? Term “End to End testing” is defined as a testing method which determines whether the performance of an application is as per the requirement or not. It…

windows下安裝mysql 開機啟動

1 下載地址 http://dev.mysql.com/downloads/installer/ 2 下載版本 mysql community server 5.7.x 這個版本是一個傻瓜版本&#xff0c;設置root密碼之后就可以啟動服務了&#xff0c;不用自己配置&#xff0c;還有workbench可用。轉載于:https://www.cnblogs.com/hustdc/p/91…

Linux目錄架構詳解

Linux和Windows操作系統的顯著區別之一就是目錄架構的不同。Linux操作系統的目錄架構遵循文件系統層級結構標準。不知你是否使用ls命令瀏覽過Linux的根目錄“/”&#xff0c;親愛的讀者&#xff0c;您都了解這些目錄的含義嗎&#xff1f; ls -l / 遍歷文件系統&#xff08;點擊…

越陽光明媚....

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 窗外陽光明媚&#xff0c;而心卻如此哀傷... 很喜歡陽光明媚&#xff0c;很喜歡春暖花開&#xff0c; 窗外有幾片莊稼地&#xff1a;滿…

Linux的學習:

查看端口&#xff1a; netstat -anop | grep 80 netstat -ntlp 先看看不帶n的 再看看帶n的 我們發現在local address 即主機地址這一欄中&#xff0c;如果沒有帶n選項&#xff0c;會將套接字所對應的域名解析出來&#xff0c;如果加上n選項&#xff0c;那么就不會顯示&#xff…

基于TCP協議的Socket通信

參考文章&#xff1a; Socket學習網絡基礎準備 基于TCP協議的Socket通信(1) 基于TCP協議的Socket通信(2) 感謝菜鳥分享&#xff01;

git pull命令

git pull命令作用&#xff1a;從另一個存儲庫或本地分支關聯的遠端分支獲取最新代碼&#xff0c;并與本地代碼資源整合。git pull命令執行過程&#xff1a;取回遠程主機某個分支的更新&#xff0c;再與本地的指定分支合并&#xff08;可能存在需手動解決的沖突&#xff09;。 …

RPM的用法

RPM 有五種基本的操作方式(不包括創建軟件包): 安裝, 卸載, 升級, 查詢,和驗證。 下面我們就來逐一的講解吧。 一、 安裝RPM包 RPM 軟件包通常具有類似foo-1.0-1.i386.rpm 的文件名。其中包括 軟件包的名稱(foo)&#xff0c;版本號(1.0)&#xff0c;發行號(1)&#xff0c; 和 硬…

Unix 多進程編程

一.多進程程序的特點由于UNIX系統是分時多用戶系統, CPU按時間片分配給各個用戶使用, 而在實質上應該說CPU按時間片分配給各個進程使用, 每個進程都有自己的運行環境以使得在CPU做進程切換時不會"忘記"該進程已計算了一半的"半成品". 以DOS的概念來說, 進程…

Redis單線程模型是什么?

參考文章&#xff1a; redis 單線程的理解 謝謝作者分享&#xff01;

寂靜的時候

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 每每聽到熟悉的旋律&#xff0c;終又會驟然就無法抑制排山倒海般的憂傷... 就這樣想往若已經年邁到只能坐在夕陽余暉里遙望遠方該多好.…

@staticmethod和@classmethod的作用與區別

一般來說&#xff0c;要使用某個類的方法&#xff0c;需要先實例化一個對象再調用方法。 而使用staticmethod或classmethod&#xff0c;就可以不需要實例化&#xff0c;直接類名.方法名()來調用。 這有利于組織代碼&#xff0c;把某些應該屬于某個類的函數給放到那個類里去&…

前端開發注意事項(HTML與CSS進階)

HTML 與 CSS 進階 Img 標簽 alt 屬性 一定要添加 用于圖片描述 給機器看的&#xff0c;如果圖片加載失敗&#xff0c;會顯示 alt <img src"" alt""/> 為 img 添加 圖片注釋 建議做法為 figure(圖形) 和 figcaption [caption(字幕)]<figure>…

如果你懂我…

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 想往的世界&#xff0c;有風如深秋的柳絮… 翻飛在遙遠的寂靜里… 若冷落…若別離… 若守候…若赤誠… 若我…

[NOI2005]維護數列 惡心到毀天滅地的splay

傳送門 debug到死2333. 雖然說是splay維護序列模板&#xff0c;作為蒟蒻的我還是GG %%%考場A的dalao Orz Orz. 其實不開long long也行&#xff0c;inf開成0x3f3f3f3f也可&#xff08;flag,歡迎推翻&#xff09; 就當存個板子吧. #include<bits/stdc.h> #include<cs…

Python的from import和import的區別

對于from...import...&#xff0c;其意義具體是from Module import Function或Class等&#xff0c;這個只是從模塊中導入一個或幾個函數或類的做法。另外一個常見的是import Module&#xff0c;就是把整個模塊中得東西都導入&#xff0c;所以你后面的程序就都可以使用了。另外還…

靜態代理、動態代理、AOP

參考文章&#xff1a; Java中的代理模式——靜態代理以及分析靜態代理的缺點 Java中動態代理的兩種方式JDK動態代理和cglib動態代理以及區別 Spring中的AOP以及切入點表達式和各種通知

Linux系統中解壓縮指令匯總

.tar 解包&#xff1a; tar xvf FileName.tar 打包&#xff1a;tar cvf FileName.tar DirName &#xff08;注&#xff1a;tar是打包&#xff0c;不是壓縮&#xff01;&#xff09; --------------------------------------------- .gz 解壓1&#xff1a;gunzip FileName.gz 解…

python中的@

函數修飾符 ‘’ 用做函數的修飾符&#xff0c;可以在模塊或者類的定義層內對函數進行修飾&#xff0c; 出現在函數定義的前一行&#xff0c;不允許和函數定義在同一行 一個修飾符就是一個函數&#xff0c;它將被修飾的函數作為參數&#xff0c;并返回修飾后的同名函數或其他可…

這樣想起...

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 看到一張精致的自然風景圖片&#xff0c;心生向往. 在海的一個小小角落邊&#xff0c;有一寓不很大的房子&#xff0c;暮色浸染的云彩…