Иногда Git может быть довольно утомительным, если есть много похожих имен файлов.Например:
# On branch master
# 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: FormRegion1.Designer.cs
# modified: FormRegion1.cs
# modified: FormRegion1.resx
# modified: OptionPage.Designer.cs
# modified: OptionPage.cs
# modified: OptionPage.resx
#
no changes added to commit (use "git add" and/or "git commit -a")
Я бы предпочел набрать git diff 1
вместо git diff FormRegion1.Designer.cs
(даже с завершением табуляции).В настоящее время я делаю что-то вроде этого:
git diff $( ~/gitstatn 1 )
, где ~/gitstatn
содержит:
git status -s | head -n$1 | tail -n1 | cut -c 4-
, что не лучше.
Как я могу напечатать что-то вродеgit add 3
или git diff 5
и означает git add FormRegion1.resx
или git diff OptionPage.cs
соответственно?
Я использую Cygwin в Windows.
.
Редактировать - согласно adymitruk Совет, я остановился на псевдониме gpick
к сценарию:
#!/usr/bin/bash
if [ -z $1 ]; then
echo 'no git command specified'
elif [ -z $2 ]; then
git $1
else
git $1 $( git ls-files -m | head -n$2 | tail -n1 )
fi
, что достаточно для моих нужд.