我见过如下命令:
git reset e542 -- readme.txt
Run Code Online (Sandbox Code Playgroud)
我理解这个命令将提交e542中文件readme.txt的内容放入索引中.但--那里有什么选择呢?
git reset手册页将它列为前两个表单的可选项,但我找不到它的含义.
git reset [-q] [<commit>] [--] <paths>…
git reset (--patch | -p) [<commit>] [--] [<paths>…]
Run Code Online (Sandbox Code Playgroud) 我有一个有四个提交的回购:
$ git log --oneline --decorate
6c35831 (HEAD, master) C4
974073b C3
e27b22c C2
9f2d694 C1
Run Code Online (Sandbox Code Playgroud)
我reset -- soft去C2提交,现在我有一个像这样的回购:
$ git reset e27b22c --soft
$ git log --oneline --decorate
e27b22c (HEAD, master) C2
9f2d694 C1
Run Code Online (Sandbox Code Playgroud)
现在我添加一个额外的提交,所以日志看起来像这样:
$ git log --oneline --decorate
545fa99 (HEAD, master) C5
e27b22c C2
9f2d694 C1
Run Code Online (Sandbox Code Playgroud)
发生了什么事提交C3和C4?我没有删除它们,所以我认为它们仍在那里,C3我的父母仍在C2.
在egit git eclipse插件中,我知道我可以通过右键单击它并选择Replace With> HEAD Revision来"重置"单个文件.在git index中用HEAD修订版替换为File有什么区别?
我在索引中添加了一些文件但是后来我用它删除了它们git reset --hard.我该如何恢复它们?这是发生的事情:
git add .git reset --hard HEAD^- 很明显,所有文件都被删除了git reflog找到我离开的地方git reflog ______回到上一次提交.git reset HEAD取消提交(我应该最初做的)但是我提交后添加的文件(见上文)仍然没有.如何获取这些文件?
我已经看到许多不同的方法可以使用Git丢弃更改/恢复到之前的提交.我通常可以找出哪些适用于我的情况,但在这个过程中我对不同的方法感到很困惑.最近我试图撤消一些文件重命名,无论我多么努力地尝试git checkout旧版本的文件,我仍然无法恢复旧文件.
我正在寻找澄清使用哪种方法和原因.以下是我对一些方法的理解.我意识到答案可能非常具有上下文性,但我想尝试找出哪些上下文需要哪种方法.
1)git checkout -- .
2)git stash save --keep-index接下来git stash drop
3)git reset --hard
这是我目前对我的选择的理解.你对我的解释有什么改变吗?我也不确定何时使用git revert代替上述命令.
来源帖子:
有没有办法回滚最后一次提交并将其放入一个单独的分支以供以后测试?我做了一些我不想完全抛弃的更改,我只想将它们放在另一个分支中进行进一步测试.
谁能帮我这个?
我在Stackoverflow /其他地方尝试了很多链接,以正确理解其行为
git reset --hard option
我知道:
origin,则在最近的提交中完成重置origin我不明白的是以下值:
originHEADorigin/masterorigin/branch所有似乎都有相同的行为,即他们指向最新的提交master.
请解释上面提供的所有4值选项的重要性.
我还想知道我是否在特定分支上如何重置为该分支上的最后一次提交?例如v1.2,如果我在,origin/v1.2仍然会带我到最新的提交master.
我知道这类问题有很多重复,但我想开一个新问题,因为我没有在所有其他问题中找到解释我想要的最佳方法.
我知道我可以通过以下方式恢复并保持历史:
git reset --soft c14809fa
Run Code Online (Sandbox Code Playgroud)
我想恢复development分支并将历史记录保存在不同的分支上.
如果我development在恢复提交之前将其签出到新分支 - 例如
git checkout -b beforeRevert
Run Code Online (Sandbox Code Playgroud)
比我将结账回到开发分支并进行启示(因为我想继续处理我已经恢复的提交数据)
另一个分支,beforeRevert分支,将保留将在某一天再次使用的"恢复前"的所有历史和数据,但不会包含在当前development分支中?或者development分支上的恢复会以某种方式影响beforeRevert分支?
我有一些文件曾经在 git 存储库中,但后来被忽略了。(主要是配置文件)但是,当我运行时git reset --hard,这些忽略文件上的更改也会重置,我确信 head 版本已经忽略了这些文件。
这是正常的吗?有没有办法git reset --hard忽略被忽略文件的更改?
一两个星期前,我拿了一些我用一个简单的find |sed|tar|xz|gpgbash 脚本存档的文件,把它们全部解压,然后把它们的内容放在一个 git repo 中,提交,把下一个存档内容放在 repo 中,提交(冲洗并重复)为了有一个更好的系统。
所有文件都是在我的两台计算机中的一台上编辑的,都使用 Arch Linux,在 TeXstudio 或 Vim 中。
我试图签出一个旧版本,但它翻了出来——它不会让我因为更改非常出色。我尝试了所有我知道的方法,然后去谷歌寻找我不知道的东西。
关于这个主题还有许多其他问题。不幸的是,他们的回答对我没有帮助。为了完成,我将列出问题。
$ git status
在分支 master 上
没有为提交而暂存的更改:(
使用“git add ...”更新将提交的内容)
(使用“git checkout -- ...”放弃工作目录中的更改)修改:Arcs/arc1.tex
修改:Arcs/arc2.tex
修改:Arcs/frontmatter.tex未向提交添加任何更改(使用“git add”和/或“git commit -a”)
另外,所以人们不需要看下面,我已经做了显而易见的事情。
git reset --hard
git -a commit
git stash
git pull
Run Code Online (Sandbox Code Playgroud)
以及从索引中删除所有内容并将其添加回来。
我不在 Windows 上。此外,这应该与行尾有关,因为我是唯一的用户。没有理由出现奇怪的行尾。
git reset --hard HEAD (among other possibilities)
Run Code Online (Sandbox Code Playgroud)
git stash
git stash drop
Run Code Online (Sandbox Code Playgroud)
git config core.autocrlf input
git rm --cached -r …Run Code Online (Sandbox Code Playgroud) git ×10
git-reset ×10
git-commit ×3
git-branch ×2
branch ×1
eclipse ×1
egit ×1
git-add ×1
git-checkout ×1
git-reflog ×1
git-stash ×1
github ×1
rollback ×1