git fork之后,获取/提交主库的改动,git revert的使用
2016-08-26 11:01
190 查看
git 命令行
1.cd 至目录2.git init
3.git remote add upstream 主流url的git地址
4.git fetch upstream
5.git merge upstream/epmPro //这个是获取主库到fork的库
6.git merge epmPro/upstream //这个是获取fork的库到主库
eclipse git界面操作
提交纪录数据到fork库与主库1.在当前fork库添加主库的git地址,
2.选择new remote,添加主库的git地址
3.添加之后会选择finish将会把你之前提交在fork库的记录提交到主库中,假如你没有在fork提交纪录,那么这个new remote的地址将会失败也不能提交纪录到主库,需要在改动后再次添加
获取主库别人提交的纪录
1.
2.选择你在上一次提交数据记录到主库时添加的git地址库,获取主库的改动纪录
3.选择资源源文件及目的文件库,点击finish,这样就会将数据捕获下来缓存到目的库
4.合并缓存纪录到本地库
这里remove tracking 选择主库,将主库的改动合并到本地
5,show history 就会看到纪录了
git revert
https://blog.fundebug.com/2018/01/24/git-rollback-tutorial/示例1
最简单的一个场景,就是撤销最近的1次commit:
git revert HEAD
最近1次commit是新增03.txt,撤销这个commit之后,test01分支就只剩下2个文件了:01.txt, 02.txt。
示例2
有时,可能需要撤销某个特定commit,比如,当我需要撤销第2个commit时,指定对应ID即可:
git revert 3821210392184432de18b596cee58ab7924e39f9
最近1次commit是新增02.txt,撤销这个commit之后,test02分支就只剩下2个文件了:01.txt, 03.txt。
由这个示例可知,使用git revert撤销commit时,仅仅针对所撤销的commit,与任何其他commit无关。
git reset:重置为特定commit
示例5
在示例3中,撤销了两个连续的commit,这样做等价于将代码重置为第1个commit的状态:仅有01.txt这1个文件。使用git revert命令有些麻烦,我们可以直接使用git reset命令来实现:
git reset –hard 55d3012564e94a39f6686c0e532c0459ddc41ec4
将仓库强制重置为第1个commit,这样test05分支就只剩下1个文件了:01.txt。git reset –hard与git revert效果看起来一样,但是不同点在于,前者直接删除了后面2个commit及其代码,没有保存commi历史,因此这个操作是不可逆的!使用时应该特别小心。
如果你的本地仓库与远程仓库在reset之前是同步过的,reset之后,两者的commit不一致,本地仓库的commit落后与远程仓库,这样会导致push失败:
git push
To git@github.com:Fundebug/git-rollback.git
! [rejected] test05 -> test05 (non-fast-forward)
error: failed to push some refs to ‘git@github.com:Fundebug/git-rollback.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.
这是需要使用–force选项,这样远程仓库会被强制覆盖:
git push –force
示例6
reset时使用–hard选项是一个很危险的操作,因为它把commit以及代码全删了,没法恢复。如果你只希望删除commit,而保留修改过的代码的话,可以使用–soft选项。
git reset –soft 55d3012564e94a39f6686c0e532c0459ddc41ec4
这时,后面2个commit也被删除了,当前commit为第1个commit。但是,02.txt与03.txt并没有被删除。
git status
On branch test06
Changes to be committed:
(use “git reset HEAD …” to unstage)
new file: 02.txt new file: 03.txt
这就意味着,当你的commit的代码有一些小问题时,可以重置commit,修改一下代码,如何重新commit即可。## 标题 ##
相关文章推荐
- Git使用基本方法(从远程服务器获取分支,提交修改)
- Git使用基本方法(从远程服务器获取分支,提交修改)
- 利用git钩子,使用python语言获取提交的文件列表
- [jQuery] form提交到iframe之后,获取iframe里面内容
- git 使用ssh 提交bitbucket
- 使用git reset之后,如何恢复删除掉的commit
- android git和repo的使用,获取android代码
- Android 使用三种方式获取网页(通过Post,Get进行表单的提交)
- mysql 存储过程中 limit之后使用分页变量,传入分页参数. 类似于微博游标分批次获取信息;问号参数类似于c#的string.format;问号占位符
- git 使用详解(5)-- get log 查看提交历史
- 使用GIT获取GoogleCode过程
- 使用git合并多个提交
- 使用GIT获取Mangos的最新代码
- git revert 撤销提交
- 一段用于编辑页面表单并使用ajax提交与无刷新获取的js段落
- 使用GIT工具获取android应用程序源代码
- 使用Git和Repo获取Android源码
- 使用母版页面后获取Form表单提交值
- git使用补丁方式进行软件代码提交
- git 使用详解(3)-- get log 查看提交历史