您的位置:首页 > 其它

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 fork remote merge revert