git同步远程仓库分支

转载于:https://www.jianshu.com/p/811b07b129e8

git命令

何谓同步远程分支?有两种情况,

1.本地有新分支,远程仓库没有。
    
2.远程仓库有新分支,本地没有。

3.本地删除了分支,远程也想删除。

4.远程删除了分支,本地也想删除。

第一种情况很好解决,将本地分支推送到远程仓库即可。

本文主要讲解后面几种情况的解决办法。


1.第二种情况:远程仓库有新分支,本地没有。

这在之前我先介绍几个命令。

1.将某个远程主机的更新,全部取回本地:git fetch

2.查看远程分支:git branch -a

3.查看本地分支:git branch

4.切换分支:git checkout 分支

熟悉了以上命令,接下来我们通过一个例子来讲解第二种情况的解决办法。

假如我本地有个git仓库,别人推送了一个新分支到远程仓库,我要获取这个分支到本地,该怎么办?

1.我需要git branch查看一下本地分支,再git branch -a查看一下远程分支,对比下,远程存在哪些本地没有的新分支。但发现,本地和远

程的一样。奇怪,在远程仓库(gitlab/github)明明看到了新分支啊。 

原来现在本地上的现在的远程分支记录是克隆仓库时当时的分支记录。所以我需要

1.首先将某个远程主机的更新,全部取回本地:git fetch

2.再次查看远程分支:git branch -a 发现远程的分支已经可以看见了。

3.然后拉取远程分支到本地:git checkout -b 远程分支名 origin/远程分支名

注:直接克隆整个仓库,可以直接使用git checkout 分支名切换到分支。因为克隆时候已经有远程所有的分支记录。但若之前已经克隆过,后来其他电脑新push一个分支,此时是无法切换到新分支的。使用上述命令可拉取最新分支(原理是在本地新建一个分支和远程分支关联起来)


2.第三种情况:本地删除了分支,远程也想删除。

这在之前我先介绍几个命令。

1.删除远程分支: git push origin -d 分支名

2.删除本地分支: git branch -d 分支名

熟悉了以上命令,接下来我们通过一个例子来讲解第三种情况的解决办法。

假如我在本地想要删除某个分支,我也想把远程仓库的这个分支也要删掉怎么办?

1.使用git branch -d 分支名来删除本地分支。
2.使用git push origin -d 分支名直接来删除远程分支。在次使用git branch -a,发现分支已经不存在了。

或者
1.使用git branch -d 分支名来删除本地分支。
2.最简单的解决办法就是直接到gitlab/github进行删除.

假如我只想把远程的删除掉怎么办?

1.使用git push origin -d 分支名直接来删除远程分支。此时删除的只是远程的分支,本地仍然存在

或者

1.直接到gitlab/github进行删除.

3.第四种情况:远程删除了分支,本地也想删除。。

这在之前我先介绍几个命令。

1.查看远程分支和本地分支的对应关系:git remote show origin  

2.删除远程已经删除过的分支:git remote prune origin

熟悉了以上命令,接下来我们通过一个例子来讲解第四种情况的解决办法。

假如我直接到gitlab/github删除了某个分支,我在本地使用git branch -a查看远程分支,依然存在并且可以切换使用。我本地也想把远程分支记录删除怎么办?

1.git branch -a查看远程分支,红色的是本地远程远程分支记录。

2.执行下面命令查看远程仓库分支和本地仓库的远程分支记录的对应关系:

  git remote show origin  

3.会看到:
 
 refs/remotes/origin/远程仓库已经删除的分支名              stale (use 'git remote prune' to remove)

 其中:

 Local refs configured for 'git push':  命令下面的分支是本地仓库的远程分支记录中仍存在的分支,但远程仓库已经不存在。

4.输入git remote prune origin来删除远程仓库已经删除过的分支

5.验证 git branch -a

  此时可以看到本地远程分支记录已经和远程仓库保持一致了。

 

要将本地 Git 仓库的特定分支远程仓库的一个分支进行关联,可以通过设置上游(upstream)分支来实现。这种方式允许在执行 `git push` 或 `git pull` 时无需指定远程分支名称,Git 会自动使用关联的远程分支。 ### 设置本地分支远程分支的关联 1. **添加远程仓库** 如果尚未添加远程仓库,可以使用以下命令: ```bash git remote add origin <remote-repository-url> ``` 例如: ```bash git remote add origin https://github.com/username/repository.git ``` 2. **推送并设置上游分支** 将本地分支推送到远程仓库,并在推送时设置上游分支。命令如下: ```bash git push -u origin <local-branch-name>:<remote-branch-name> ``` 例如,将本地的 `main` 分支关联到远程的 `master` 分支: ```bash git push -u origin main:master ``` 此后,每次运行 `git pull` 或 `git push` 时,Git 会自动与远程的 `master` 分支同步,而无需手动指定分支名 [^5]。 3. **验证分支关联关系** 可以使用以下命令查看本地分支是否已正确关联到远程分支: ```bash git branch -vv ``` 输出中会显示本地分支对应的远程跟踪分支。 4. **修改或重新设置上游分支** 如果需要更改已经存在的关联关系,可以使用以下命令: ```bash git branch --set-upstream-to=origin/<remote-branch-name> <local-branch-name> ``` 例如: ```bash git branch --set-upstream-to=origin/dev devel ``` 5. **删除不再需要的分支关联** 如果某个分支不再需要与远程分支保持关联,可以使用以下命令取消关联: ```bash git branch --unset-upstream <branch-name> ``` ### 示例:完整操作流程 假设当前本地有一个名为 `devel` 的分支,希望将其与远程仓库的 `dev` 分支关联: ```bash # 添加远程仓库(如果尚未添加) git remote add origin https://github.com/username/repository.git # 推送本地 devel 分支并与远程 dev 分支建立关联 git push -u origin devel:dev # 验证分支关联状态 git branch -vv ``` 完成上述步骤后,`devel` 分支就与远程的 `dev` 分支建立了关联,后续的拉取和推送操作都可以直接使用 `git pull` 和 `git push` 而无需额外参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值