গিট লগ কেন সরানো ফাইলটির জন্য ইতিহাস দেখায় না এবং আমি এটি সম্পর্কে কী করতে পারি?


91

আমি বেশ কয়েকটি ফাইলের নাম পরিবর্তন করে ব্যবহার করেছি git mv, ব্যবহার করেছি git stash, দ্রুত হেডকে দেখেছি (এটিকে পরিবর্তন না করে) এরপরে git stash popপুরোটা আবার ফিরে পেতে। আমার পদক্ষেপগুলি প্রতিশ্রুতিবদ্ধ তালিকা থেকে অদৃশ্য হয়ে গেছে, তাই আমি সেগুলি git rmপুনরায় পাঠিয়েছি এবং প্রতিশ্রুতিবদ্ধ বার্তায় দাবি করা হয়েছে যে গিটটি নামটির একটি নাম পরিবর্তন করেছে। সুতরাং আমি এটি আর কিছু ভেবেছি।

কিন্তু এখন, প্রতিশ্রুতি পোস্ট করুন, আমি সরানো ফাইলগুলির ইতিহাসে পেতে পারি না! গিট প্রশ্নে প্রতিশ্রুতিবদ্ধতা সম্পর্কে যা বলেছে তা এখানে:

~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date:   Wed Dec 8 22:37:54 2010 +0000

    Moved R_DebugUI into runtime

 delete mode 100644 test/R_DebugUI_iOS.h
 delete mode 100644 test/R_DebugUI_iOS.m
 create mode 100644 system/runtime/src/R_DebugUI_iOS.h
 create mode 100644 system/runtime/src/R_DebugUI_iOS.m

 <<snip older commits>>
 ~/projects%

আমি এখন এই স্থানান্তরিত ফাইলগুলির মধ্যে একটির ইতিহাস পাওয়ার চেষ্টা করছি, তাই আমি পুরানো সংস্করণটি দেখতে পারি, তবে খুব দরকারী কিছু পাই না:

~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date:   Wed Dec 8 22:37:54 2010 +0000

    Moved R_DebugUI into runtime
~/projects/system/runtime/src% 

(আমি এটি ছাড়াও চেষ্টা করেছি -M, -Cএবং --find-copies-harder, কিন্তু কোনও লাভ হয়নি) to

আমি এর পুরানো নাম অনুসারে এর ইতিহাস পেতে পারি, যা এটি তার পুরানো অবস্থান থেকে মুছে ফেলা হয়েছে এমন স্থানে থামে:

~/projects% git log --summary --follow --find-copies-harder -M -C -- test/R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date:   Wed Dec 8 22:37:54 2010 +0000

    Moved R_DebugUI into runtime

 delete mode 100644 test/R_DebugUI_iOS.m

commit 32a22d53c27e260714f759ecb3d3864e38b2e87f
Author: brone
Date:   Tue Dec 7 23:52:51 2010 +0000

    Can set debug UI's alpha.

<<snip older commits>>
~/projects%

সুতরাং আমি এই সময় পুরোপুরি আটকে নেই, তবে আমি এই জাতীয় জিনিসটি সারাক্ষণ করার চেষ্টা করব না n't (আমি আশা করি ন্যায্য সংখ্যক ফাইল রয়েছে যা তাদের জীবনে কমপক্ষে একবারে স্থানান্তরিত হবে))

আমি কি ভুল কিছু করছি? ফাইলটির পুরানো অনুলিপি এবং নতুন অনুলিপি 98.8% একই (166 এর মধ্যে 2 টি লাইন পরিবর্তিত হয়েছে)। আমার বোধগম্যতা এই যে গিটটি এই ক্ষেত্রে ফাইলটি ট্র্যাক করতে সক্ষম হওয়া উচিত, কারণ এটি স্পষ্টভাবে সংরক্ষণের পরিবর্তে অপারেশনগুলির নাম পরিবর্তন করে ers

এটি ঠিক করার জন্য আমি কি কিছু করতে পারি?


অনুমান: আপনি যদি command / প্রকল্পের / instead / প্রকল্পগুলি / সিস্টেম / রানটাইম / এসসিআর পরিবর্তে command / প্রকল্পগুলির ভিতরে কমান্ডটি প্রয়োগ করেন তবে এটি কাজ করবে?
ডগলাস

না, আমি একই ফলাফল পেয়েছি। (সাধারণত যে কোনও উপায়ে আপনাকে কোনও ফোল্ডারে থাকতে দেওয়া সম্পর্কে গিটটি বেশ ভালই বলে মনে হচ্ছে ...)

এটি যদিও আমাকে একটি ধারণা দিয়েছে এবং আমি আমার অনুসন্ধানগুলি দিয়ে প্রশ্নটি আপডেট করেছি। মন্তব্যের জন্য ধন্যবাদ!

আমি এমএস উইন্ডোতে "1.7.3.1.msysgit.0" এর সাথে "কচ্ছপযুক্ত 1.5.8.0" ব্যবহার করছি। যখন আমি এক্সপ্লোরারে কোনও ফাইলের নাম পরিবর্তন করি তখন আমি আমার গিরি "স্থিতি = পুনর্নামকরণ" এ দেখি। কমান্ডলাইনে কীভাবে এটি করা যায় "কীভাবে করবেন" এর উত্তর দেওয়ার জন্য আমি গিট সম্পর্কে যথেষ্ট জানিনা তবে কচ্ছপজিট আমার পক্ষে এমন কিছু করেছিলেন যা আপনার প্রত্যাশা অনুযায়ী কাজ করেছিল।
k3b

4
এটা কি এক দুপ? stackoverflow.com/questions/2314652/...
cregox

উত্তর:


118

git log --followআপনার ফাইলে চেষ্টা করে দেখুন আমি এখান থেকে শিখেছি গিটে ফাইলগুলি সরানো / নামকরণ করা এবং তাদের ইতিহাস বজায় রাখা কি সম্ভব?


4
যদি আপনি পান তবে fatal: ambiguous argument 'file.txt': unknown revision or path not in the working treeগিট লগ --follow - file.txt
nealmcb

28

ঠিক আছে, আমি আমার নামগুলি এতে দেখি git log -M --summary...


git log -M --summaryআপনি যদি কিছু প্রদত্ত ফাইলের ইতিহাসের দিকে তাকান তবে কোনও ফাইল আর্গুমেন্টের সাথে কোনও নাম পরিবর্তন তথ্য দেয় না।
ভিঙ্ক 17

17

আমার নিজের প্রশ্নের উত্তর দেওয়া, যেহেতু আমি আমার সমস্যাগুলি ঠিকঠাক সমাধান না করে দিয়েও আমার উদ্বেগগুলি সমাধান করতে পেরেছি। ( git log --followএখনও আমার জন্য কাজ করে না, যদিও।)

প্রথমত, --summaryনাম পরিবর্তনের প্রতিশ্রুতি দেওয়ার জন্য লগটিতে deleteফাইলের পুরানো নামের লাইন অন্তর্ভুক্ত থাকে । সুতরাং এটির সন্ধান করা যদি সহজ হয় তবে আপনি এটির পুরানো নামটি এবং git logসেখান থেকে খুঁজে পেতে পারেন ।

এটি যদি কিছু বড় কমিটের অংশ হয়, এবং তাই এটি খুঁজে পাওয়া একটু কঠিন - এবং এই পরিস্থিতিটি আমার উদ্বেগগুলির মধ্যে একটি ছিল - git blame -Cপ্রথম পোস্ট-পুনর্নবীকরণ সংশোধনীতে ফাইলটির নতুন নামের সাথে ব্যবহার করা যেতে পারে। সম্ভবত আসল ফাইল থেকে লাইনগুলি রয়ে গেছে! - সুতরাং গিটকে তাদের উত্সটি খুঁজে পাওয়া উচিত এবং পুরানো ফাইলের নাম (এবং ভাল পরিমাপের জন্য কমিট হ্যাশ) দেখানো উচিত। তারপরে আপনি ট্রেলটি বাছাই করতে পারেন git log

সুতরাং, যদি ইউনিট (যে কোনও কারণেই) হিসাবে ফাইলটির ইতিহাসে আপনার কিছু আগ্রহ থাকে তবে মনে হয় এটি তুলনামূলক সরলভাবে করা যেতে পারে। যদিও আমি ইমপ্রেশন গিটটি পছন্দ করি তা পছন্দ করে আপনি এটি সঠিকভাবে ব্যবহার করেছেন।


6
আমি মনে করি আপনার মুছে ফেলা / যোগ করার পরিবর্তে নতুন নামগুলি দেখানোর জন্য -M বিকল্পের প্রয়োজন
অ্যাড্রিয়ান কর্নিশ

4
ঠিক একই সমস্যা ছিল এবং লক্ষ্য করা গেছে যে আপনার ওয়ার্কিং ডিরেক্টরিটি একটি পার্থক্য তৈরি করে git log --follow .যেখানে ওয়ার্কিং ডিরেক্টরিটি নতুন অবস্থানটি কাজ করে না, যখন git log --follow path/to/new/dirপুরানো এবং নতুন অবস্থানের সাধারণ
পিতামহ

4
--follow: প্যারামিটার কাজ করে, কিন্তু আপনি যা করতে হবেgit log --follow -- ./path/to/file
DrumM

আমি সবেমাত্র এমন সমস্যা পেয়েছি যা git -log filename.csফাইল চলাচলের প্রতিশ্রুতিতে থামে (বর্তমান দির ফাইলের ফোল্ডারে সেট করা থাকে)। তবে ভিএস ইতিহাসের উইন্ডোটি পুরো ফাইল পরিবর্তন লগটি দেখায়। এছাড়াও আমি দেখতে পাচ্ছি যে ফাইলটি গিথুব ডেস্কটপের সাহায্যে সরানো হয়েছে। তবে git log -10 --follow filename.csসরানো কমিট করার আগে লগটি দেখায়।
ওলেকস

12
git log --follow ./path/to/file

আমি বিশ্বাস করি এটিই আপনি খুঁজছেন।


4
পাঁচ বছর আগে থেকে উত্তর এই তথ্য আছে।
dotancohen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.