3

我有 2 个需要合并的本地文件。git 中都没有版本控制。有没有合并文件的linux命令?我试过merge了,但没有得到任何有用的输出。合并文件似乎表明整个第一个文件被删除,第二个文件是整个输出:

$ cat m1
hello there
my friend
how are you
$
$ cat m2
hello there
my chum
how are you
$
$ merge merge m1 m2
$ cat merge
<<<<<<< merge
=======
hello there
my chum
how are you
>>>>>>> m2

编辑

澄清一下,我希望创建一个 git 样式的合并文件,显示内联文件之间的差异,而不是简单地将 2 个文件端到端粘合在一起(无论如何这不适用于代码)

4

1 回答 1

4

如果你不介意使用图形应用程序,我真的可以推荐KDiff3,它是一个很棒的合并工具。在你的情况下,运行

kdiff3 -o output.txt m1 m2

你会得到

kdiff3 截图

对于每个合并冲突,按 A 或 B 按钮选择要选择的行(或两者)。您可以在底部区域随意编辑。


更新:如果您只想在终端中以文本模式工作,那么设置一个临时 git 存储库非常便宜。学习使用 git 需要一些努力,但它是可行的。对于您的情况,以下命令可以完成工作:

$ mkdir /tmp/test
$ cd /tmp/test
$ git init
Initialized empty Git repository in /tmp/test/.git/
$ touch gitfile
$ git add gitfile
$ git commit -m "initial commit"
[master (root-commit) 31efd12] initial commit
 0 files changed
 create mode 100644 gitfile
$ git checkout -b m1-branch
Switched to a new branch 'm1-branch'
$ cat m1 >> gitfile
$ git add gitfile
$ git commit -m "m1 content"
[m1-branch 420b423] m1 content
 1 file changed, 3 insertions(+)
$ git checkout -b m2-branch master
Switched to a new branch 'm2-branch'
$ cat m2 >> gitfile
$ git add gitfile
$ git commit -m "m2 content"
[m2-branch c4c525a] m2 content
 1 file changed, 3 insertions(+)
$ git checkout master
Switched to branch 'master'
$ git merge m1-branch m2-branch
Fast-forwarding to: m1-branch
Trying simple merge with m2-branch
Simple merge did not work, trying automatic merge.
Auto-merging gitfile
ERROR: content conflict in gitfile
fatal: merge program failed
Automatic merge failed; fix conflicts and then commit the result.
$ cat gitfile
hello there
<<<<<<< .merge_file_qRmZJF
my friend
=======
my chum
>>>>>>> .merge_file_BUlXHH
how are you
$
于 2012-09-20T20:57:10.283 回答