git эквивалент "svn -v status" - PullRequest
       12

git эквивалент "svn -v status"

7 голосов
/ 12 марта 2011

Я хочу знать список файлов, которые известны управлению версиями.

Я знаю, что в SVN вы можете сделать что-то вроде:

svn -v status

тогда вы получите список

"[rev # 1] [rev # 2] [создатель] [файл имя] "

rev # 1 - последняя ревизия с этим файлом, а rev # 2 - первая ревизия с этим файлом.

Этот список содержит все файлы, которые отслеживаются svn, кроме тех, которые имеют локальные изменения.

Интересно, как это сделать, используя GIT

Ответы [ 2 ]

4 голосов
/ 12 марта 2011

У вас есть это предложение для эквивалента статуса SVN с git:

git config alias.svn-status \!"\
{ \
git ls-files -o --directory -t ; \
git status | grep --color=never 'deleted:    ' | sed 's|^.*deleted:    ||' | sed 's|^|D |' ; \
git ls-files -m -s | awk '{print \$NF}' | sort -u | sed 's|^|M |' ; \
} \
| sort -k 2 \
| sed 's|^\\(.\\) *|\\1      |'"

Я подозреваю, git log --name-status упоминается Techism (в комментариях) в этом SO вопрос может сделать псевдоним короче.

Его вариант фактически основан на diff --name-status:

svn-status = "! git ls-files --exclude-per-directory=.gitignore --exclude-from=.git/info/exclude --exclude-from=$HOME/.gitignore --others -t | sed 's| |\t|'; git diff HEAD --name-status "
3 голосов
/ 12 марта 2011

git status

Показывает статус, очень похожий на команду svn status.

EG:

> $ git status
> # On branch master
> # Your branch is ahead of 'origin/master' by 2 commits.
> #
> # Changed but not updated:
> #   (use "git add/rm <file>..." to update what will be committed)
> #   (use "git checkout -- <file>..." to discard changes in working
> directory)
> #
> # modified:   Gemfile
> # modified:   Gemfile.lock
> # modified:   app/controllers/application_controller.rb
> # modified:   app/controllers/home_controller.rb
> # modified:   app/controllers/projects_controller.rb
> ...

Ради резервирования, повторяя ответ на этот похожий вопрос:

Список всех файлов, которые когда-либо существовали в репозитории Git

git log --pretty=format: --name-only --diff-filter=A | sort -

или

git log --pretty=format: --name-status | cut -f2- | sort -u
...