Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如有必要,修改第三方代码并合并更新-Git或SVN?_Git_Svn - Fatal编程技术网

如有必要,修改第三方代码并合并更新-Git或SVN?

如有必要,修改第三方代码并合并更新-Git或SVN?,git,svn,Git,Svn,过去几天,我试图建立一个适当的本地SVN(使用SVN:externals),以便能够: 拥有本地SVN存储库(简单) 跟踪我对第三方代码所做的更改(简单) 不时合并官方更新(远程SVN回购) 有了SVN,这可以通过SVN:externals设置为一个单独的早午餐来完成,该早午餐会不时合并到主干中 我必须承认,我在实施这一战略方面仍然存在问题,但问题是: 使用Git实现是否更简单/更可取? 第三方代码也有Git回购协议。 因为我现在设置了本地CVS,所以我可以使用任何(Git/SVN) 你推荐

过去几天,我试图建立一个适当的本地SVN(使用SVN:externals),以便能够:

  • 拥有本地SVN存储库(简单)
  • 跟踪我对第三方代码所做的更改(简单)
  • 不时合并官方更新(远程SVN回购)
有了SVN,这可以通过SVN:externals设置为一个单独的早午餐来完成,该早午餐会不时合并到主干中

我必须承认,我在实施这一战略方面仍然存在问题,但问题是:

使用Git实现是否更简单/更可取? 第三方代码也有Git回购协议。 因为我现在设置了本地CVS,所以我可以使用任何(Git/SVN)

你推荐什么?如果使用git,我应该看哪些命令?我在某个地方读到,使用Git进行合并更容易,那么它是否会更好地满足我的需求呢

我将非常感谢你的建议


p/s/I在Linux上

因为您在本地使用它,所以可以使用基于文件的SVN。。。与SVN打招呼时,您无法跟踪对第三方存储库所做的更改。我不知道怎么做。(除非我弄错了,
svn:externals
不会这样做。
svn:externals
功能只允许您从第三方存储库中选择特定版本,但您不能在不提交到外部存储库的情况下提交其中的更改。)


Git的设计正是为了做到这一点——您创建一个fork,并合并来自上游的更改。事实上,默认情况下Git的行为就是这样的。它不需要额外的配置。如果主项目是Git,那么如果您移动到DVCS(其中合并更智能,是的)并尝试使用第一个DVCS,那么您可以使用
Git子模块
作为与
svn:externals

的大致等价物,不要使用Git,选择Mercurial(使用MQ或分支/匿名或命名/)

谢谢您的回答。我是否需要设置本地存储库?或者我只是
git clone path/to/3rd/party/repo myFolder
,然后在那里更改我的更改?然后不时执行
git pull
git clone
命令的目的是创建本地存储库,因此没有额外的步骤。你可以每隔一段时间
git pull
,或者你可以
git fetch
,然后
git merge
(这是同样的事情,但允许你检查更改,而不是盲目提交更改)。只是为了确保,我不需要设置任何分支来在以后合并,对吗?我只是
git克隆它,进行更改/添加文件/提交,然后执行
git pull
git fetch+merge
?对。如果从具有
master
分支而没有其他分支的源代码克隆存储库,则将自动获得具有两个分支的存储库:
master
origin/master
origin/master
分支不会被克隆,您也不会对其进行更改,它是一个“远程分支”。刚刚检查,我只有一个分支:
*master
在修改之前,我应该添加一个远程分支吗?