未跟踪文件 - 是否有交互模式处理它们?

时间:2013-04-11 21:16:19

标签: git

有时,某些文件出现在工作树上。 它们没有跟踪,

我们希望丢弃这些文件中的一些文件而不是将它们放在一起,但是其他文件我们可能想要将它们放置。

我的问题是: 是否存在某种交互命令,我们可以通过步骤选择我们要保留的文件以及我们要忽略的文件?

希望我的问题很明确。

2 个答案:

答案 0 :(得分:4)

您可以使用git add -i来交互式播放文件。

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       a
#       b
#       c
#       d
nothing added to commit but untracked files present (use "git add" to track)

$ git add -i
           staged     unstaged path


*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> a
  1: a
  2: b
  3: c
  4: d
Add untracked>> 2
  1: a
* 2: b
  3: c
  4: d
Add untracked>> 4
  1: a
* 2: b
  3: c
* 4: d
Add untracked>> 
added 2 paths

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> s
           staged     unstaged path
  1:        +0/-0      nothing b
  2:        +0/-0      nothing d

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> q
Bye.

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   b
#       new file:   d
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       a
#       c

虽然有点偏离主题我只是想添加这些信息:

git add -i比上述用例强大得多。例如,如果您只想在文件中添加部分更改,则可以使用patch模式。

我已经使用了补丁模式,当我意识到我想将单个文件中的更改分解为两个单独的提交时,我已经很多次了,但我不想手动创建该文件的副本,编辑原始,阶段,提交,并为下次提交再次执行相同操作。

在补丁模式下,git为您提供了将更改分解为更小的补丁并仅将这些补丁分级的选项。如果git没有自动给你最好的大块,你可以在编辑器提示中自己手动分解这些大块。

答案 1 :(得分:1)

您可以使用git add -i -A获取未跟踪文件的交互式提示。选择4: [a]dd untracked,然后按编号或快捷方式切换列表中文件的包含。

不确定“比较两个存储库”是什么意思。任何存储库都可以使用git fetch添加任何其他存储库的内容,然后将生成的修订(或者在工作存储库,已修改文件的情况下)与git diff进行比较。