快速签出(恢复工作区更改)大多数但不是所有文件的方法



tl;dr:如果我暂存一个文件,然后运行git checkout .,会发生什么

情况是这样的。我有一个现有的目录,我想将其与git repo的内容"合并"(并将其与repo集成)。

我将通过在.git目录上复制来实现这一点,这会移动repo,但不会移动文件,所以我可以进行理智的手动"合并"。

git status将显示大量"已删除"的文件。我想以一种快速的方式git checkout这些删除的文件,但我也想排除一些"修改"的文件,以保留它们当前的文件系统内容。

所以。。。我可以在所有要复制的文件上运行git checkout,但有更快的方法吗?

也许。。。

  1. 暂存(git add)我想保留的修改文件,然后运行git checkout .
  2. 使用我克隆到的原始位置(从中复制.git/目录,并使用文件资源管理器复制要替换的文件)

所以我想问题可以归结为"git签出会影响暂存文件吗"?


剩下的问题只是一个非常无关的背景情境解释。

所以我在一台windows机器上,我想集成我的Sublime Text 3用户包git repo,它是从OS X设置的。

所以我去github:查看我的升华文本3用户包回购

(MSYS bash shell)

cd ~
git clone https://github.com/my-st3-user-package
cp -r my-st3-user-package/.git ~/AppData/Roaming/Sublime Text 3/Packages/User

现在,在我的用户目录中,我可以看到所有丢失的文件,我必须对它们进行协调。

我这样做是为了Preferences.sublime-settings,现在看起来是这样的。

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    .gitignore
#       deleted:    Default (OSX).sublime-keymap
#       deleted:    GitGutter.sublime-settings
#       deleted:    Gitconfig.JSON-tmLanguage
#       deleted:    Gitconfig.tmLanguage
#       modified:   Package Control.sublime-settings
#       deleted:    README.md
#       deleted:    Shell-Unix-Generic.sublime-settings
#       deleted:    SublimeLinter.sublime-settings
#       deleted:    Tomorrow-Night-Eighties.tmTheme
#       deleted:    movemultiplelines.py
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Package Control.ca-bundle
#       Package Control.ca-list
#       Package Control.cache/
#       Package Control.last-run
no changes added to commit (use "git add" and/or "git commit -a")

我想把除了Package Control.sublime-settings之外的所有这些文件都带回来。

这是一个愚蠢的问题,因为我本可以像刚才那样测试它。

备选方案1的效果正是我所希望的。上演,然后结账。暂存文件保持不变。

最新更新