Git додати всі файли, змінені, видалені та не відстежені?


256

Чи є спосіб додати всі файли, незалежно від того, що ви робите для них, будь то видалення, відслідковування тощо? як для вчинення. Я просто не хочу мати git addчи git rmвсі свої файли кожен раз, коли я виконую ці функції, особливо коли я працюю над великим продуктом.


Відповіді:


307

Спробуйте:

git add -A

Попередження: Починаючи з git 2.0 (середина 2013 року), це завжди створюватиме файли для всього робочого дерева .
Якщо ви хочете виставити файли під поточний шлях вашого робочого дерева, вам потрібно скористатися:

git add -A .

Також дивіться: Різниця git add -Aтаgit add .


це не спрацювало для мене ... як я можу показати свій термінальний вхід-вихід у цій дискусії? скопіювати і вставити мій термінальний вихід як відповідь на це обговорення?
Ракіб

ось проблема, з якою я стикаюсь - stackoverflow.com/q/7726131/636762 - ласкаво допоможіть мені в цьому, будь ласка
Ракіб

Це також не може працювати, якщо ваша версія git стара. Я запускав скрипт на сервері, на якому працював git 1.5.2.5. git add -A не працює. Зі сценарію повідомлення про помилку не надходило. Тільки з командного рядка я виявив, що -A не був законним варіантом додавання.
однойменний

але чому мені потрібно додавати файли кожного разу, коли я хочу взяти на себе зобов’язання !? Щоразу, коли я вносив зміни до файлів, мені потрібно було їх додавати ..
Фраде

3
Саме так працює Git. Ви повинні додати зміни до місця постановки, перш ніж зробити це. Наприклад, ви можете додавати до файлу лише деякі файли та надавати коментарі до нього, а не всі файли постійно. Ось зручне пояснення того, що це робить і чому: gitready.com/beginner/2009/01/18/the-staging-area.html
Кіланаш

75

Спробуйте

git add -u

" u" Опція означає оновлення. Це оновить репо і фактично видалить файли з репо, які ви видалили в локальній копії.

git add -u [filename]

поетапно видалити лише один файл. Після натискання файл більше не буде в репо.

Крім того,

git add -A .

еквівалентно

git add .

git add -u .

Зверніть увагу на додаткове "." на git add -Aіgit add -u


Попередження: Починаючи з git 2.0 (середина 2013 року), це завжди буде створюватиме файли для всього робочого дерева .
Якщо ви хочете виставити файли під поточний шлях вашого робочого дерева, вам потрібно скористатися:

git add -A .

Також дивіться: Різниця git add -Aтаgit add .


42

Наступна відповідь стосується лише версії 1.x Git, але версії Git 2.x.

Ви хочете git add -A:

git add -A етапи Усі;

git add . етапи нові та модифіковані, без видалених;

git add -u етапи змінені та видалені, без нових.


Зауважте, що вищесказане стосується лише Git 1.x. Для git версії 2.x, git add -Aеквівалентна git add .. Дивіться тут, щоб отримати більше дискусій.
jdhao

27

git add --all або git add -A або git add -A . Етапи Усі

git add . Етапи нові та змінені, але без видалених

git add -u Етапи змінені та видалені, але без нових

git commit -aЗначить git add -uІgit commit -m "message"

Після написання цієї команди виконайте наступні дії: -

  1. натиснути i
  2. написати своє повідомлення
  3. натиснути esc
  4. натиснути :wq
  5. натиснути enter

git add <list of files> додати конкретний файл

git add *.txt додайте всі файли txt у поточний каталог

git add docs/*/txt додайте всі файли txt у каталог документів

git add docs/ додати всі файли в каталог документів

git add "*.txt"або git add '*.txt'додати всі файли у весь проект


12

Я не впевнений, чи додасть він видалені файли, але git add .з кореня додасть усі незафіксовані файли.


дивіться мою відповідь про те, як додати видалені файли
Метт Кнайзер

5

Це моя альтернатива (у будь-якому басі):

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

Для скидання

$ git status -s|awk '{ print $2 }'|xargs git reset HEAD

5

Я автор проекту G2, доброзичливого оточення для любителя командного рядка git.
Отримайте проект від github - G2 https://github.com/orefalo/g2

У ньому є безліч зручних команд, одна з яких саме те, що ви шукаєте: freeze

freeze - заморозити всі файли у сховищі (доповнення, видалення, модифікації) до області інсценізації, таким чином інсценуючи цей вміст для включення до наступного комітету. Також прийняти певний шлях як параметр


5

Для нової версії Git.

Я спробував, git add -Aі це підказало,

попередження: поведінка 'git add --all (або -A)' без аргументу шляху з підкаталогу дерева зміниться в Git 2.0 і більше не повинна використовуватися. Щоб додати вміст для всього дерева, запустіть:

git add --all: / (або git add -A: /)

Щоб обмежити команду поточним каталогом, запустіть:

git add - всі. (або git add -A.)

З поточною версією Git команда обмежена поточним каталогом.


Тоді я спробував нижче, який працював .

git add --all :/

3

З документації Git, починаючи з версії 2.0:

Щоб додати вміст для всього дерева, запустіть:

git add --all :/

або

git add -A :/

Щоб обмежити команду поточним каталогом, запустіть:

git add --all .

або

git add -A .

2

Я використовую наступний рядок, щоб додати для постановки всіх змінених та новостворених файлів, за винятком перелічених у .gitignore:

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

(синтаксис $ () призначений для оболонки bash). Я здогадуюсь, що параметр командного рядка -mod повинен також додавати видалені файли ... Або, якщо у вас є імена файлів із вбудованими заготовками, наступний однокласник повинен зробити фокус:

git ls-files -z --deleted --modified --others --exclude-standard | xargs -0 git add
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.