Git本地分支和遠程分支關聯


轉載:https://blog.csdn.net/cherishhere/article/details/52606884

轉載:https://blog.zengrong.net/post/1746.html

轉載:https://blog.csdn.net/xinghuowuzhao/article/details/78663526

轉載:https://blog.csdn.net/boysky0015/article/details/78185879/

0,查看遠程分支

git remote -v

1.創建分支

git branch develop

 

2.查看本地分支:

git branch

注:名稱前面加* 號的是當前的分支

3.查看遠程分支:

加上-a參數可以查看遠程分支,遠程分支會用紅色表示出來(如果你開了顏色支持的話)

git branch -a

4.切換分支

git checkout branch_name

5.刪除本地分支

git branch -d branch_name

6.刪除遠程分支

git branch -r -d origin/branch-name  
git push origin :branch-name 

7.如果遠程新建了一個分支,本地沒有該分支。

可以利用 git checkout --track origin/branch_name ,這時本地會新建一個分支名叫 branch_name ,會自動跟蹤遠程的同名分支 branch_name。

git checkout --track origin/branch_name

8.如果本地新建了一個分支 branch_name,但是在遠程沒有。

這時候 push 和 pull 指令就無法確定該跟蹤誰,一般來說我們都會使其跟蹤遠程同名分支,所以可以利用 git push --set-upstream origin branch_name ,這樣就可以自動在遠程創建一個 branch_name 分支,然后本地分支會 track 該分支。后面再對該分支使用 push 和 pull 就自動同步。

git push --set-upstream origin new_branch_name
or 遠程有:
git branch --set-upstream debug origin/debug

 9.合並分支到master上

 首先切換到master分支上

git  checkout master

如果是多人開發的話 需要把遠程master上的代碼pull下來

git pull origin master

然后我們把dev分支的代碼合並到master上

git  merge dev

然后查看狀態

git status

 查看本地分支與遠程分支的關聯

三選一
git branch -vv

git remote show origin

cat .git/config

 

git push報錯:

git push
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:7-3-x

To push to the branch of the same name on the remote, use

    git push origin HEAD

To choose either option permanently, see push.default in 'git help config'.

遠程與本地的分支名相同時,才能省略成 git push。否則必須寫全!!!

git 如何同步本地、遠程的分支和tag信息

1.git如何同步本地分支與遠程origin的分支
問題場景1:
同事A創建了本地分支branchA並push到了遠程->同事B在本地拉取(git fetch)了和遠程branchA同步的本地分支branchA->同事A開發完成將遠程分支branchA刪除(遠程倉庫已經不存在分支branchA)->同事B用git fetch同步遠端分支,git branch -r發現本地仍然記錄有branchA的遠程分支

分析:遠端有新增分支,git fetch可以同步到新的分支到本地,但是遠端有刪除分支,直接"git fetch"是不能將遠程已經不存在的branch等在本地刪除的

解決方法:
git fetch --prune #這樣就可以實現在本地刪除遠程已經不存在的分支
或者簡略:
git fetch -p
git fetch -p origin
git remote prune origin

branch常用的命令:
git branch -a #查看本地和遠程所有的分支
git branch -r #查看所有遠程分支
git branch #查看所有本地分支
git branch -d -r origin/branchA #刪除遠程分支

其他較常用的命令
git fetch #將本地分支與遠程保持同步
git checkout -b 本地分支名x origin/遠程分支名x #拉取遠程分支並同時創建對應的本地分支

問題場景2:
本地分支提示:Git Your branch is ahead of ‘origin/master’ by X commits,你想讓本地直接和遠程保持同步,想讓不再提示這個討厭信息,那么如果你本地的commit確保不想要,可以如下操作:
解決方法:
1)git reset --hard origin/master

或者還有一個將本地代碼與服務器代碼更新一致的語句
2)git branch -u origin/master

如果想直接回退版本讓遠程和本地代碼保持一致,那就確保本地代碼沒問題之后強制推到遠程
git push -f origin master

2.git 如何同步本地tag與遠程tag

問題場景:
同事A在本地創建tagA並push同步到了遠程->同事B在本地拉取了遠程tagA(git fetch)->同事A工作需要將遠程標簽tagA刪除->同事B用git fetch同步遠端信息,git tag后發現本地仍然記錄有tagA

分析:對於遠程repository中已經刪除了的tag,即使使用git fetch --prune,甚至"git fetch --tags"確保下載所有tags,也不會讓其在本地也將其刪除的。而且,似乎git目前也沒有提供一個直接的命令和參數選項可以刪除本地的在遠程已經不存在的tag(我目前是沒找到有關這類tag問題的git命令~~,有知道的同學可以告知我下,互相進步)。
解決方法:

git tag -l | xargs git tag -d #刪除所有本地分支
git fetch origin --prune #從遠程拉取所有信息

#查詢遠程tags的命令如下:
git ls-remote --tags origin

tag常用git命令:
git tag #列出所有tag
git tag -l v1.* #列出符合條件的tag(篩選作用)
git tag #創建輕量tag(無-m標注信息)
git tag -a -m ‘first version’ #創建含標注tag
git tag -a f1bb97a(commit id) #為之前提交打tag

git push origin --tags #推送所有本地tag到遠程(場景:有兩倉庫。A,B. 先同步了。后來A更新了很多tag,這時B就落后了。把A pull出來,遠程指向B,做pull和push。發現提交都同步到了B.但是Tag沒有同步。)


git push origin #推送指定本地tag到遠程

git tag -d #刪除本地指定tag
git push origin :refs/tags/ #刪除遠程指定tag

git fetch origin #拉取遠程指定tag
git show #顯示指定tag詳細信息

參考閱讀
http://smilejay.com/2013/04/git-sync-tag-and-branch-with-remote/
https://blog.zengrong.net/post/1746.html

 

GIT本地新建分支並提交到遠程倉庫

 

1.建立本地倉庫

查看當前項目根目錄中有沒有 .git文件(隱藏文件),如果沒有,右鍵->Git bash here ,然后輸入命令git init建立本地倉庫

git init

2.將代碼提交到本地倉庫

git add .
git commit -m "new branch commit"

3.在本地倉庫中建立一個與遠程倉庫的別名,以便之后提交代碼而不是每次都要輸入遠程倉庫地址。指令結尾是git的倉庫地址。

git remote add origin https://github.com/lioms/lioms.git 

4.此時我要把本地的代碼提交的遠程倉庫上,步驟如下

  1)首先要建立本地的分支,並切換到該分支上(本地建立完分支,默認是在master分支上)

git branch hello_git_branch
git checkout hello_git_branch

  2)push到遠程倉庫上面

git push origin hello_git_branch

由於剛才我們為遠程倉庫起了一個別名,那么這里就可以使用別名origin調用。

這里的含義是將hello_git_branch這個分支提交到遠程倉庫上面。如果遠程倉庫沒有這個分支,那么也會新建一個該分支。

當然,也可以指定提交到遠程倉庫的某個分支上。
如下,是將hello_git_branch分支提交到遠程倉庫的master上面

git push origin hello_git_branch:master

拓展:

如果本地當前是在hello_git_branch分支上面,此時想把遠程倉庫的master與我的hello_git_branch分支合並(merge),可以使用如下命令:

git pull origin hello_git_branch:master

如果您使用如下指令,含義就是將遠程倉庫的master分支合並下來。如果本地沒有master分支,那么本地就新建一個master分支;如果有這個分支就是 fetch + merge 操作。

git pull master

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM