2011-03-12 24 views
7

Quiero saber la lista de archivos conocidos por el control de versiones.git equivalente a "svn -v status"

sé que en el SVN, puede hacer algo como:

svn -v status 

continuación, se obtiene una lista de

"[rev # 1] [rev # 2] [creador] [ presentar nombre]"

rev # 1 es la última revisión que tiene este archivo y rev # 2 es la primera revisión que tiene este archivo.

Esta lista contiene todos los archivos que rastrea svn además de aquellos que tienen cambios locales.

me pregunto cómo hacer esto utilizando GIT

Respuesta

4

Hacéis h this proposition ave para un equivalente de svn status con 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  |'" 

sospecho git log --name-status mencionado por Techism (en los comentarios) en este SO question podría hacer que el alias más corto.

su variante se basa realmente en 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

git status

que muestra un estado muy parecido comando svn status.

Ejem:

> $ 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 
> ... 

Por razones de redundancia, repitiendo la respuesta de esta pregunta similar:

List all the files that ever existed in a Git repository

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

o

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

"SVN -v estado" muestra todos los archivos que son seguidos por SVN. Creo que el "estado de git" solo muestra los archivos que se cambian localmente. – Vicky

+0

O tal vez quieres git diff? – Techism

+0

En realidad: Este hilo responde a tu pregunta, creo ... http://stackoverflow.com/questions/543346/git-list-all-the-files-thatever -existed – Techism