如何完全放弃对主题分支所做的更改
How to completely discard changes made on a topic branch
在一个主题分支中,我错误地复制了一个模型和一个迁移(之前在 master 分支中创建):
rails generate model User name:string email:string
bundle exec rake db:migrate
创建了重复模型但迁移失败,因为数据库已经有一个 users
table。按照 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
适合我吗?
这些文件未被 git 跟踪(请注意它们在 git status
输出中的 "Untracked files" 下列出)。 git reset --hard
删除 git 跟踪的所有文件中的更改。从 documentation 到 git reset --hard
:
Resets the index and working tree. Any changes to tracked files in the working tree since commit are discarded.
要删除它们,只需删除它们:
rm app/models/user.rb
rm db/migrate/
rm test/fixtures/users.yml
rm test/models/user_test.rb
git clean -f -d
删除未跟踪的文件是最安全的选择。此外,您可以查看 this answer
正如@HBHB 所说:git reset --hard
重置刚刚跟踪的文件。
但是您也可以通过调用 git clean -df
使用 git 删除未跟踪的文件。 -d
也会删除未跟踪的目录,必须提供 -f
(强制),否则 Git 不会删除文件。
我总是使用这个命令:
git reset --hard HEAD~1
和
rails git:(master) ✗ git reset --hard HEAD~1 HEAD is now at
45e2c462 Skip the pipeline for webpack
在一个主题分支中,我错误地复制了一个模型和一个迁移(之前在 master 分支中创建):
rails generate model User name:string email:string
bundle exec rake db:migrate
创建了重复模型但迁移失败,因为数据库已经有一个 users
table。按照 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
适合我吗?
这些文件未被 git 跟踪(请注意它们在 git status
输出中的 "Untracked files" 下列出)。 git reset --hard
删除 git 跟踪的所有文件中的更改。从 documentation 到 git reset --hard
:
Resets the index and working tree. Any changes to tracked files in the working tree since commit are discarded.
要删除它们,只需删除它们:
rm app/models/user.rb
rm db/migrate/
rm test/fixtures/users.yml
rm test/models/user_test.rb
git clean -f -d
删除未跟踪的文件是最安全的选择。此外,您可以查看 this answer
正如@HBHB 所说:git reset --hard
重置刚刚跟踪的文件。
但是您也可以通过调用 git clean -df
使用 git 删除未跟踪的文件。 -d
也会删除未跟踪的目录,必须提供 -f
(强制),否则 Git 不会删除文件。
我总是使用这个命令:
git reset --hard HEAD~1
和
rails git:(master) ✗ git reset --hard HEAD~1 HEAD is now at 45e2c462 Skip the pipeline for webpack