我刚刚开始在新存储库中索引文件。我跑git add .
并添加了所有文件。推完它们后,我注意到一个钩子没有工作。我想再次git add .
再次推送相同的文件。但显然git add .
没有添加任何新内容。将索引重置为空的正确方法是什么,以便再次添加所有内容?
答案 0 :(得分:3)
如果您的目标是重新运行git post-commit hook,只需添加一些小提交(在README中更新缩进或其他内容)并再次推送到repo。
答案 1 :(得分:2)
您可以简单地强制推送上一次提交(如果它不是根提交):
git push origin +master^:master
这会将远程存储库中的master移回一次(+
用于允许非快进更新)。这将使用您之前的提交运行您的提交钩子;如果您不希望在此操作期间禁用挂钩。
现在,只需再次推送提交,它应该在不工作时使用相同的更改集再次运行您的提交挂钩(在add .
之后):
git push origin master
答案 2 :(得分:1)
您可以使用git reset HEAD~
将当前头重置为上一次提交,然后重新添加文件并提交。
这将导致您的分支偏离远程;然后,您需要git push -f
用您的新分支覆盖远程分支。
答案 3 :(得分:0)
执行git add
时,文件会添加到git跟踪中。当您可以再次修改并提交它们(然后推送)时,无需重新添加这些文件。如果您希望重新添加,理论上可以git rm
将它们放回仓库中,进行更改然后再次执行添加。您还可以将repo重置为先前的提交,但这两个似乎都是不必要的。
答案 4 :(得分:0)
你可以在下面复制你正在做的事情(我这样说是因为提交可能依赖于添加的文件等,所以对另一个文件进行简单的更改并推送可能不起作用):
git reset HEAD~
git add .
git commit -m "message"
git push -f origin master
答案 5 :(得分:-1)
这是一个简单易懂的解决方案:
修改您之前的提交
git commit --amend
用力推动它
git push -f