除了分支master
之外,我还创建了另一个分支develop
。
现在,我对develop
进行了一些提交,并在测试服务器上做了pull origin develop
而不是pull origin master
。
是否可以返回测试服务器上的master
分支并还原我在pull origin develop
中获取的所有文件?
我已经尝试过git checkout master
,然后尝试过git pull origin master
,但是它说:
* branch master -> FETCH_HEAD
Already up-to-date.
并且没有还原来自develop
的文件。
$ git branch -av
develop 3e22f0c some-commit
* master 3e22f0c [ahead 6] some-commit
remotes/origin/HEAD -> origin/master
remotes/origin/develop 3e22f0c some-commit
remotes/origin/master 86198f0 some-commit
答案 0 :(得分:1)
当您在与您当前签出的分支不同的分支上执行git pull origin <branch_name>
时,git将执行两项操作:它将执行1.)从remote获取最新版本,以及2.)将其合并到分支中您已签出。
从本质上讲,这只会导致您想要撤消的额外提交。有两种方法可以做到这一点:
1。)对上一次提交进行硬重置:git reset --hard HEAD~¹
2.)硬重置为远程跟踪分支git reset origin/master
的HEAD
3.)可以使用git checkout -B master origin/master
进行相同的硬重置
4.)使用git revert -m 1 HEAD
还原合并提交(这不是一个好选择,因为它会在您的日志中导致两个额外的提交)