我有一个文件 foo.py。我对工作目录做了一些更改,但尚未暂存或提交任何更改。我知道我可以使用 git checkout foo.py 来摆脱这些变化。我还阅读了有关使用 git reset --hard HEAD 的信息,它实质上会重置您的工作目录、暂存区和提交历史记录以匹配最新的提交。
在我的情况下,我的更改仍在工作目录中,是否有任何理由更喜欢使用其中一个?
最佳答案
Is there any reason to prefer using one over the other in my case, where my changes are still in working directory?
不,因为他们会完成同样的事情。
Is there any reason to prefer using [
git checkout -- path/to/file] over [git reset --hard] in [general but not in my specific case]?
是的:这只会影响一个文件。如果你的习惯是git reset --hard撤消对一个文件的更改,并且您对其他 文件也有工作树和/或暂存更改,并且您 git reset --hard ,如果不手动重建这些更改,您可能会很不走运。
注意还有第三个结构:git checkout HEAD path/to/file .这个和没有HEAD的区别(用 -- 而不是 1)是 用 HEAD意味着首先将永久的、不可更改的提交中的文件版本复制到索引/暂存区,然后再复制到工作树。带有 -- 的那个表示将索引/暂存区中的文件版本复制到工作树中。
1使用--的原因是为了确保 Git 永远不会将文件名与其他任何东西混淆,比如分支名称。例如,假设您将文件命名为 master ,只是为了固执。那么,git checkout master 是做什么的?意思是?是否应该检查分支 master ,或提取文件 master ? --在git checkout -- master让 Git 和人类清楚地知道这意味着“提取文件 master”。
在任何时候,每个文件都有三个事件副本:
HEAD 中的一个;git status命令查看所有三个,比较 HEAD -vs-index 首先——这为 Git 提供“要提交的更改”列表——然后是 index-vs-work-tree 第二。第二个为 Git 提供“未暂存提交的更改”列表。
git add命令从工作树复制到索引中。
git checkout命令从 HEAD 复制到索引然后是工作树,或者只是从索引到工作树。所以有点复杂,有多种操作方式:
git checkout -- <em>path/to/file</em> :从索引复制到工作树。 HEAD 里有什么这里无所谓。 --通常是可选的,除非文件名看起来像分支名称(例如,名为 master 的文件)或选项(例如,名为 -f 的文件)。
git checkout HEAD -- <em>path/to/file</em> :来自 HEAD 的副本提交,索引,然后工作树。 HEAD 里有什么覆盖索引中的内容,然后覆盖工作树中的内容。 --通常是可选的,除非文件名看起来像一个选项(例如 -f )。
明智的做法是使用 --永远,就像一个好习惯。
git reset命令复杂(有多种操作方式)。
(这并不是说 git checkout 很简单:它也有很多操作模式,可能太多了。但我认为 git reset 至少要差一点。)
关于python - git reset --hard HEAD 与 git checkout <file>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800824/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。