git fork之后,获取/提交主库的改动,git revert的使用

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即可。## 标题 ##

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值