有时,某些文件出现在工作树上。 它们没有跟踪,
我们希望丢弃这些文件中的一些文件而不是将它们放在一起,但是其他文件我们可能想要将它们放置。
我的问题是: 是否存在某种交互命令,我们可以通过步骤选择我们要保留的文件以及我们要忽略的文件?
希望我的问题很明确。
答案 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
进行比较。