我只是克隆了一个git存储库,并签出了一个分支。我对它进行了修改,然后决定删除所有局部更改,因为我想要原始副本。
简而言之,我必须执行以下两个命令来删除本地更改
git checkout .
git clean -f
我的问题是,
(1)这是去除局部变化的正确方法吗,否则请告诉我正确的方法。
(2)我们什么时候使用git重置——即使没有这个命令,我也能重置
谢谢
*解决方案:重要修改:3月26日:* 用git专用术语替换了许多模糊的术语 (跟踪/无足迹的/策划/ unstaged]
当我们进行本地更改时,只能有三类文件:
1型。阶段性跟踪文件 2型。未分级跟踪文件 类型3。unstaging UnTracked files,又名UnTracked files
staging -那些被移动到staging区域/添加到索引的数据 跟踪-修改文件 UnTracked -新文件。总是unstaged。如果是阶段性的,那就意味着他们被跟踪了。
每个命令的作用:
Git结帐。-仅删除未分期的跟踪文件[类型2] git clean -f -删除unstage UnTracked文件[Type 3] git reset——hard -只删除阶段性跟踪和非阶段性跟踪文件[类型1,类型2] git stash -u删除所有更改[类型1,类型2,类型3]
结论:
很明显,我们可以用任何一个
(1) combination of `git clean -f` and `git reset --hard`
OR
(2) `git stash -u`
达到预期的结果。
注意:Stashing,这个词的意思是“将(某物)安全秘密地存放在指定的地方”。这总是可以检索使用git stash流行。 因此,在上述两个选项中做出选择是开发者的决定。
谢谢克里斯托夫和弗雷德里克·舍宁。
编辑:03/27
我认为值得注意的是get clean -f
Git clean -f
没有回头路了。使用-n或——dry-run预览将造成的损害。
如果你也想删除目录,运行git clean -f -d
如果你只想删除被忽略的文件,运行git clean -f -X
如果你想删除被忽略的文件以及非被忽略的文件,运行git clean -f -x
参考:更多关于git清洁:如何从当前git工作树中删除本地(未跟踪)文件?
编辑:05/20/15
丢弃该分支上的所有本地提交[删除本地提交]
为了丢弃此分支上的所有本地提交,使本地分支相同 到这个分支的“上游”,只需运行git reset——hard @{u}
参考:http://sethrobertson.github.io/GitFixUm/fixup.html
或者做git重置-hard origin/master[如果本地分支是master]
注意:06/12/2015 这不是另一个被标记为重复的SO问题的重复。这个问题涉及如何删除本地GIT更改[删除添加的文件,删除添加到现有文件的更改等各种方法;在其他SO线程中,只有地址如何删除本地提交。如果您添加了一个文件,并且您想单独删除它,那么其他SO线程不会讨论它。因此这不是另一个的复制品]
编辑:06/23/15
如何恢复已推送到远程存储库的提交?
$ git revert ab12cd15
编辑:09/01/2015
从本地分支和远程分支删除之前的提交
案例:您刚刚向本地分支提交了一个更改,并立即推送到远程分支, 突然意识到,哦不!我不需要这种改变。现在做什么?
git reset——hard HEAD~1[用于删除本地分支的提交]
git push origin HEAD——force[两个命令都必须执行。用于从远程分支删除]
什么分支?它是当前签出的分支。
编辑09/08/2015 -删除本地git合并:
我在主分支和合并的主分支与一个新的工作分支阶段2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
问:如何摆脱这个合并? 尝试git reset -hard和git clean -d -f 两者都没有成功。
唯一有效的方法是以下任何一种:
$ git reset --hard origin/master
or
$ git reset --hard HEAD~8
or
$ git reset -hard 9a88396f51e2a068bb7 [sha提交代码-这是在所有合并提交发生之前出现的代码]