Как да покажем направените промени?

Направям няколко промени; Как мога да видя разликата между всички файлове, които са били доставени за следващия коммит? Знам статуса на git , но бих искал да видя действителните различия - а не само имената на файловете, които са зададени.

Видях страницата за мъже на git -diff (1)

git diff [--options] [-] [...]

Този формуляр е предназначен за преглед на промените, които сте направили по отношение на индекса (междинна област за следващия фиксиране). С други думи, разликите са това, което може да се каже git да добавите към индекса, но все още не. Можете да направите тези промени, използвайки git -add (1).

За съжаление не мога да го разбера. Трябва да има някаква удобна една линия, за която бих могъл да създам псевдоним, нали?

1499
19 окт. набор от Frerich Raabe 19 окт. 2009-10-19 12:57 '09 в 12:57 2009-10-19 12:57
@ 13 отговора

Трябва да е просто:

 git diff --cached 

--cached означава показване на промените в кеша / индекса (т.е. --cached промени) спрямо текущата HEAD . --staged е синоним на --cached .

СМЯНА

За да се изясни горното твърдение, --staged и --cached не показват HEAD , а само разлика по отношение на HEAD . Ако изберете череша, какво да направите, използвайки git add --patch (или git add -p ), --staged ще върне това, което --staged .

1868
19 окт. Отговор, даден от Charles Bailey 19 октомври 2009-10-19 13:07 '09 в 13:07 2009-10-19 13:07

Опростените графики правят това ясно:

2019

1306
19 окт. Абизерн отговори на 19 октомври 2009-10-19 13:27 '09 в 13:27 2009-10-19 13:27

Ако се интересувате от визуална връзка, този дифузен инструмент може да го направи. Той дори ще покаже три панела, ако са направени някои, но не всички промени. В случай на конфликт ще има дори четири панела.

2019

49
25 окт. Отговорът е даден krlmlr 25 октомври. 2012-10-25 00:05 '12 в 0:05 2012-10-25 00:05

Имайте предвид, че git status -v също показва инкрементални промени! (това означава, че трябва да получите - git add - някои промени. Няма допълнителни промени, няма разлики с git status -v .
Това се прави от Git 1.2.0, февруари 2006 г. )

В дългата си форма (по подразбиране) git status има недокументирана "подробна" опция, която всъщност показва разликата между HEAD и index.

И трябва да стане още по-пълно: вж. „ Показване на стъпково и работещо дърво в git diff? “ (Git 2.3.4+, Q2 2015):

 git status -v -v 
31
18 марта '15 в 10:22 2015-03-18 10:22 отговорът е даден от VonC на 18 март 2006 г. в 10:22 часа 2015-03-18 10:22

Можете да използвате тази команда.

 git diff --cached --name-only 

Опцията --cached git diff означава получаване на файлове стъпка по стъпка, а опцията --name-only означава само имена на файлове.

17
31 авг. отговорът е даден Yash Patadia 31 Aug. 2016-08-31 13:05 '16 в 13:05 ч. 2016-08-31 13:05

Започвайки от версия 1.7 и по-нови:

 git diff --staged 
11
19 июля '16 в 20:39 2016-07-19 20:39 отговорът е даден ML13 19 юли, 16 в 20:39 2016-07-19 20:39

Ако имате няколко файла с поетапни промени, по-препоръчително е да използвате git add -i , след това изберете 6: diff и накрая изберете файловете, които ви интересуват.

7
14 марта '12 в 17:30 2012-03-14 17:30 отговорът е даден от Fred Schoen на 14 март '12 в 17:30 ч. 2012-03-14 17:30

За сравняване на съхранение и съхранение

 $git diff --staged 

За сравнение с работното картографиране на съхранение, използвайте

 $ git diff 

но ако файлът е модифициран и добавен в зоната на поставяне ( $ git add fileName ), ще се опитаме да видим разликата с ( $ git diff ). Той няма да върне никакви разлики, тъй като файлът е в зоната на спиране и няма да се сравнява с хранилището.

5
26 февр. отговорът е даден от Гоял Вики на 26 февруари. 2017-02-26 00:16 '17 в 0:16 2017-02-26 00:16

Ако намерението ви е да избутате клона за отдалечено репо, а първият ви пропуск в дневника за промяна на обвързването е непълен, можете да поправите декларацията за ангажиране, преди да щракнете така.

локално

... направете някои промени ...

 git diff # look at unstaged changes git commit -am"partial description of changes" 

... напомняме за още промени, които не са посочени в фиксира ...

git diff произход / капитан # погледнете инкременталните, но не натиснати промени

... променете инструкцията за поетапно фиксиране ...

 git commit --amend -m"i missed mentioning these changes ...." git push 
5
14 окт. отговор, даден от Marc Condon Oct 14 2015-10-14 21:32 '15 в 21:32 2015-10-14 21:32

ИЗПОЛЗВАНЕ НА DIFF ВИЗУАЛЕН ИНСТРУМЕНТ

Отговор по подразбиране (команден ред)

Горните отговори тук правилно показват как да преглеждате кеширани / поетапни промени в Index :

 $ git diff --cached 

или $ git diff --staged , което е псевдоним.


Вместо това стартирайте инструмента за Visual Diff

Отговорът по подразбиране е да се дадат diff промени на git bash (т.е. в командния ред или конзолата). За тези, които предпочитат визуалното представяне на разликите във фазовите файлове, git има скрипт, който изпълнява визуален инструмент за разграничаване за всеки разглеждан файл, вместо да ги показва в командния ред, наречен difftool :

 $ git difftool --staged 

Това ще направи същото нещо като git diff --staged , с изключение на това, че всеки път, когато инструментът diff се изпълнява (т.е. всеки път, когато файлът се обработва с помощта на diff), той стартира инструмента за визуално сравнение по подразбиране. (в моята среда това е kdiff3 ).

След като стартирате инструмента, функцията git diff script ще бъде прекъсната, докато инструментът за визуално разграничаване бъде затворен. Затова ще трябва да затворите всеки файл, за да видите следващия.


Винаги можете да използвате difftool вместо diff в git команди

За всички ваши визуални различия, git difftool ще работи вместо всяка git diff , включително всички параметри.

Например, за да стартирате инструмента за визуален анализ, без да питате дали трябва да направите това за всеки файл, добавете опцията -y (мисля, че обикновено ви е необходима!):

 $ git difftool -y --staged 

В този случай, всеки файл ще бъде изтрит във визуалния инструмент за разграничаване един по един, след което следващият инструмент ще бъде затворен.

Или разгледайте diff на конкретен файл, предоставен в Index :

 $ git difftool -y --staged <<relative path/filename>> 

За всички параметри вижте страницата за помощ:

 $ git difftool --help 


Конфигуриране на Visual Git Tool

За да използвате визуален инструмент git, различен от стандартния, използвайте параметъра -t <tool> :

 $ git difftool -t <tool> <<other args>> 

Или вижте референтната страница на difftool за това как да конфигурирате git да използва друг инструмент diff diff по подразбиране.

3
15 авг. Отговор, даден от LightCC на 15 август. 2017-08-15 02:33 '17 в 2:33 2017-08-15 02:33

git gui и git-cola са графични помощни програми, които ви позволяват да преглеждате и обработвате индекс. И двете включват прости визуални различия за фазовите файлове, а git-cola може да изпълнява и по-сложен инструмент за сравнение.

Вижте най-близкия ми отговор Как да премахнете файл от индекс в git? както и тази официална Git директория - GUI Клиенти .

2
13 апр. отговорът е даден Nobar 13 Apr 2016-04-13 17:31 '16 в 17:31 2016-04-13 17:31

Помислете за инструмента git, който също има git и е много полезен, за да видите промените.

0
03 авг. отговорът е даден сам 03 август. 2016-08-03 13:40 '16 в 13:40 ч. 2016-08-03 13:40

По подразбиране git diff се използва за показване на промени, които не са добавени към списъка с актуализирани файлове на git. Но ако искате да покажете промените, които са били добавени или маркирани, трябва да предоставите допълнителни параметри, които ще позволят на git да знае, че се интересувате от счупени или добавени diff файлове.

 $ git diff # Default Use $ git diff --cached # Can be used to show difference after adding the files $ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git 

пример

 $ git diff diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644 --- a/x/y/z.js +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) { - if (a) + if (typeof a !== 'undefined') res = 1; else res = 2; $ git add x/y/z.js $ git diff $ 

След като добавите файлове, не можете да използвате „git diff“ по подразбиране. Трябва да направите следното: -

 $ git diff --cached diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644 --- a/x/y/z.js +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) { - if (a) + if (typeof a !== 'undefined') res = 1; else res = 2; 
0
20 нояб. отговорът е даден от Дипак Диксит 20 ноември. 2017-11-20 09:30 '17 в 9:30 часа 2017-11-20 09:30 часа

Други въпроси относно или Задайте въпрос