Git合并远程仓库和版本回退
2016-01-10 16:19
176 查看
因为我个人需要合并两个远程仓库(保留commit log),就查了一些相关资料,整理了一些操作。而在我的操作过程中,由于一些误删除和误提交,又引发了版本回退的一些问题,一并做说明。
假设有一个仓库是我要保留的main,另外一个要添加进这个仓库为other,两个都pull下来了。两个仓库在同一个文件夹下,以下操作均在main文件夹中
(git checkout命令加上-b参数表示创建并切换)
git checkout -- <file>
上面两条命令会用暂存区全部(第一个)或指定的文件(第二个)替换工作区的文件。
这个操作很危险,会清除工作区中未添加到暂存区的改动。
(此处可以看出,checkout有两种用法,checkout用于切换分支,checkout --用于撤销操作)
git log
git log --pretty=oneline
第一个是详细提交信息,第二个只有提交的版本号
然后回退版本,回退版本又分为两种
(3.1)把版本库、暂存区和工作区都回退到HEAD的前一个版本。
git reset --hard HEAD^
回退到上一个版本(--hard 表示放弃所有本地改动)
git reset --hard HEAD^~100
退回上100个版本
git reset --hard id
回退到id号指示的版本
(3.2)工作区不变,把暂存区和版本库回退到HEAD的前一个版本。
git reset HEAD^
git reset HEAD id
仅用HEAD指向的目录树充值暂存区,工作区不受影响。相当于把git add命令更新到暂存区的内容撤出暂存区。
上述就是一些主要过程,因为对git也不熟,所以可能有些方法比较笨,欢迎留言讨论!
本文参考了网上一些博文和资料,此处不一一列出
1. 合并两个仓库
合并的思路就是讲一个仓库添加进另一个仓库作为一个远程仓库,然后为这个远程仓库创建一个分支,然后将这个分支合并到主分支假设有一个仓库是我要保留的main,另外一个要添加进这个仓库为other,两个都pull下来了。两个仓库在同一个文件夹下,以下操作均在main文件夹中
(1)将other作为远程仓库添加到main中
git remote add RemoteRepo ../other/(2)将other的内容放到main中
git fetch RemoteRepo(3)为other的主分支在main中建立一个新分支
git checkout -b NewBranch RemoteRepo/main(git checkout命令加上-b参数表示创建并切换)
(4)切换回main的主分支
git checkout master(5)和并分支
git merge NewBranch(6)修改并提交新仓库的文件
上面是非常简单的一种方法,复杂的仓库还需要处理分支树2. 版本回退
因为我的愚蠢和无知,在合并仓库的过程中,误删除和提交了一些文件,不得已,使用版本回退进行找回(1)通常情况是工作区发生了误操作,需要用暂存区的文件来替换工作区的文件
git checkout .git checkout -- <file>
上面两条命令会用暂存区全部(第一个)或指定的文件(第二个)替换工作区的文件。
这个操作很危险,会清除工作区中未添加到暂存区的改动。
(此处可以看出,checkout有两种用法,checkout用于切换分支,checkout --用于撤销操作)
(2)在工作区发生了误操作,并且添加到了暂存区中,则需要利用HEAD指针回退
git reset HEAD <file>(3)愚蠢的我甚至都提交到版本库了.....
首先需要查看提交日志git log
git log --pretty=oneline
第一个是详细提交信息,第二个只有提交的版本号
然后回退版本,回退版本又分为两种
(3.1)把版本库、暂存区和工作区都回退到HEAD的前一个版本。
git reset --hard HEAD^回退到上一个版本(--hard 表示放弃所有本地改动)
git reset --hard HEAD^~100
退回上100个版本
git reset --hard id
回退到id号指示的版本
(3.2)工作区不变,把暂存区和版本库回退到HEAD的前一个版本。
git reset HEAD^git reset HEAD id
(3.3)只是撤出对暂存区的添加
git reset仅用HEAD指向的目录树充值暂存区,工作区不受影响。相当于把git add命令更新到暂存区的内容撤出暂存区。
上述就是一些主要过程,因为对git也不熟,所以可能有些方法比较笨,欢迎留言讨论!
本文参考了网上一些博文和资料,此处不一一列出
相关文章推荐
- 分级基金基本概念
- Objective-c下的深拷贝、浅拷贝以及NSCopying协议
- 关于python format()用法详解
- 查找算法初学一
- FZUOJ Problem 1607 Greedy division (求因子个数)
- 查找目录下的所有文件中是否含有某个字符串
- iOS在SDK中打开其他接入应用的解决方案
- 1053: [HAOI2007]反素数ant 打表
- Xargs用法详解
- 【SE】Week17 : 软件工程课程总结
- 无限极分类,传递一个父ID,返回所有子集
- Linux中DNS配置和应用
- linux网络编程之socket(六):利用recv和readn函数实现readline函数
- HDOJ 2138-How many prime numbers
- 195,UITableView实例,展现其属性或方法
- 大学毕业后坚持学习有什么用
- A. Bulbs
- 判断一个字符串是否回文
- Obejct-C 字典
- 调用 LoadLibraryEx 失败