git pull下來用git branch -r檢視遠端分支才有資料
解決方案:指定當前工作目錄工作分支,跟遠端的倉庫,分支之間的連結關係。
比如我們設定master對應遠端倉庫的master分支
git branch --set-upstream master origin/master
git branch檢視本地分支,git branch -r 檢視遠端分支
具體原因: 出現這種情況主要是由於遠端倉庫太多,且分支較多。在預設情況下,git push時一般會上傳到origin下的master分支上,然而當repository和branch過多,而又沒有設定關聯時,git就會產生疑問,因為它無法判斷你的push目標。
用如下命令進行本地分支和遠端分支進行關聯
git push --set-upstream origin master
這樣在我們每次想push或者pull的時候,只需要 輸入git push 或者git pull即可。
在此之前,我們必須要指定想要push或者pull的遠端分支。
git push origin master
git pull origin master.
不然報錯
git pull時遇到
fatal: refusing to merge unrelated histories
我們在初見一個git倉庫需要將之提交到遠端倉庫時,使用git pull origin master 命令操作時,會遇到這樣的錯誤:fatal: refusing to merge unrelated histories
這是因為遠端倉庫已經存在程式碼記錄了,並且那部分程式碼沒有和本地倉庫進行關聯,我們可以使用如下操作允許pull未關聯的遠端倉庫舊程式碼:
git pull origin api-dev --allow-unrelated-histories
這樣就可以把遠端該分支的程式碼下載到本地了
git branch -vv 可檢視本地分支和遠端分支的對應關係
根本原因在於本地分支 github 是從遠端分支develop拉取的,在執行git push命令時,不知道應該與遠端哪個分支進行同步,就會出現上面那個錯誤
提示了兩種解決方法
git push github-origin HEAD:develop
這種是將當前分支推送到github-origin倉庫的develop分支
或者
git push github-origin HEAD
這種是將當前分支推送到遠端的同名分支,沒有就會建立
git rebase變基
設定已有的本地分支跟蹤一個剛剛拉取下來的遠端分支,或者想要修改正在跟蹤的上游分支,你可以在任意時間使用 -u 或 --set-upstream-to 選項執行 git branch 來顯式地設定。
可以執行 git merge origin/serverfix 將這些工作合併到當前所在的分支。 如果想要在自己的 serverfix 分支上工作,可以將其建立在遠端跟蹤分支之上:
有時當初次git push不能引數時會提示這個
原因是本地的分支跟遠端的分支名字不一樣
git push origin HEAD:develop 的意思是將當前分支推送到origin的develop分支
git push origin HEAD 的意思是將當前分支推送到origin倉庫與本地當前分支的同名分支,沒有就會新建
刪除遠端分支
git branch -r -d origin/github 只是刪除了fetch或pull下來的上游追蹤
遠端刪除 git push <主機名> :<遠端分支名>或git push <主機名> --delete <遠端分支名>
有一種情況,就是不管是否存在對應的遠端分支,將本地的所有分支都推送到遠端主機,這時需要使用–all選項。
$ git push --all origin
上面命令表示,將所有本地分支都推送到origin主機。如果遠端主機的版本比本地版本更新,推送時Git會報錯,要求先在本地做git pull合併差異,然後再推送到遠端主機。這時,如果你一定要推送,可以使用–force選項。
$ git push --force origin
上面命令使用-–force選項,結果導致在遠端主機產生一個”非直進式”的合併(non-fast-forward merge)。除非你很確定要這樣做,否則應該儘量避免使用–-force選項。
git fetch <主機名> <遠端分支> : <本地分支>
git fetch origin develop:branch2
意思是把origin主機的develop分支的資料下載到本地分支branch2(沒有branch2就新建)