Automatically show status after git add
Asked Answered
git
C

4

13

My usual git workflow is

<make changes>
git add FILES
git status
git commit -m "some remarks"

where I need the git status just to check if I added the correct files.

Is there a way to tell git to automatically display the status after each git add?

Corollaceous answered 31/7, 2013 at 11:25 Comment(1)
You could probably create an alias that executes add first, and then status. E.g. git config --global alias.ad "!git add $1; git status", but I’m not sure if you can keep supporting all the add parameters that way.Raeraeann
H
15

When run with -v (verbose) option, git add outputs the name of files that were added:

» git add -v hello?
add 'hello1'
add 'hello2'
Hudgens answered 31/7, 2013 at 11:36 Comment(0)
C
13

You can use an alias:

[alias]
    gitadd = !sh -c 'git add -- "$@" && git status' --

make changes
$ git gitadd FILES
$ git commit -m "some remarks"

Since git aliases work from the repository root1, you could modify the alias to make it work from any other directory:

[alias]
    gitadd = !sh -c 'cd "$1" && shift && git add -- "$@" && git status' -- 

Now invoke it by saying

git gitadd $PWD file1 file2 ...

1: Note that shell commands will be executed from the top-level directory of a repository, which may not necessarily be the current directory.

Cantata answered 31/7, 2013 at 11:41 Comment(7)
it would be git gitadd with that alias, imhoOvercharge
@Cantata I added the above lines to ~/.gitconfig but when typing git gitadd somefile it says Nothing specified, nothing added. Maybe you wanted to say 'git add .'?Corollaceous
@Corollaceous That's odd. What if you say $* instead of $@ in the alias.Cantata
@Cantata Ooops, unfortunately it only works on the repository's root folder. i.e. git gitadd somedir/somefile works, but git gitadd somefile from inside somedirfails telling me fatal: pathspec 'somefile' did not match any filesCorollaceous
@Cantata What is even more strange, when doing git gitadd somedir/somefile from inside somedir, it works. Your solution seems to require filenames relative to the repository root.Corollaceous
@Cantata couldn't one tell the alias to cd to the place from which it was called before performing git add ...?Corollaceous
@Corollaceous Figured a workaround. Modify the alias to gitadd = !sh -c 'cd $1 && shift && git add -- "$@" && git status' -- and invoke it by saying git gitadd $PWD file1 file2 ....Cantata
P
3

Here's what I have using the answer at https://stackoverflow.com/a/26243454 and combining it with devnull's answer:

[alias]
    sadd = !sh -c 'cd -- ${GIT_PREFIX:-.} && git add -- "$@" && git status' --

This way you don't need to pass in the working directory manually.

Pas answered 6/12, 2018 at 15:47 Comment(0)
O
0

You can do it via creating an alias that executes add first and then status using git config commnad ..

Oberg answered 31/7, 2013 at 11:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.