zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Git本地分支和远程分支关联

Git 远程 分支 本地 关联
2023-09-14 09:08:24 时间

转载: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