У меня есть дерево git с множеством коммитов и множеством файлов. Теперь я хочу вернуть конкретные коммиты, которые касаются только файла. Для того, чтобы объяснить:Возвращение определенных коммитов из git
> git init
Initialized empty Git repository in /home/psankar/specific/.git/
> echo "File a" > a
> git add a ; git commit -m "File a"
[master (root-commit) 5267c21] File a
1 file changed, 1 insertion(+)
create mode 100644 a
> echo "File b" > b
> git add b; git commit -m "File b"
[master 7b560ae] File b
1 file changed, 1 insertion(+)
create mode 100644 b
> echo "File c" > c
> git add c; git commit -m "File c"
[master fd6c132] File c
1 file changed, 1 insertion(+)
create mode 100644 c
> echo "b and c modified" > b ; cp b c
> git commit -a -m "b and c modified"
[master 1d8b062] b and c modified
2 files changed, 2 insertions(+), 2 deletions(-)
> echo "a modified" > a
> git commit -a -m "a modified"
[master 5b7e0cd] a modified
1 file changed, 1 insertion(+), 1 deletion(-)
> echo "c modified" > c
> git commit -a -m "c modified"
[master b49eb8e] c modified
1 file changed, 1 insertion(+), 1 deletion(-)
> git log --pretty=oneline c
> git log --pretty=oneline c | cat
b49eb8e03af331bddf90342af7d076f831282bc9 c modified
1d8b062748f23d5b75a77f120930af6610b8ff98 b and c modified
fd6c13282ae887598d39bcd894c050878c53ccf1 File c
Теперь я хочу вернуться только два коммиты b49eb8 и 1d8b06 без обращения изменений в а. IOW возвращает только коммиты в файле (не возвращая другие промежуточные коммиты (которые могут быть тысячи в числе) в разных файлах) Как это возможно?
Использование 'git rebase -i' –
Cynede
'git show --stat -p COMMITID' даст вам быструю статистику подсчета строк и патч, показывающий точные изменения, выполненные этим фиксатором. Вооружившись этой информацией, вы можете решить, хотите ли вы «git revert COMMITID». Использование '-n' позволит вам оценить до фиксации или даже' git revert -abort' – stackunderflow