πŸ“œ git diff ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½Π΅ Git Repo, ΠΈ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π Π°Π·Π½ΠΈΡ†Π° git diff ΠΈ diff

by itisgood

Π­Ρ‚ΠΎ кросс-опСрационная совмСстимая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Π΄ΠΈΡ„Ρ„ΡƒΠ·ΠΈΠΈ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ.

ВСрсии diff для GNU ΠΈ OpenBSD (macOS) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ ΠΈ возмоТности.

ВСхничСски Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ GNU-Π²Π΅Ρ€ΡΠΈΡŽ diff Π½Π° macOS, Π½ΠΎ Ссли Ρƒ вас ΡƒΠΆΠ΅ установлСн git, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git diff, Π΄Π°ΠΆΠ΅ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ отслСТиваСмыС git!

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ 2 Ρ„Π°ΠΉΠ»Π°, Π½Π΅ находящиСся Π² git, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

git diff --no-index -- file_a file_b

Π’ΠΎΡ‚ ΠΈ всё, Ρ„Π»Π°Π³ –no-index позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ ΠΈ Π΄Π°Ρ‘Ρ‚ git’Ρƒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ ΠΈΠ»ΠΈ ссылкой Π½Π° git.

Π”Π°Π»ΡŒΡˆΠ΅ всё становится Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΎΡ‰Π΅.

Если ΠΏΡƒΡ‚ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ отслСТиваСтся git’ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π΄ΠΎ git diff file_a file_b.

Но Π·Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git diff, Ссли ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ diff?

Π­Ρ‚ΠΎ зависит ΠΎΡ‚ ситуации.

Π’ пСрСносимых скриптах я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ diff, Π½ΠΎ Π΅ΡΡ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π°, Ссли я знаю, Ρ‡Ρ‚ΠΎ git установлСн, ΠΈ Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git diff.

Π’ΠΎΡ‚ ΠΏΠ°Ρ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ особСнности git diff ΠΈ diff

Помимо кросс-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ совмСстимости, Ρƒ git diff Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй. Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС ΠΈΠ· Π½ΠΈΡ…, Π½ΠΎ Π²ΠΎΡ‚ Π΄Π²Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³:

/home/nick/src/tutorials/git-diff-tips
β”œβ”€β”€ a
β”‚Β Β  β”œβ”€β”€ 1
β”‚Β Β  └── 2
└── b
    β”œβ”€β”€ 1
    β”œβ”€β”€ 2
    └── 3

2 directories, 5 files

Π—Π°Ρ‚Π΅ΠΌ я использовал Ρ€Π°Π·Π½ΡƒΡŽ Π·Π°Π³Π»Π°Π²Π½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ Π² словах:

$ git diff ~/src/tutorials/git-diff/a ~/src/tutorials/git-diff/b

diff --git a/home/nick/src/tutorials/git-diff/a/1 b/home/nick/src/tutorials/git-diff/b/1
index 5626abf..3609f20 100644
--- a/home/nick/src/tutorials/git-diff/a/1
+++ b/home/nick/src/tutorials/git-diff/b/1
@@ -1 +1 @@
-one
+One
diff --git a/home/nick/src/tutorials/git-diff/a/2 b/home/nick/src/tutorials/git-diff/b/2
index f719efd..3b0086f 100644
--- a/home/nick/src/tutorials/git-diff/a/2
+++ b/home/nick/src/tutorials/git-diff/b/2
@@ -1 +1 @@
-two
+Two
diff --git a/home/nick/src/tutorials/git-diff/b/3 b/home/nick/src/tutorials/git-diff/b/3
new file mode 100644
index 0000000..b2cde18
--- /dev/null
+++ b/home/nick/src/tutorials/git-diff/b/3
@@ -0,0 +1 @@
+Three

Различия ΠΏΠΎ символам

Иногда ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ выдСлСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ символа, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ мСняСтся вся строка ΠΈΠ·-Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа.

# --color-words can take in a regex, in this case we say all characters are treated as words.$ git diff --color-words=. file_a file_b

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² скриптС обновлСния.

Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ синтаксиса diff Π½Π° сайтС Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ΠΎΠΌ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами, поэтому Π²ΠΎΡ‚ снимок экрана.

Новый Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CSV ΠΈ Π½ΠΎΠ²Ρ‹Π΅ запятыС ΠΎΠΊΡ€Π°ΡˆΠ΅Π½Ρ‹ Π² Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.

см. Ρ‚Π°ΠΊΠΆΠ΅:

 

Loading

You may also like

Leave a Comment