我有一个repo,有两个文件,据说我在本地更改.
所以我坚持这个:
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: dir1/foo.aspx
# modified: dir2/foo.aspx
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
做了git diff说整个文件内容已经改变了,即使从眼球看起来似乎是不真实的(似乎有差异的共同行范围似乎没有看到).
有趣的是我不记得在本地更改这些文件.此仓库与一个远程仓库(私人,GitHub.com,FWIW)一起使用.
无论我尝试过什么,我都不能放弃这些局部变化.我尝试了所有:
$ git checkout -- .
$ git checkout -f
$ git checkout -- dir1/checkout_receipt.aspx
$ git reset …Run Code Online (Sandbox Code Playgroud) 情况:
现在我们有三种不同的状态.HEAD的状态,索引的状态和工作树的状态.撤消工作树中的更改以使其与索引的状态匹配的命令是什么?
如何使用补丁模式执行git add但忽略空格更改.
用例适用于您重新格式化文件并对其进行更改的情况.我想首先单独提交实际代码更改(如git diff -w path所示),然后将重新格式化提交为单独的提交.
我以前能够通过执行"Discard"功能来撤消SourceTree的更改,该功能在引擎盖下生成此命令:
git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q HEAD -- myproj.csproj
git -c diff.mnemonicprefix=false -c core.quotepath=false checkout HEAD -- myproj.csproj
Run Code Online (Sandbox Code Playgroud)
突然间这不起作用.我做丢弃,没有错误发生,重新审视视图,但文件仍然"修改".然后我尝试在命令行中使用以下相同的结果:
c:\myproject> git reset HEAD
Unstaged changes after reset:
M myproj.csproj
Run Code Online (Sandbox Code Playgroud)
为什么它仍然被列为未分阶段的变化?
我已经验证该文件确实可写(没有进程持有锁)
更新
git checkout 也不起作用:
C:\myproject>git checkout myproj.csproj
C:\myproject>git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myproj.csproj
# …Run Code Online (Sandbox Code Playgroud) 是否有命令/选项/过滤器来丢弃所有修改后的文件的更改(通过结帐),这些文件的更改只影响空白?
或者,仅暂存具有非空白更改的文件(包括暂存其空格更改)将没有问题.
我已经看到许多不同的方法可以使用Git丢弃更改/恢复到之前的提交.我通常可以找出哪些适用于我的情况,但在这个过程中我对不同的方法感到很困惑.最近我试图撤消一些文件重命名,无论我多么努力地尝试git checkout旧版本的文件,我仍然无法恢复旧文件.
我正在寻找澄清使用哪种方法和原因.以下是我对一些方法的理解.我意识到答案可能非常具有上下文性,但我想尝试找出哪些上下文需要哪种方法.
1)git checkout -- .
2)git stash save --keep-index接下来git stash drop
3)git reset --hard
这是我目前对我的选择的理解.你对我的解释有什么改变吗?我也不确定何时使用git revert代替上述命令.
来源帖子:
可能重复:
你如何丢弃git中的非分段更改?
我知道当我git add跟踪内容到存储库时,git复制/更新其对象存储的内容.如果我git add再次连续更改我的内容,并且我对所有这些更改感到遗憾,并且我希望将索引中的最后一个快照恢复到我的工作副本,我该怎么办?
我不小心从我当地的git repo中删除了一些文件.
我没有把这个改变推到遥控器上.
有没有一种简单的方法可以从遥控器上取回这些文件?
通常我会做一个,git clone但似乎应该有一个更好的方法.
我是git的新手.我有来自远程的结帐文件.我不得不从git repo中删除一些文件.git rm我发出了unix rm -rf folder命令,而不是执行命令.我需要还原delete命令然后执行git rm命令.如何恢复到最新的代码?
注意:我还没有提交暂存文件.出来的git status是以下格式删除的文件列表:
# deleted: i18n/angular-locale_sl.js
# deleted: i18n/angular-locale_in.js
Run Code Online (Sandbox Code Playgroud) 一两个星期前,我拿了一些我用一个简单的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 ×2
branch ×1
git-checkout ×1
git-remote ×1
git-rm ×1
git-stage ×1
git-stash ×1
github ×1
patch ×1
repository ×1
revert ×1
rollback ×1
whitespace ×1