1. 程式人生 > >Git 遠端分支的pull與push

Git 遠端分支的pull與push

遠端分支資訊檢視

git branch -r #檢視遠端分支
git branch -a #檢視所有分支,本地和遠端

git remote show [remote-name] #檢視遠端倉庫資訊

其中git remote show [remote-name]展示的資訊包括:

  • 會列出遠端倉庫的 URL 與跟蹤分支的資訊
  • 列出了當你在特定的分支上執行 git push 會自動地推送到哪一個遠端分支
  • 列出了哪些遠端分支不在你的本地
  • 哪些遠端分支已經從伺服器上移除了
  • 執行 git pull 時哪些分支會自動合併
  • ……

檢出遠端非master分支到本地

git checkout -b local origin/daily/dev

上面的方法可以直接檢出遠端分支到本地,在本地新建local分支,並切換到local分支上,注意本地分支和遠端分支不同名。

這個方法會自動建立遠端分支 /daily/dev 和本地分支local的跟蹤關係, 通過git remote show origin可以看到包含如下資訊:

 Local branches configured for 'git pull':
     local merges with remote /daily/dev
     master       merges with remote master
  Local ref configured for 'git push':
master pushes to master (up to date)

其中Local branches configured for 'git pull':下的就是upstream跟蹤分支。

可以看出,遠端分支 /daily/dev 和本地分支local 建立了git pull的關係,但是沒有建立git push的關係。此時如果強行push,不會成功,會出現如下提示:

fatal: The current branch new has no upstream branch.  
To push the current branch and set the remote as
upstream, use git push --set-upstream origin develop

Git預設push設定

我們知道通過git clone [email protected]:xxxxx.git可以建立預設的本地master分支和遠端master分支的pull和push的關係,但是我們無法通過clone命令檢出非master分支,那麼對於非master分支怎麼辦呢?

Git中push.default可以指定在沒有明確指定遠端分支的情況下,預設push的遠端分支,其取值可以是:

  • nothing - push操作無效,除非顯式指定遠端分支(想讓push變得簡單的就不要用這個)
  • current - push當前分支到遠端同名分支,如果遠端同名分支不存在則自動建立同名分支(central 和 non-central workflows都適用)
  • upstream - push當前分支到它的upstream分支上(通常用於central workflow)
  • simple - simple和upstream是相似的(通常用於central workflow),只有一點不同,simple必須保證本地分支和它的遠端 upstream分支同名,否則會拒絕push操作
  • matching - push所有本地和遠端兩端都存在的同名分支

central / non-central workflows 是Git的兩種常見工作流場景:

  • central workflows - 集中式工作流,一個分支的push和pull都是同一個遠端倉庫
  • non-central workflows - 非集中式工作流,一個分支的push和pull可能分別都有不同的遠端倉庫

在Git 2.0之前,push.default的內建值被設為'matching',2.0之後則被更改為了'simple'。

在瞭解push.default之後,我們有如下幾種比較好的從遠端分支檢出本地分支的方法(基於V2.0+):

解法一

所以如果你只有一個遠端倉庫,且你想檢出的分支名稱和遠端分支不同名(有些管理工具會自動生成比較醜的遠端分支名,類似:/features/2017-03-31-featuresA-1),那麼你可以通過設定push.default 預設推送到pull的遠端分支(upstream 分支):

#檢出重新命名
git checkout -b dev origin/features/2017-03-31-featuresA-1
#設定push.default為upstream
git config --global push.default upstream
#or
git config push.default upstream
#取消設定
git config --unset push.default

解法二

如果不想通過修改upstream,那麼只能通過設定檢出本地分支名稱和遠端分支名稱相同:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

注意:如果使用git checkout -b features/feature_1 origin/features/feature_1檢出,那麼遠端分支名稱是features/feature_1,而不是origin/features/feature_1

解法三

這個也不算什麼解法,但是強烈推薦,就是建立遠端分支的時候,取個好點的名字。

git clone [email protected]:xxxxx.git
#從master建立新分支
git checkout -b dev
#push並建立同名遠端分支
git push origin dev

相關推薦

Git 遠端分支pullpush

遠端分支資訊檢視 git branch -r #檢視遠端分支 git branch -a #檢視所有分支,本地和遠端 git remote show [remote-name] #檢視遠端倉庫資訊 其中git remote show [remote-name]展示的資

git 關於分支,關於遠端分支,關於push pull 的時機

遠端分支(remote branch)是對遠端倉庫狀態的索引。它們是一些無法移動的本地分支;只有在進行 Git 的網路活動時(push ,pull,fetch clong)才會更新。遠端分支就像是書籤,提醒著你上次連線遠端倉庫時上面各分支的位置。          我們用 (

git 關於分支,關於遠端分支,關於push pull 的時機

遠端分支(remote branch)是對遠端倉庫狀態的索引。它們是一些無法移動的本地分支;只有在進行 Git 的網路活動時(push ,pull,fetch clong)才會更新。遠端分支就像是書籤,提醒著你上次連線遠端倉庫時上面各分支的位置。          我們用

在Idea中使用git遠端倉庫pullpush檔案

1  開啟idea-> VCS-> import into Version control ->  create git repository  2  在本地目錄下建立ignore list 3  寫完程式碼後,右鍵-> git -> 先add,再comm

git拉取遠端分支本地分支合併

1.提交程式碼到本地庫 [email protected]:~/Desktop/se-CourseSelect$ git status [email protected]:~/Desktop/se-CourseSelect$ git add . [email

android studio 用git遠端倉庫pullpush發生的錯誤

發生的錯誤: Push failed: Failed with error: fatal: Could not read from remote repository Fetch failed: fatal: Could not read from remote repos

git遠端分支本地分支合併

多人協同開發中,經常會遇到這種情況:A在本地開發完成後,將程式碼推送到遠端,這時候B的原生代碼的版本就低於遠端程式碼的版本,這時候B該如何從遠端拉取最新的程式碼,並與自己的原生代碼合併呢? 具體思路:先拉去一份最新的遠端程式碼到本地,然後將本地兩個版本的程式

git 遠端分支相關

1 檢視遠端分支:git branch -a 2 檢視本地分支:git branch   3 建立本地分支: git branch test   4. 分支推到遠端分支 :git push origin test 5 切換分支到test:git check

看完這篇 你就能完全操作git 遠端分支的增、刪、改、查了

最近專案中又用到了git所以在此總結一番,這篇主要針對的是怎麼建立遠端分支,如何刪除遠端分支。 首先,如何建立遠端分支。將一系列前期準備工作準備完成後(建立\新增ssh); 在終端鍵入 git branch -va 可以檢視本地分支與遠端分支的具體情況,當如果是一個新建的專案的時候,顯示,“ * ”號顯示的

git 遠端分支回滾

git程式碼庫回滾: 指的是將程式碼庫某分支退回到以前的某個commit id 【原生代碼庫回滾】: git reset --hard commit-id :回滾到commit-id,講commit-id之後提交的commit都去除 git reset --hard H

訊息佇列的pullpush模式理解

錯誤理解 之所以將這個標題,定義為錯誤理解,原因就是無法真正的說服自己; 訊息佇列的模式有兩種pull與push.先說說我之前的理解: pull模式指,客戶端連線上broker之後,主動發起方法呼叫獲取遠端的結果,說的直白一點就是一次RPC呼叫,即同步方

git分支合併分支的流走

      首先從這張圖開始我今天的git分支的行走情況:一般的git環境,一般包含master分支,dev開發分支,test測試分支,一般都是test通過的程式碼才能放到master中,所有我們的一般開發一個新的功能,都是從master中拉取程式碼,這個程式碼基本和線上的程

如何將git遠端分支更新到本地

(1)先下載 git clone URL (2)再切換到分支JarSample git checkout JarSample (3)從遠端的origin倉庫的master分支下載程式碼到本地的origin JarSample git fetch origin JarSample (4)強制更新,

無法刪除git遠端分支的問題

當刪除遠端分支時,可能會出錯以下的錯誤: $ git push origin :alpha remote: error: By default, deleting the current branch is denied, because the next remote:

git 遠端分支版本回退

方法: git reset --hard commit_id(可用 git log –oneline 檢視) ###原生代碼回退 git push origin HEAD --force ###遠端提交回退 或者 git reset --hard HEAD~1 git pu

git遠端分支操作

這篇文章記錄我在使用git的過程中碰到遠端分支和tag的相關內容,提綱: 檢視遠端分支刪除遠端分支和tag刪除不存在對應遠端分支的本地分支重新命名遠端分支把本地tag推送到遠端獲取遠端tag 檢視遠端分支 加上-a引數可以檢視遠端分支,遠端分支會用紅色表示出來(如果你開

git遠端分支覆蓋本地分支

有時候同一個分支,遠端的和本地的都被修改的面目全非了,如果想要把本地的替換成遠端的,用下面的命令 git fetch --all git reset --hard origin/master (這裡master要修改為對應的分支名) git pull

git操作之pull拉取遠端指定分支以及push推送到遠端指定分支

一、pull操作 1、將遠端指定分支 拉取到 本地指定分支上: git pull <遠端倉庫名> <遠端分支名>:<本地分支名> 2、將遠端指定分支 拉取到 本地當前分支上: git pull <遠端倉庫名>

git提交原生代碼到遠端倉庫之前沒有pull導致push失敗解決辦法

git push錯誤failed to push some refs to的解決 當我們在github版本庫中發現一個問題後,你在github上對它進行了線上的修改;或者你直接在github上的某個庫中新增readme檔案或者其他什麼檔案,但是沒有對本地庫進行同步。這個時候當你再次有commit

git push 本地專案推送到遠端分支

大家有的時候,會在本地新建專案,這裡說一下在本地專案建立本地GIT中倉庫,然後推到遠端倉庫的步驟 1.在本地專案的資料夾下,GIT中倉庫初始化   初始化本地的Git倉庫    2。 將本地檔案索引新增至混帳庫中 3。 4。