আমি অন্য গিট শাখা থেকে কীভাবে একটি ফাইল খুলব?


35

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

যদি এটি সহায়তা করে:

  • আমার পলাতক প্লাগইন ইনস্টল আছে (যদিও খুব কম ব্যবহৃত হয়)।
  • আমার এটিকে সংশোধন করার দরকার নেই।

ফাইলটি বর্তমানে ওপেন বাফার বা অন্য একটির জন্য ফাইল হতে পারে।

উত্তর:


49

আপনি ফর্মটি দিয়ে :Gedit/ :Gsplit/ :Gvsplit/ ... ব্যবহার করতে পারেন{revision}:{filename}

:Gedit branch:/foo/bar.c

দ্রষ্টব্য: যদি ফাইলটি বর্তমান ফাইলটি হিসাবে একই আপনি এখন মত কমান্ড সংক্ষিপ্ত করতে পারেন: :Gsplit branch:%

এটি প্রায়শই ক্ষেত্রে হয় যে কেবলমাত্র ভিন্ন শাখায় ফাইলটি খোলার চেয়ে বর্তমান ফাইলটির একটি পৃথককেই প্রাধান্য দেওয়া হয়। আপনি এটি মাধ্যমে করতে পারেন :Gdiff {branch}

আরও সহায়তার জন্য দেখুন:

:h fugitive-:Gedit
:h fugitive-revision
:h fugitive-:Gdiff
:h c_%

আপনি পলাতক সিরিজের ভিমকাস্ট পর্বগুলিও দেখতে চাইতে পারেন ।


সুন্দর! কৌতূহলী: আমি যদি এমন কোনও ফাইলটি খোলামেলা পরিবর্তন করি তবে কী হবে?
মুড়ু

1
@ মুরু আপনি লক্ষ্য করবেন যে বাফারটি কেবলমাত্র পঠনযোগ্য বাফারে খোলা হয়েছে (সম্ভবত [RO]স্ট্যাটাস লাইনে এটি লক্ষ্য করুন )।
পিটার রিনকার

হ্যাঁ, এটা আছে।
মুড়ু

fugitiveসংগ্রহস্থলের মূল থেকে পথ প্রয়োজন। উত্তরটি ইতিমধ্যে এটি কভার করেছে, তবে আমি ভুলভাবে ধরে নিয়েছি যে পলাতক বুঝতে পারে যখন আমরা রেপোর একটি নির্দিষ্ট উপ-ডিরেক্টরিতে থাকি।
পাসচালিস

আশ্চর্যজনক .. প্রথমবার পলাতক ব্যবহার করে .. যদিও আমি এটি দীর্ঘ সময়ের জন্য ইনস্টল করেছি :)
alpha_989

14

এটি ওপি যা বলেছিল তার চেয়ে কিছুটা বেশি বিস্তৃত, তবে লোকেরা প্লাগইন এবং সম্ভবত অন্যান্য সংশোধন নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করতে চায় না তাদের পক্ষে এই ছোট স্নিপেট মোটামুটি ভালভাবে কাজ করার ঝোঁক রয়েছে:

:new
:r! git show branch:file
:1d

এটি একটি নতুন উইন্ডো তৈরি করে এবং সেখানে প্রদত্ত কমান্ডের আউটপুটটি নতুন বাফারে পড়ে ফাইলটি দেখায়। এটি অবশ্যই গিট নয়, কোনও বাহ্যিক কমান্ড নিয়ে কাজ করে।

Bzr এর উদাহরণ (যেখানে REV বাক্য গঠনটি একটি শাখা নির্দিষ্ট করতে পারে):

:new
:r! bzr cat -r REV file
:1d

এইচজি জন্য উদাহরণ (এইচজি মধ্যে শাখা সম্পর্কে নিশ্চিত না; যথেষ্ট পরিমাণে এটি ব্যবহার করবেন না)

:new
:r! hg cat -r REV file
:1d

এসএনএন এর উদাহরণ (

:new
:r! svn cat file@REV
:1d

আপনি সম্ভবত এসও পোস্টগুলির মতো সিনট্যাক্স হাইলাইট করার জন্য ফাইল টাইপ সেট করতে চান তবে কমপক্ষে আপনাকে পাইপিংয়ের সাথে ঝামেলা করতে হবে না।

একবার খোলার পরে আপনি এটিকে একটি নতুন নামে :w filenameবা এটির সাথে সংরক্ষণ করতে পারবেন :saveas filename, যেহেতু ভিমের কাছে এটির জন্য এখনও কোনও ফাইল নাম থাকবে না। আপনি যদি এটি সম্পাদনা করতে সক্ষম না হতে চান তবে আপনি একটি :setlocal readonlyএবং / অথবা এও দিতে পারেন :setlocal nomodifiable

-সম্পাদনা: স্বয়ংক্রিয় ফাইল টাইপ-

এটি কিছুটা বেশি কাজ, তবে আপনি ভিমকে ফাইল টাইপের সাথে অনুমান করতে বলতে পারেন

:filetype detect

তবে, যেহেতু ভিমের এখনও কোনও নাম নেই, এটি সর্বদা ভাল কাজ করে না (উদাহরণস্বরূপ, আমি কিছু সি কোড এনেছি এবং এটি অনুমান করে filtype=conf

আমরা এটি সংরক্ষণ করে একটি নাম দিতে পারি, তবে আমরা সম্ভবত বিদ্যমান ফাইলটি ওভাররাইট করতে চাই না। আমরা কেবল ফাইলের নাম সেট করতে পারি (ধন্যবাদ @ পিটারআরঙ্কার!), তবে আবার আমরা সংঘর্ষের ঝুঁকি নিতে চাই না। যেহেতু কোনও ফাইলের শাখা নাম এবং ফাইলের নাম দুটোই এক সাথে থাকার সম্ভাবনা কম, তাই আমরা তাদেরকে কিছু কিছু বিচ্ছিন্ন বিভাজক দিয়ে সম্মতি জানাব

:exe "silent file " . "branch" . "-" . "file"
:filetype detect

যেখানে "file"প্রকৃত ফাইলের নাম এবং "branch"শাখার নাম দিয়ে প্রতিস্থাপন করা হয়েছে

অবশ্যই, এই মুহুর্তে আমরা প্রায় একটি প্লাগইন লিখছি ;-)

এগুলি একসাথে ছুঁড়ে ফেলা হচ্ছে, এটি এখানে গিট নির্দিষ্ট ফাংশন হিসাবে আপনি আপনার ভিএমআরসিতে ফেলে দিতে পারেন:

function! GitFile(branch,file)
    new
    exe "silent r! git show " . a:branch . ":" . a:file
    1d
    exe "silent file " . a:branch . "-" . a:file
    filetype detect
    setlocal readonly     "don't allow saving
    setlocal nomodified   "allow easy quitting without saving
    setlocal nomodifiable "don't allow modification
endfunction

আপনি কমান্ড মধ্যে মোড়ানো বা সরাসরি যেমন বলতে পেরেছিলাম call GitFile("whateverBranch","myfile.c")। আপনি নামের সাথে বাফার সহ একটি নতুন উইন্ডো পাবেনwhateverBranch-myfile.c


এবং আমি কী এই পদ্ধতিতে স্বয়ংক্রিয়ভাবে ফাইল টাইপ, সিনট্যাক্স ইত্যাদি সনাক্ত করতে পারি?
মুড়ু

দুঃখজনকভাবে আরও কিছু কাজ না করে; আমি পোস্টটি আপডেট করেছি
জন ও'ম।

1
আপনি যদি পারেন তবে @ পিটার রিঙ্কারের পোস্ট থেকে প্লাগইন পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছি। এটি আপনার পছন্দসই সুন্দর কাজগুলি করা উচিত। আমি বেশিরভাগই এটি দেখাতে চেয়েছিলাম যে ডেটা পাওয়ার জন্য একজনকে সম্পাদক ছেড়ে যাওয়া বা পাইপিংয়ের ঝামেলা মোকাবেলা করার দরকার নেই এবং আমি জানি যে এমন কিছু লোক আছেন যারা প্লাগইন ব্যবহার করতে ঘৃণা করেন।
জন ও'ম।

1
আমি ফাইল টাইপ সনাক্ত করতে সক্ষম হতে কিছুটা যুক্ত করেছি। এটি আর এমন কিছু নয় যা আপনি কেবলমাত্র দ্য ফ্লাইতে টাইপ করতে চান তবে এটি একটি .vimrc এ একটি সহজ সংযোজন হিসাবে কাজ করতে পারে। একটি নির্দিষ্ট প্লাগইন ব্যবহার করা সম্ভবত আরও ভাল কাজ করবে।
জন ও'ম।

আপনি :fileএকটি অস্থায়ী ফাইল না রেখে নিজের ফাইলটির নামকরণ করতে চান । দেখুন:h :file
পিটার রিঙ্কার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.