عرض سجل التغيير لملف باستخدام إصدار Git
سؤال
كيف يمكنني عرض سجل التغيير لملف فردي في Git، مع التفاصيل الكاملة مع ما تغير؟
لقد وصلت إلى ما يلي:
git log -- [filename]
والذي يوضح لي سجل الالتزام الخاص بالملف، ولكن كيف يمكنني الحصول على محتوى كل تغيير في الملف؟
أحاول إجراء الانتقال من MS SourceSafe وكان ذلك أمرًا بسيطًا right-click
→ show history
.
المحلول
لهذا فما استقاموا لكم فاستقيموا استخدام:
gitk [filename]
وأو لمتابعة اسم الملف إعادة تسمية الماضي
gitk --follow [filename]
نصائح أخرى
ويمكنك استخدام
git log -p filename
والسماح بوابة توليد بقع لكل إدخال السجل.
وانظر
git help log
لمزيد من الخيارات - يمكن أن تفعله في الواقع الكثير من أشياء لطيفة :) لمجرد الحصول على فرق لارتكاب المحددة التي يمكن
git show HEAD
وأو أي تنقيح الآخرين من خلال معرف. أو استخدام
gitk
لتصفح التغييرات بصريا.
وgit log --follow -p -- path-to-file
وهذا سوف تظهر على كامل سجل الملف (بما في ذلك التاريخ وراء إعادة تسمية ومع بيانات الاختلاف عن كل تغيير).
وبعبارة أخرى، إذا كان bar
ملف اسمه كان اسمه مرة واحدة foo
، ثم git log -p bar
(بدون خيار --follow
) سوف تظهر فقط تاريخ الملف لتصل إلى النقطة التي تم تغيير اسمها - أنها لن تظهر محفوظات الملف عندما كانت تعرف باسم foo
. وسوف تستخدم git log --follow -p bar
إظهار محفوظات الملف بأكمله، بما في ذلك أي تغييرات على الملف عندما كانت تعرف باسم foo
. يضمن الخيار -p
التي تم تضمينها بيانات الاختلاف عن كل تغيير.
إذا كنت تفضل الاستمرار في الاعتماد على النصوص، فقد ترغب في استخدامها تيج.
تثبيت سريع:
- شقة-الحصول على:
# apt-get install tig
- البيرة (OS X):
$ brew install tig
استخدمه لعرض السجل في ملف واحد: tig [filename]
أو تصفح سجل الريبو التفصيلي: tig
مشابه ل gitk
ولكن على أساس النص.يدعم الألوان في المحطة!
git whatchanged -p filename
هو أيضا ما يعادل < وأ href = "http://git-scm.com/docs/git-log" يختلط = "noreferrer"> git log -p filename
في هذه القضية.
ويمكنك أيضا معرفة متى تم تغيير خط معين من التعليمات البرمجية داخل ملف مع <لأ href = "http://www.kernel.org/pub/software/scm/git/docs/git-blame.html" يختلط = "noreferrer"> git blame filename
. هذا وسوف تطبع على ارتكاب باختصار الهوية، والمؤلف، والوقت، ومتكاملة من رمز لكل سطر في الملف.
وهذا مفيد جدا بعد أن كنت قد وجدت علة وكنت تريد أن تعرف عند عرضه (أو من هو على خطأ كان).
مستخدمي شجرة المصدر
إذا كنت تستخدم SourceTree لتصور المستودع الخاص بك (فهو مجاني وجيد جدًا)، فيمكنك النقر بزر الماوس الأيمن فوق الملف وتحديده سجل المحدد
تعد الشاشة (أدناه) أكثر ودية من gitk ومعظم الخيارات الأخرى المدرجة.لسوء الحظ (في الوقت الحالي) لا توجد طريقة سهلة لبدء هذا العرض من سطر الأوامر - يقوم سطر الأوامر الخاص بـ SourceTree حاليًا بفتح عمليات إعادة الشراء فقط.
لإظهار ما المراجعة ومؤلف آخر تعديل كل سطر من ملف:
git blame filename
وأو إذا كنت ترغب في استخدام قوي اللوم واجهة المستخدم الرسومية:
git gui blame filename
وملخص إجابات أخرى بعد قراءة من خلالها واللعب قليلا:
وسيكون الأمر سطر الأوامر المعتاد أن يكون
git log --follow --all -p dir/file.c
ولكن يمكنك أيضا استخدام إما gitk (واجهة المستخدم الرسومية) أو القصبات (النص واجهة المستخدم) لإعطاء طرق أكثر من ذلك بكثير الإنسان قابل للقراءة للنظر في ذلك.
gitk --follow --all -p dir/file.c
tig --follow --all -p dir/file.c
وتحت ديبيان / أوبونتو، الأمر تثبيت لهذه الأدوات الجميلة وكما هو متوقع:
sudo apt-get install gitk tig
وأنا أستخدم حاليا:
alias gdf='gitk --follow --all -p'
وحتى أستطيع أن اكتب فقط gdf dir
للحصول على التاريخ تركيزا من كل شيء في dir
الدليل الفرعي.
إضافة هذا الاسم المستعار ل.gitconfig الخاص بك:
[alias]
lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative
واستخدام الأمر على هذا النحو:
> git lg
> git lg -- filename
والناتج سوف تبدو بالضبط تقريبا نفس الناتج gitk. التمتع بها.
ومؤخرا اكتشفت tig
وجدت أنه من المفيد جدا. هناك بعض الحالات كنت أتمنى أن يكون يفعل A أو B ولكن معظم الوقت انها نظيفة إلى حد ما.
لحالتك، قد يكون tig <filename>
ما كنت تبحث عنه.
بوابة-تشغيل لهذا الغرض المحدد
pip install git-playback
git playback [filename]
وهذا له فائدة لكلا عرض النتائج في سطر الأوامر (مثل git log -p
) في حين ترك أيضا يمكنك التنقل خلال كل كرست باستخدام مفاتيح الأسهم (مثل gitk
).
إذا كنت تريد أن ترى التاريخ كله من ملف، <م> بما في ذلك م> على <م> سائر م> فروع استخدام:
gitk --all <filename>
الامتدادات بوابة أو تذهب إلى نقطة في التاريخ، حيث الملف لا يزال قائما (إذا تم حذفه، وإلا اذهبوا إلى الرأس)، والتحول إلى علامة التبويب File tree
، انقر بزر الماوس الأيمن على الملف واختيار File history
.
وافتراضيا، ويترتب على الملف من خلال إعادة تسمية، وفوق علامة التبويب Blame
يسمح لرؤية اسم في المراجعة معينة.
ولديه بعض gotchas طفيفة، مثل عرض fatal: Not a valid object name
في علامة التبويب View
عند النقر على مراجعة الحذف، ولكن أستطيع العيش مع ذلك. : -)
إذا كنت تستخدم واجهة المستخدم الرسومية بوابة (على Windows) ضمن القائمة مستودع يمكنك استخدام "تصور التاريخ الماجستير". تسليط الضوء على ارتكاب في الجزء العلوي وملف في الجزء الأسفل من اليمين وسترى فرق لهذا الالتزام في أسفل اليسار.
- في القائمة تمكين لعرض الملفات التي لم تتغير:عرض / عرض الملفات التي لم تتغير
- انقر بزر الماوس الأيمن على الملف وحدد "تسجيل" أو اضغط على "Ctrl-L"
ويمكنك أيضا محاولة هذا الذي يسرد يرتكب الذي تغير جزء معين من ملف (نفذت في بوابة 1.8.4).
والنتيجة عاد ستكون قائمة يرتكب أن تعديل هذا جزء معين. الأوامر:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
وحيث UPPERLIMIT هو start_line_number وLOWERLIMIT هو ending_line_number من الملف.
ومزيد من التفاصيل في https://www.techpurohit.com/list- بعض-مفيدة-بوابة-الأوامر
وكان الجواب كنت أبحث عنه لا في هذا الموضوع هو أن نرى تغييرات في الملفات التي كنت قد نظمت لارتكاب. أي بمعنى.
git diff --cached
إذا كنت تستخدم TortoiseGit، فيجب أن تكون قادرًا على النقر بزر الماوس الأيمن على الملف والقيام بذلك TortoiseGit --> Show Log
.في النافذة التي تظهر لك، تأكد مما يلي:
'
Show Whole Project
لم يتم تحديد الخيار.'
All Branches
تم تحديد الخيار.
وgit diff -U <filename>
تعطيك فرق موحد.
يجب أن تكون ملونة وعلى الأحمر والأخضر. إذا لم تكن كذلك، تشغيل: git config color.ui auto
أولا
إذا كنت تستخدم الكسوف مع البرنامج المساعد بوابة، ولديه عرض مقارنة ممتازة مع التاريخ. انقر بزر الماوس الأيمن على الملف واختر "مقارنة مع" => "التاريخ"
ويمكنك استخدام vscode مع GitLens ، انها أداة قوية جدا.
بعد تثبيت GitLens، انتقل إلى علامة التبويب GitLens، حدد FILE HISTORY
ويمكنك تصفح ذلك.