git保留两个repo的commit并进行合并

以往的合并时首先要删除repo的.git文件夹,然后重新add-commit-push。带来的问题是会丢失某一个仓库的提交信息,不利于时光倒退。经过摸索终于实现了保留两个仓库提交信息的合并方法。介绍如下:


比如要将DownloadPicsBySeleniumAndPhantomJS这个项目合并到Web-Spider中,终端中执行:

接下来解决merge冲突即可(可以尝试使用mergetool),如有需要可以删除多余分支和远程连接

git mergetool # 解决merge冲突
git remote rm other # 删除远程连接
git branch -d repo1 # 删除分支操作

可以使用PythonGitPython库来获取两个分支中commit的差异,并使用Python的difflib库生成差异报告。 以下是一个简单的代码示例: ```python import git import difflib # 打开git仓库 repo = git.Repo('/path/to/repo') # 获取两个分支 branch1 = repo.branches['branch1'] branch2 = repo.branches['branch2'] # 获取两个分支的commit列表 commits1 = list(branch1.commit_iter()) commits2 = list(branch2.commit_iter()) # 获取两个分支的commit差异 commit_diff = set(commits1) - set(commits2) # 解析差异并生成报告 for commit in commit_diff: # 获取commit的文件差异 diff_index = commit.diff(commit.parents[0]) # 打印commit信息 print('Commit:', commit.hexsha) print('Author:', commit.author.name, '<' + commit.author.email + '>') print('Date:', commit.authored_datetime) # 打印文件差异报告 for diff_item in diff_index: if diff_item.a_blob is None or diff_item.b_blob is None: continue # 只处理文件类型的差异 if not diff_item.a_blob.path.endswith('.py'): continue # 获取文件内容 old_content = diff_item.a_blob.data_stream.read().decode('utf-8') new_content = diff_item.b_blob.data_stream.read().decode('utf-8') # 生成差异报告 diff_report = difflib.unified_diff(old_content.splitlines(), new_content.splitlines(), lineterm='', fromfile=diff_item.a_blob.path, tofile=diff_item.b_blob.path) # 打印差异报告 for line in diff_report: print(line) ``` 这个示例代码演示了如何使用GitPython库获取两个分支中commit的差异,并使用difflib库生成差异报告。您可以根据自己的需求修改代码来生成符合您需求的报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值