如何在我的工作副本中排除非指数的变更?
当前回答
另一种方法来摆脱新的文件,比 git 清洁 -df 更具体(它将允许你摆脱一些文件不一定全部),是将新文件添加到指数,然后插入,然后放下插入。
这种技术是有用的,因为某种原因,你不能轻松地通过某种普通的机制(如rm)删除所有未追踪的文件。
其他回答
当你想将一个字符转移到另一个人时:
# add files
git add .
# diff all the changes to a file
git diff --staged > ~/mijn-fix.diff
# remove local changes
git reset && git checkout .
# (later you can re-apply the diff:)
git apply ~/mijn-fix.diff
[编辑] 如评论,可以命名 stashes. 好吧,如果你想分享你的 stash ;)
下面实际上只是一个解决方案,如果你正在与一个存储库的福克工作,在那里你经常同步(例如拖请求)与另一个复制。
我有一个类似的问题,也许不是相同的,我很遗憾地说我的解决方案不是理想的,但它最终是有效的。
我会经常有 git 状态消息如下(包含至少 2/4 文件):
$ git status
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2var.dats
# modified: doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2var.dats
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2Var.dats
# modified: doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2Var.dats
一个激动人心的眼睛会注意到,这些文件有双重的,这是一个单一的字母的情况下. 某种方式,我不知道什么导致我下这个路径开始(因为我没有工作这些文件自己从上流的repo),我已经转换了这些文件. 试试这个页面上列出的许多解决方案(和其他页面)似乎没有帮助。
当您输入 git 状态时(使用“git checkout -...”来删除工作目录的变更)显示。
上一篇:Git Checkout
如果所有的步骤文件实际上已经完成,那么分支可以简单地重新设置,例如从您的GUI,大约有三个鼠标点击:分支,重新设置,是的!
因此,我经常在实践中做的事情,以逆转不需要的地方变化,就是承诺所有的好事,然后重新设置分支。
如果好事是在单一的承诺中承诺,那么你可以使用“修改最后的承诺”将其带回被推翻或不推翻,如果你最终想承诺它有点不同。
这可能不是你正在寻找问题的技术解决方案,但我认为这是一个非常实用的解决方案. 它允许你选择性地排除未完成的变化,重新调整你不喜欢的变化,并保持你所做的变化。
因此,简而言之,我只是承诺,分支重新设置,并修改最后的承诺。
你有一个非常简单的 git 命令 git checkout.
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?