Git add only all new files, not modified files [duplicate]

寵の児 提交于 2019-11-27 04:28:04

问题


This question already has an answer here:

  • git: stage only new files 8 answers

Is there a way to only add new files and not add modified files with git? That is, files that are listed as untracked with git status.

Other than ofcourse adding each file separately.

It's not absolutely necessary to do this in my case, the real question for me is answered here: How to make git-diff and git log ignore new and deleted files?

That is, don't show diff on new files, so I'm asking this more because i couldn't find an answer to it anywhere.


回答1:


Maybe

git add $(git ls-files -o --exclude-standard)

git ls-files lets you list the files managed by git, filtered by some options. -o in this case filters it to only show "others (i.e. untracked files)"

The $(...) statement passes the return value of that command as an argument to git add.




回答2:


You can use short mode of git status (see man git-status(1)), which gives the following output:

Without short mode:

$ git status

...


# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README
#   application/libraries/Membres_exception.php
no changes added to commit (use "git add" and/or "git commit -a")

With short mode:

$ git status -s
 M application/models/membre_model.php
?? README
?? application/libraries/Membres_exception.php

Then using grep, awk and xarg, you can add the files where the first column is ??.

$ git status -s | grep '??' | awk '{ print $2 }' | xargs git add 

and see that it worked:

$ git status
# On branch new
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   README
#   new file:   application/libraries/Membres_exception.php


来源:https://stackoverflow.com/questions/15761890/git-add-only-all-new-files-not-modified-files

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!