我正在尝试恢复我在 GitHub 上的最新提交。我浏览过的所有信息都表明拉取请求中应该有一个恢复按钮,但我没有看到它,也找不到它。
无论如何,在 GitHub 上可以做到这一点吗?或者我可以使用一些 rebase 命令来完成终端操作吗?
我尝试更改 Git 的本机代码编辑器,但没有成功。现在,每当我尝试恢复提交时,都会收到以下错误:
hint: Waiting for your editor to close the file... notepad++.exe -wl1: notepad++.exe: command not found
error: There was a problem with the editor 'notepad++.exe -wl1'.
Please supply the message using either -m or -F option.
Run Code Online (Sandbox Code Playgroud)
我想知道如何重置或删除我所做的尝试修改。
如果一个 Pull 请求被合并(比如 PR3),并且在这几个 Pull 请求(比如 PR4、PR5 等)之上被合并,这些请求对先前合并的 Pull 请求 PR3 中的同一文件进行了更改,现在我想要恢复 Pull 请求 PR3,Git 不允许我自动执行此操作并给出此错误。
抱歉,此拉取请求无法自动还原。它可能已经被恢复,或者内容可能在合并后发生了变化。
我应该如何恢复拉取请求 PR3?
在尝试恢复不是我的分支上最新的提交时,我遇到了以下消息:
error: commit fce9354*** is a merge but no -m option was given.
fatal: revert failed
Run Code Online (Sandbox Code Playgroud)
这是git log尝试恢复之前的分支:
C:\git\manager [feature/revert]> gl -n15 --oneline
a81945f (HEAD -> feature/revert, origin/develop, develop) Merge branch 'develop' of https://xyz/manager into develop
60cf3e5 Merge branch '***' into develop
b94fc85 Merge branch '***' into develop
9d81bc6 (origin/***) Accept
48b318d (origin/***) Accept
6f57592 ***
d823f1f (origin/***) removed
854887b *** merged
0ebef20 added
fce9354 Merged PR 12345: Add
90f2b0f (origin/***) Add
c859184 Merge branch '***' into develop …Run Code Online (Sandbox Code Playgroud) 在尝试恢复我对.emacs.d文件夹的存储库的提交时,我收到以下消息:
haziz@haziz> git revert 7fe3f
error: could not revert 7fe3f0b... .emacs.d contents from ubuntu hp 15
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Run Code Online (Sandbox Code Playgroud)
我想要做的是反转我对init.el文件所做的更改,然后执行另一个我想要撤消的提交.我更愿意还原而不是重置 - 硬,因为据我所知,后者完全删除了最近的提交.我想创建一个新的提交,以便我可以"恢复"恢复.
换句话说,我想要做的就是这个
Git Commits [A]...[B]
Run Code Online (Sandbox Code Playgroud)
将被还原为
Git Commits [A]...[B]...[A']
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
编辑:我尝试做尽可能最好的差异/合并然后另一个提交,但它仍然给我这个新的错误消息:
haziz@haziz> git revert 7fe3f0ba3182b591f11c0b59e006dc6c990b7470
fatal: Your local changes would be overwritten by revert.
Please, commit your changes or stash them to proceed.
Run Code Online (Sandbox Code Playgroud)
如何在不诉诸.gitigore文件的情况下告诉它忽略(但不删除)未分段文件.我坦率地不关心大多数emacs临时文件等非分页文件.
我正在尝试恢复一个提交,修改了一个已经重命名的文件.
修改过的文件曾经被调用bin/internal/call_parser.rb,并且当前被调用lib/call_parser.rb,并且在尝试进行恢复后我处于我的状态
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 16 commits.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: other/unrelated/file
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# deleted by us: bin/internal/call_parser.rb
#
Run Code Online (Sandbox Code Playgroud)
据我所知,当前版本的lib/call_parser.rb和文件bin/internal/call_parser.br的当时版本应该足够相似,以至于git可以检测到共享内容(我听说过git的工作原理)关于文件内容,而不是文件名).如何让git更加努力地工作以检测重命名,从而恢复到lib/call_parser.rb中的内容?
我检查了'production_branch',然后合并了'master_branch for_production_branch',发生了大规模的冲突.'production_branch'已部署到生产中.但冲突需要更有经验的眼光.我需要在生产分支'production_branch'上获得一个关键补丁(我将手工完成),以便我可以部署.
git co 'production_branch' # =>
lib/tasks/foobar.rake: needs merge
vendor/plugins/acts_as_syncable/lib/active_record/whatever.rb: needs merge
error: you need to resolve your current index first
Run Code Online (Sandbox Code Playgroud)
和
git co 'master_branch for_production_branch'
lib/tasks/foobar.rake: needs merge
vendor/plugins/acts_as_syncable/lib/active_record/whatever.rb: needs merge
error: you need to resolve your current index first
Run Code Online (Sandbox Code Playgroud)
如何在工作目录中返回'production_branch',这样我就可以部署一个简单的关键修复程序.
我需要使用这样的单个提交来恢复整个分支:
[topic]
o---o---o-------X
/
| [master]
---o---o---o
Run Code Online (Sandbox Code Playgroud)
提交X必须具有类似a master~2(主题分支的原点)的状态
我的解决方案是:
git rev-list --reverse master..topic | while read SHA; do
git revert -n ${SHA}
done
git commit -m "Reverted topic branch"
Run Code Online (Sandbox Code Playgroud)
有更好(更短)的解决方案吗?
这个目的
想象一下,我有一种几乎基于git-flow的回购.
[release-3]
o---o---o---o
/ \ [fix-for-rc-3]
/ o---o---o
/
| [development]
---o---o---o
Run Code Online (Sandbox Code Playgroud)
我有一个development分支,即将到来的release-3分支和一个所谓的hot-fix-feature-for-rc-3分支.在这个分支中,我正在做一些丑陋的黑客来完成我的发布,但我根本不想要它,development因为更多"正确"的解决方案已经落在这里,但release-3由于某种原因无法应用于分支.所以,我必须做以下事情......
[release-3]
o---o---o---o--------------------M
/ \ [fix-for-rc-3] /
/ o---o---o----------------X
/ \
| \[development]
---o---o---o---------------------------------D
Run Code Online (Sandbox Code Playgroud)
我必须合并fix-for-rc-3到release-3(点M),然后做一个"revert-all-this-shit"提交(点X)并合并它development(点D)所以这段代码永远不会到达这里,即使那时整个release-3分支也被合并到 …
恢复我的代码后,Git在命令栏中显示(master | REVERTING)。我该如何摆脱呢?
有没有一种方法可以还原到某个提交而不更改远程历史记录,基本上像git revert一样撤消对该提交所做的所有更改到一个新提交中?
例如-我有3次提交,提交A-> B-> C,我的头目前在CI上,现在想创建另一个提交D,它将具有与A相同的代码,以便我可以将该提交推送到远程分支而无需更改历史。