git中的合并:通过git svn,表示已经更新,但git diff表示存在差异
我使用git svn处理代码库,需要将主干中的更改合并到分支中 我用git获取了两个分支,当我在分支中运行git diff trunk时,我可以看到所有的更改 然而,当我运行git merge heads/trunk时,我会收到一条消息“已经是最新的” 这显然不是最新的。我做错了什么?“已经是最新的”可能意味着:git中的合并:通过git svn,表示已经更新,但git diff表示存在差异,svn,git,merge,git-svn,Svn,Git,Merge,Git Svn,我使用git svn处理代码库,需要将主干中的更改合并到分支中 我用git获取了两个分支,当我在分支中运行git diff trunk时,我可以看到所有的更改 然而,当我运行git merge heads/trunk时,我会收到一条消息“已经是最新的” 这显然不是最新的。我做错了什么?“已经是最新的”可能意味着: trunk是一个(trunk中的所有更改都已合并到master) 或者您正在处理(如果您直接签出SHA1提交引用或标记,则可能会发生这种情况) 注意:注意 Subversion中缺
- trunk是一个(trunk中的所有更改都已合并到master)
- 或者您正在处理(如果您直接签出SHA1提交引用或标记,则可能会发生这种情况)
虽然
git svn
可以跟踪采用标准布局的存储库的复制历史(包括分支和标记),但它还不能表示git内部发生的合并历史,并返回到svn用户的上游。因此,建议用户在git中尽可能保持历史记录的线性,以便于与SVN兼容 为了简化操作并与功能较差的系统(SVN)进行互操作,建议所有
git SVN
用户clone
,fetch
和dcommit
直接从SVN服务器进行,并避免git存储库和分支之间的所有git克隆/拉/合并/推操作。
建议在git分支机构和用户之间交换代码的方法是git格式补丁
和git am
,或者只是“向SVN存储库提交数据”
一点也不像一个例子。以下是如何进入这种情况:
(从空目录开始):
>git初始化
>echo“hello”>a.txt
>git添加-A
>git提交-m“在主机上创建了一个”
>git分支测试
>git校验测试
此时,主分支和测试分支上的a.txt是相同的
> echo "goodbye" > a.txt
> git add -u
> git commit -m "Changed a on test"
>echo“再见”>a.txt
>git添加-u
>git提交-m“在测试时更改了”
现在(显然)会有不同之处:
> git diff --name-status master
M a.txt
>git diff--名称状态主机
M a.txt
但git没有什么可合并的:
> git merge master
Already up-to-date.
>git合并主机
已经是最新的了。
这是因为这里的更改是在测试时进行的,而不是在master上。如果切换到test,diff将以类似方式报告,但merge现在将合并从test到master的更改:
> git checkout master
> git diff --name-status test
M a.txt
> git merge test
Updating 088cd9d..3d8c8e2
Fast-forward
a.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
>git签出主机
>git diff——名称状态测试
M a.txt
>git合并测试
更新088cd9d..3d8c8e2
快进
a、 txt | 2+-
1个文件已更改,1个插入(+),1个删除(-)
Git合并是定向的,从分支A合并到分支B与从分支B合并到分支A不同。您是否检查过它在例如gitk中的外观?啊哈。。。因此,我使用了太多的git功能,而不是从svn中提取真正允许我使用的功能。很高兴知道,谢谢!
> git checkout master
> git diff --name-status test
M a.txt
> git merge test
Updating 088cd9d..3d8c8e2
Fast-forward
a.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)