在主题分支中,我错误地复制了模型和迁移(以前在主分支中创建):
rails generate model User name:string email:string
bundle exec rake db:migrate
已创建重复模型但迁移失败,因为数据库已有users
表。按照how to discard git local branch changes?中的说明,我尝试使用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
会适合我吗?
答案 0 :(得分:4)
正如@HBHB已经正确地说:git reset --hard
只重置跟踪的文件。
但是,您也可以通过调用git clean -df
使用git删除未跟踪的文件。 -d
也会删除未跟踪的目录,并且必须提供-f
(强制),否则Git不会删除这些文件。
答案 1 :(得分:1)
git不会跟踪这些文件(请注意它们列在git status
输出中的“未跟踪文件”下)。 git reset --hard
删除git跟踪的所有文件中的更改。来自git reset --hard
的{{3}}:
重置索引和工作树。自提交以来对工作树中跟踪文件的任何更改都将被丢弃。
要摆脱它们,只需删除它们:
rm app/models/user.rb
rm db/migrate/
rm test/fixtures/users.yml
rm test/models/user_test.rb
答案 2 :(得分:1)
git clean -f -d
删除未跟踪的文件是最安全的选择。您还可以查看this answer
答案 3 :(得分:0)
我总是使用以下命令:
git reset --hard HEAD~1
和
rails git:(master)✗git reset --hard HEAD〜1 HEAD现在位于 45e2c462跳过Webpack的管道