Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6829|回复: 2
打印 上一主题 下一主题

Github 上怎样把新 tags 使用在自己的 fork 上?

[复制链接]

1272

主题

2067

帖子

7968

积分

认证用户组

Rank: 5Rank: 5

积分
7968
跳转到指定楼层
楼主
发表于 2020-4-13 10:47:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
自己到fork只到tag v1.9.13





官方已到tag  v2.0.1
回复

使用道具 举报

1272

主题

2067

帖子

7968

积分

认证用户组

Rank: 5Rank: 5

积分
7968
沙发
 楼主| 发表于 2020-4-13 14:02:04 | 只看该作者
jfinal更新到2.0了,自己github上面fork的项目还是1.9。之前知道,想要获得远程项目到自己本地电脑上可以使用命令
git pull git@github.com:jfinal/jfinal.git
查看后发现源码同步下来了,不过tag没有一起同步。
git tag
命令打下去只有到jfianl-1.9。
最初clone源码到本地电脑中,使用下面命令
git remote -v
发现只有origin的fetch和push只有自己的地址,查看资料发现,当fork一个项目时,可以指定源地址让你的项目保持同步。
git remote add upstream git@github.com:jfinal/jfinal.git
使用下面命令
git remote -v
发现多了upstream的fetch和push
git fetch upstream
后就可以实现真正的同步更新了。
git tag
后发现所有tag也一起下来了。

回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7968

积分

认证用户组

Rank: 5Rank: 5

积分
7968
板凳
 楼主| 发表于 2020-4-13 14:03:43 | 只看该作者
http://smilejay.com/2013/04/git-sync-tag-and-branch-with-remote/

https://www.jianshu.com/p/199733864fe7

github fork开源项目以后,需要不断主动同源项目保持同步,不然代码就停在fork那刻了。下面以Cassandra为例分别同步它的master(trunk),tag和branch。

git clone https://github.com/nivance/cassandra   #克隆fork后的项目
cd cassandra
git branch -a  #查看所有分支


git remote add src-cassandra https://github.com/apache/cassandra.git #添加源项目地址到本地

1.master同步


git pull src-cassandra trunk        #更新源项目trunk(master)代码(cassandra将master改成了trunk)
        从下图可以看到源项目的trunk(master)更新了哪些代码。



git branch -a #查看所有分支


git push      #将刚更新的trunk(master)代码推送到fork后项目的trunk(master)分支

更新成功。


2.tag同步
git fetch src-cassandra --tags  #获取源项目的tag

       可以从上图看到源项目比fork的项目多了一个tag。

git push --tags  #将新的tag推送到fork项目

推送成功。


        另外,如果要checkout tag的代码。可以在本地建立一个与tag对应的分支,然后将tag的pull下来就可以了。如下:

git checkout -b 2.0.12-tentative 2.0.12-tentative
git pull src-cassandra 2.0.12-tentative


3.branch同步


        在Git中master其实是一个特殊的branch,其它branch的同步跟master同步操作不一样。下面分别对已经fork的branch和未fork的branch进行同步。



3.1已fork的分支同步
git branch -a    #查看所有分支

       以同步上图的分支cassandra-2.1为例。先创建cassandra-2.1分支并更新,如下:

git checkout -b cassandra-2.1 origin/cassandra-2.1    #
git pull
         同步源项目相对应的分支cassandra-2.1。
git pull src-cassandra cassandra-2.1

git push origin cassandra-2.1      #推送源项目更新到fork的分支

       推送成功。


3.2未fork的分支同步


        因为要同步的分支在origin不存在,所以需要在fork的项目(origin)建一个新的分支,最好是新建一个空的分支。

git commit --allow-empty -m "initial commit"
git push origin HEAD:refs/heads/cassandra-new        #新建一个空分支cassandra-new,然后push到仓库
git branch -a


git checkout -b cassandra-new origin/cassandra-new    #切换到新分支cassandra-new  
git branch -a

git pull src-cassandra cassandra-new         #拉取源项目未fork的分支(这里以cassandra-new举个例子哈)
git push origin cassandra-new                #推送到空分支
OK! 到此圆满成功!
————————————————
版权声明:本文为CSDN博主「零下九度」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/limingjian/java/article/details/42749355
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-29 15:38 , Processed in 0.063532 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表