首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅使用Git将Git分支中的更改合并到SVN的“主干”中

如何仅使用Git将Git分支中的更改合并到SVN的“主干”中
EN

Stack Overflow用户
提问于 2019-02-03 02:54:11
回答 1查看 101关注 0票数 1

我想签出一个SVN项目,在远程SVN上创建一个分支,以及相应的本地Git分支。然后我想做一些改变。更改应该反映在两个分支中- SVN和Git,因为有些人在SVN中工作,他们应该看到分支task3

下面的脚本成功地做到了这一点:

代码语言:javascript
复制
#!/bin/bash
DIR=/tmp/svn-experiments # Directory for experiments
rm -rf "$DIR"
mkdir "$DIR"

cd $DIR
rm -rf svnrepos
svnadmin create svnrepos

# Create a project with standard SVN-project folder structure:
mkdir -p project/{trunk,branches,tags}
cd project/trunk/
echo "Hello" > readme.txt
echo "Log entry 1" > day.log

# Import the project into repository
svn import -m "Project import into repository" "$DIR"/project file://"$DIR"/svnrepos/project

svn log file://"$DIR"/svnrepos/project

# Simulate two users and conflict

# Developer 1 (svn) creates working copy, branch:
svn co file://"$DIR"/svnrepos/project "$DIR"/developer_svn1

cd "$DIR"/developer_svn1

svn copy file://"$DIR"/svnrepos/project/trunk file://"$DIR"/svnrepos/project/branches/task1 -m "Create a branch for task 1" 

svn update

cd "$DIR"/developer_svn1/branches/task1

sed -i -r 's/(.*)/\1 world/g' readme.txt

svn commit -m "Change from developer_svn1"

svn update

# Developer 2 (svn) creates working copy, branch:
svn co file://"$DIR"/svnrepos/project "$DIR"/developer_svn2

cd "$DIR"/developer_svn2

svn copy file://"$DIR"/svnrepos/project/trunk file://"$DIR"/svnrepos/project/branches/task2 -m "Create a branch for task 2" 

svn update

cd "$DIR"/developer_svn2/branches/task2

sed -i -r 's/(.*)/\1 Russia/g' readme.txt

svn commit -m "Change from developer_svn2"

svn update

# Currently creates a remote SVN branch 'task3' and the corresponding local Git branch 'task3'
# Commits to local and remote
# TODO How to merge changes in 'task3' into 'trunk' of SVN by using Git only?
git-workflow() {
# Developer 3 (git) creates working copy, branch:
git svn clone -s file://"$DIR"/svnrepos/project "$DIR"/developer_git1

cd "$DIR"/developer_git1

git svn -m "Create a branch for task 3" branch task3 # The branch will be created on SVN

git branch task3 remotes/origin/task3 

git checkout task3

sed -i -r 's/(.*)/\1 Germany/g' readme.txt

git add -u

git commit -m "Change from developer_git1" # Commit in local Git branch

git svn dcommit # Commit to the corresponding SVN branch

}

但是我不知道如何将本地Git分支task3中的更改合并到SVN的trunk中。

我尝试了以下几种方法:

代码语言:javascript
复制
/tmp/svn-experiments/developer_git1$ git branch -a
  master
* task3
  remotes/origin/task1
  remotes/origin/task2
  remotes/origin/task3
  remotes/origin/trunk
/tmp/svn-experiments/developer_git1$ git checkout master
Switched to branch 'master'
/tmp/svn-experiments/developer_git1$ git show-ref
7c4844a091dd649a7ffd15a3dac07da927fca426 refs/heads/master
2e0964804ba1f3f84baaba8ade0934899ea2a69d refs/heads/task3
6e42f27d10ca25a0189b94d8dc1ada96a38f494b refs/remotes/origin/task1
7992320699f10f77062c2c7fa9c78edeec2ce01b refs/remotes/origin/task2
2e0964804ba1f3f84baaba8ade0934899ea2a69d refs/remotes/origin/task3
7c4844a091dd649a7ffd15a3dac07da927fca426 refs/remotes/origin/trunk
/tmp/svn-experiments/developer_git1$ git merge task3 
Updating 7c4844a..2e09648
Fast-forward
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
/tmp/svn-experiments/developer_git1$ git show-ref
2e0964804ba1f3f84baaba8ade0934899ea2a69d refs/heads/master
2e0964804ba1f3f84baaba8ade0934899ea2a69d refs/heads/task3
6e42f27d10ca25a0189b94d8dc1ada96a38f494b refs/remotes/origin/task1
7992320699f10f77062c2c7fa9c78edeec2ce01b refs/remotes/origin/task2
2e0964804ba1f3f84baaba8ade0934899ea2a69d refs/remotes/origin/task3
7c4844a091dd649a7ffd15a3dac07da927fca426 refs/remotes/origin/trunk
/tmp/svn-experiments/developer_git1$ git svn dcommit
Committing to file:///tmp/svn-experiments/svnrepos/project/branches/task3 ...

如何强制master指向trunk并在那里提交?

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 11:10:28

我从来没有见过有人使用git推送到SVN的情况。如果您正在使用SVN工作流,则应该使用tortoiseSVN而不是git。参见https://tortoisesvn.net/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54496429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档