Sadece kullanma bash, diff, tput, ve less, yakından çıktısını yaklaşık olarak belirleyebilir git diff. Yine de, kısa görüşlülük nedeniyle bazı önemli farklılıklar olacaktır.diff programcıların .
Kullanıcı hesabınız tarafından otomatik olarak elde edilen bir dosyaya aşağıdaki Bash işlev tanımını koyun ve işleve komut satırından erişebileceksiniz:
function gdiff()
{
local REG=`tput op`
local GRP=`tput setaf 6`
local ADD=`tput setaf 2`
local REM=`tput setaf 1`
local NL=$'\n'
local GRP_LABEL="${GRP}@@ %df,%dn +%dF,%dN @@${REG}"
local UNCH_GRP_FMT=''
[[ "${1}" == '@full' ]] && {
UNCH_GRP_FMT="${GRP_LABEL}${NL}%="
shift
}
diff \
--new-line-format="${ADD}+%L${REG}" \
--old-line-format="${REM}-%L${REG}" \
--unchanged-line-format=" %L${REG}" \
--new-group-format="${GRP_LABEL}${NL}%>" \
--old-group-format="${GRP_LABEL}${NL}%<" \
--changed-group-format="${GRP_LABEL}${NL}%<%>" \
--unchanged-group-format="${UNCH_GRP_FMT}" \
"${@}" | less -FXR
}
Bu işlev şu şekilde çalışır:
- Sonuçta,
diffdosyalardaki değişikliklerin nasıl görüntüleneceğini belirtmek için çeşitli biçimlendirme seçenekleriyle çağrılır.
tputbu biçimlendirme seçeneklerine ANSI renk kodlarını eklemek için kullanılır. ANSI olmayan terminallerde, değiştirmek gerekebilir Not tput setafile tput setf.
- Çıkış
diffborulu less. -RANSI renklerinin korunmasına izin verir. çıkarken ekranın temizlenmesini -Xengeller less. çıktı bir ekrana sığarsa çağrı cihazı olarak çalışmasını -Fengeller less.
- İlk parametre ise
@full, işlev eklenen ve çıkarılan satırlara ek olarak tüm değiştirilmemiş satırları görüntüler.
Bu yaklaşım ve aşağıdakiler arasındaki aşağıdaki farklara dikkat edin git diff:
git diffher değişikliği çevreleyen üç satır bağlam bildirir. Maalesef, diffaynı anda biçimlendirme seçeneklerini belirlerken aynı zamanda bağlam satırlarının sayısını belirtmek istiyorsanız şikayet ediyor ve çıkıyorsunuz. (En azından Mac OS X Yosemite'de öyle). Teşekkürler diffprogramcılar. Bu nedenle, varsayılan davranış olan her değişikliği çevreleyen bağlam satırı isteyebilir veya @fullilk parametre olarak belirterek dosyadaki tüm değişmemiş satırların da rapor edilmesini isteyebilirsiniz .
- Bağlam çizgileri farklı olduğundan,
git diffbu işlev tarafından bildirilen satır numaraları da tarafından bildirilenlerden farklı olacaktır.git diff .
- Tek satırlık değişikliklerin rapor edildiğini görebilirsiniz, bu doğru davranıştır, ancak değiştirilen dosyanız tek boş satırların eklenmesini içerdiğinde can sıkıcıdır. Bence bunu
git diffbağlam çizgileri üzerinden daha iyi ele alıyor. İsterseniz diff, beyaz boşluklarla daha iyi başa çıkmak için farklı seçenekler aktarmayı deneyebilirsiniz .
newtextde/etc/colordiff. Sanırım git yeşil kullanıyor?