0%

Git版本库管理最佳实践——以跟踪仓库指定分支下的代码为例

1 背景

在本地同步追踪某个远程仓库的某一分支(以develop分支为例)。

2 问题

起初先进行了如下操作:

  • 创建一个文件夹,初始化为git仓库:git init
  • 进行用户基本信息配置:git config
  • 创建本地仓库的develop分支:git checkout -b
  • 关联远程仓库git地址:git remote add

接下来,尝试通过git branch --set-upstream-to将本地仓库develop分支与远程仓库develop分支进行关联时报错:develop分支不存在。使用git branch -r发现远程仓库分支为空,其实使用git branch -a可以发现根本看不到任何分支。

3 解决

因为仅仅是关联了远程仓库,本地仓库并未获取远程仓库的修改(包括分支信息),所以本地看不到远程仓库的分支,也就无法进行分支关联操作。以参考1中的建议,在将本地仓库分支与远程仓库分支进行关联前,可先通过git fetch origin命令拉取远程仓库的修改,这样便可获取远程仓库分支信息,但还无法看到本地分支。最佳实践是使用git pull origin develop命令(前提是你必须知道想要将远程仓库的哪个分支并入本地分支),便可看到远程仓库的develop分支和本地仓库的develop分支(当前分支),进而可进行分支关联操作。

4 结论

总结一下最佳实践:

1
2
3
4
5
6
git init
git checkout -b local_branch
git remote add origin repo_addr
git pull origin repo_branch
git branch --set-upstream-to=origin/repo_branch local_branch
git fetch --all

当然,直接使用git clone也是可以的(这才应该算是最佳实践!

1
2
3
git clone repo_addr
cd repo_dir
git checkout target_repo_branch

git checkout target_repo_branch将自动在本地创建一个名为target_repo_branch的分支,并将其与远程仓库中的target_repo_branch分支进行关联。执行完git clone后,默认在本地仓库创建的是master分支,并将其与远程仓库的master分支进行关联,但通常情况下,maser分支仅用于版本释放,我们并不会直接向mater分支推送修改,而是在其它分支(如develop分支)完成开发与调试后,再通过git merge将分支上的工作并入master分支。

5 参考

  1. Git branch -r 无法获取远程分支,ui可以看见分支但是git 命令无法查看解决方案

Thank you for your donate!