github fork后与源项目保持同步

来源:互联网 发布:mysql where 优先级 编辑:程序博客网 时间:2024/05/17 01:42

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

git clone https://github.com/nivance/cassandra   #克隆fork后的项目cd cassandragit 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-tentativegit 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! 到此圆满成功!

1 0
原创粉丝点击