如何完全放弃在主题分支上所做的更改

3
在一个主题分支中,我错误地复制了一个模型和迁移(之前在主分支中创建的):
rails generate model User name:string email:string 
bundle exec rake db:migrate

复制的模型已经创建,但是迁移失败,因为数据库已经有了一个users表。遵循如何放弃git本地分支更改?中的说明,我试图使用git reset --hard放弃所有未提交的更改,但git status仍然显示存在未跟踪的文件:

# Untracked files:
# (use "git add <file>..." to include in what will be committed)

    app/models/user.rb
    db/migrate/
    test/fixtures/users.yml
    test/models/user_test.rb

# nothing added to commit but untracked files present (use "git add" to track)

为什么git reset --hard会保留这些文件?我该如何安全地删除这些文件以完全重置主题分支到最后一次提交?rails destroy model User是否适合我?


尝试使用 git reset HEAD - huzefa biyawarwala
1
可能是重复的问题:如何从当前的Git分支中删除本地(未跟踪)文件? - Ashutosh Jindal
4个回答

4

正如@HBHB所说的那样:git reset --hard只重置已跟踪的文件。

但是,您还可以通过调用git clean -df来删除未跟踪的文件。-d也会删除未跟踪的目录,并且必须提供-f(强制)选项,否则Git不会删除文件。


感谢 @RajarshiDas :) - Tobias

1
这些文件没有被Git跟踪(注意它们在“未跟踪的文件”下列出,显示在git status输出中)。git reset --hard将删除Git跟踪的所有文件的更改。关于git reset --hard,请参见文档

重置索引和工作树。自提交以来在工作树中对已跟踪文件所做的任何更改都将被丢弃。

要摆脱它们,只需将其删除即可:

rm app/models/user.rb
rm db/migrate/
rm test/fixtures/users.yml
rm test/models/user_test.rb

1
git clean -f -d 

最安全的做法是删除未跟踪的文件。此外,您可以查看此答案

0

我总是使用这个命令:

git reset --hard HEAD~1

rails git:(master) ✗ git reset --hard HEAD~1 HEAD 现在已经回到 45e2c462 跳过webpack的流水线


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接