একটি নতুন নামের অধীনে গিট-চেকআউট পুরানো সংশোধন


264

main.cppআমার এডিটরটিতে ফাইলটি খোলা আছে।

আমি main.cppসম্পাদকটিতেও " " এর আগের সংশোধনটি দেখতে চাই ।

আমি এখন এটি করার উপায়টি এরকম।

close "main.cpp" in the editor

prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>

open "main.cpp" and "old_main.cpp" in the editor

এটিকে কী সরল করা যায়, তাই আমাকে সম্পাদককে "main.cpp" বন্ধ করতে হবে না?

আমি যা আশা করছি তা এর একটি বৈকল্পিক git-checkoutযা করতে পারে।


আপডেট: আমি ম্যাক ওএসএক্স 10.5.7 এ গিট ব্যবহার করছি

prompt> git --version
git version 1.6.0.4
prompt> 

আপডেট 2: জাকুব নরবস্কির উত্তরটি হ'ল:

prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>

আপডেট: একটি নির্দিষ্ট সংশোধনের জন্য কর্মীর উত্তর:

prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt> 

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

আমি টেক্সটমেট ব্যবহার করি এটির কিছুটা গিট সাপোর্ট রয়েছে, এটি এটি করতে পারে কিনা তা আমি পরীক্ষা করে দেখিনি।
নিউনি

পাঠ্যসামগ্রীর গিট বান্ডিল রয়েছে: github.com/timcharper/git-tmbundle (git wiki: git.or.cz/gitwiki তে আপনার ইন্টারফেসফ্রন্টএন্ডসটুলস পৃষ্ঠাটি পরীক্ষা করা উচিত ছিল )
জাকুব

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

আমি টেক্সটমেটে আমার প্রকল্পের উপর নজর রাখার জন্য সিমলিংক ব্যবহার করি। 25 ডায়ার, 300 ফাইল এটি বিল্ডার এবং অন্যান্য অপ্রাসঙ্গিক ডায়ারগুলি গোপন করতে সহায়তা করে। তবে গিট / টেক্সটমেট এই
চিহ্নগুলি

উত্তর:


312

আপনি তার জন্য "গিট শো" ব্যবহার করতে পারেন:

prompt> git show HEAD^:main.cpp > old_main.cpp

(নোট সেখানে কোলন [যে :মধ্যবর্তী] চরিত্র HEAD^এবং main.cpp।) <revision>:<path>সিনট্যাক্স বর্ণনা করা হয় Git Rev-পার্স র manpage, পরবর্তী "পুনর্বিবেচনা নির্দিষ্ট করা" বিভাগে শেষ বিন্দু হবে:

  • <rev>: <पथ>, উদাহরণস্বরূপ শিরোনাম: পুনরায় পড়া,: পুনরায় পড়া, মাস্টার:। / পড়ুন

    একটি প্রত্যয় :অনুসরণ করে একটি পথের পরে কোলনের আগে অংশ অনুসারে বৃক্ষ-ইশ বস্তুতে প্রদত্ত পথে ব্লব বা গাছের নাম দেওয়া হয়। :path(কোলনের আগে একটি খালি অংশ সহ) পরবর্তী বর্ণিত সিনট্যাক্সের একটি বিশেষ কেস: প্রদত্ত পথে সূচীতে লিপিবদ্ধ সামগ্রী।

    একটি চলমান পথ যা বর্তমান ওয়ার্কিং ডিরেক্টরিটির সাথে সম্পর্কিত ./বা ../তার সাথে সম্পর্কিত। প্রদত্ত পাথটি কার্যকারী গাছের মূল ডিরেক্টরিটির সাথে সম্পর্কিত হতে রূপান্তরিত হবে। কার্যনির্বাহী গাছের মতো একই গাছের কাঠামোযুক্ত একটি প্রতিশ্রুতি বা বৃক্ষ থেকে একটি ফোটা বা গাছকে সম্বোধন করতে এটি সবচেয়ে কার্যকর।

লক্ষ্য করুন <path>এখানে পূর্ণ পাথ আপেক্ষিক শীর্ষ ডিরেক্টরি আপনার প্রকল্পের, অর্থাত্ সঙ্গে ডিরেক্টরি .git/ডিরেক্টরি। (বা " <পুনর্বিবেচনা> " - এর আরও সঠিক হতে হবে (যা সাধারণভাবে কোনও << ট্রি-ইশ> হতে পারে , অর্থাত এমন কিছু যা গাছকে উপস্থাপন করে))

আপনি যদি বর্তমান ডিরেক্টরিটির তুলনায় পাথটি ব্যবহার করতে চান তবে আপনাকে ./<path>সিনট্যাক্স ব্যবহার করতে হবে (বা ../pathবর্তমান ডিরেক্টরি থেকে উপরে যেতে হবে)।

2015-01-15 সম্পাদনা করুন: আপেক্ষিক পাথ সিনট্যাক্স সম্পর্কে তথ্য যুক্ত করা হয়েছে


আপনি নিম্ন-স্তরের (নদীর গভীরতানির্ণয়) git cat-fileকমান্ড ব্যবহার করে বেশিরভাগ ক্ষেত্রে একই আউটপুট পেতে পারেন :

prompt> git cat-file blob HEAD^:main.cpp > old_main.cpp

3
আমি একটি সম্পূর্ণ অনুলিপিটিতে আগ্রহী, তবে গিট-শো আমাকে কেবলমাত্র পার্থক্যগুলি দেখায় .. আমি - ব্যাখ্যা বিকল্পটি নিয়ে প্রায় চেষ্টা করেছি ... প্রম্পট> গিট শো - ব্যাখ্যা = ফুলার হেড ^ মেইন সিপিপি কিন্তু এটি হয়নি এটি সমাধান করবেন না।
নিউনি

7
"গিট শো HEAD ^ main.cpp" (HEAD ^ এবং main.cpp এর মধ্যে স্পেস সহ) হ'ল "গিট শো HEAD .c: main.cpp" থেকে ( কোলন ':' HEAD ^ এবং main.cpp এর মধ্যে রয়েছে) থেকে ডিফারেন্ট হয়।
জাকুব নরবস্কি

হুম, কোলন সহ আমি এই ত্রুটিটি দেখতে পাচ্ছি, তাই আমি ভেবেছিলাম যে কোলনটি একটি ভুল ছিল। হ্যাঁ মনে হচ্ছে কোলনটি যাওয়ার উপায়, তবে আমি কীভাবে এটি সমাধান করব? প্রম্পট> গিট শিরোনাম দেখান ^: main.cpp মারাত্মক: অস্পষ্ট আর্গুমেন্ট 'HEAD ^: main.cpp': অজানা সংশোধন বা পথ কার্যকারী গাছের মধ্যে নেই। সংশোধন প্রম্পট থেকে পাথ পৃথক করতে '-' ব্যবহার করুন>
নিউইনি

2
সম্ভবত এর অর্থ হ'ল আপনি ভুল PATHNAME দিয়েছেন (দুর্ভাগ্যবশত "গিট শো" এর কারণে ম্যাজিক গিট আরও ভাল ত্রুটি বার্তা দিতে পারে না)। এটি আপনার প্রকল্পের শীর্ষ ডিরেক্টরিটির সাথে সম্পর্কিত পুরো পথের নাম হতে হবে: $ (গিট এলএস-ট্রি -আর - নাম-কেবলমাত্র প্রধান AD | গ্রেপ মেইন.সি.পি)
জাকুব

3
দস্তাবেজগুলি থেকে পুরো পাথের পরিবর্তে: "./ অথবা ../ দিয়ে শুরু হওয়া একটি পথ বর্তমান চলমান ডিরেক্টরিের সাথে সম্পর্কিত" " আমার 1.8.5 সংস্করণে কাজ করে।
এলভিবি

24

কেবল জাকুবের জবাব যুক্ত করতে: আপনি >যদি টার্মিনালে কেবল ফাইলের বিষয়বস্তুগুলিতে স্কিমিং করতে আগ্রহী হন তবে আপনাকে আউটপুটটি কোনও ফাইলে পুনর্নির্দেশ করতে হবে না । আপনি শুধু চালাতে পারেন $ git show 58a3db6:path/to/your/file.txt

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