IT-Swarm.Net

জিট ব্যবহার করে একটি নির্দিষ্ট সংশোধন করতে একটি নির্দিষ্ট ফাইল রিসেট বা প্রত্যাবর্তন?

আমি ফাইলের কিছু অংশে কিছু পরিবর্তন করেছি যা কয়েকটি ফাইলের একটি অংশ হিসাবে অঙ্গীকারবদ্ধ হয়েছে, তবে এখন পরিবর্তনগুলি আবার আগের সংস্করণে ফিরিয়ে আনতে/প্রত্যাহার করতে চাই।.

আমি একটি git log বরাবর একটি git diff বরাবর আমার প্রয়োজনের পুনর্বিবেচনার জন্য কাজ করেছি, তবে অতীতে অতীতের ফাইলটিকে কীভাবে ফাইলটি ফেরত দেওয়া যায় তা কেবলমাত্র কোনও ধারণা নেই।.

4008
Hates_

আপনি চান কমিটির হ্যাশ অনুমান c5f567 হয়:

git checkout c5f567 -- file1/to/restore file2/to/restore

গিট চেকআউট ম্যান পৃষ্ঠা আরও তথ্য দেয়।.

আপনি c5f567 এর আগে কমিটিতে ফিরে যেতে চান, ~1 যুক্ত করুন (যেকোনো নম্বর দিয়ে কাজ করে):

git checkout c5f567~1 -- file1/to/restore file2/to/restore

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

5429
Greg Hewgill

আপনি diff কমান্ড ব্যবহার করে একটি ফাইলে করা পরিবর্তনগুলির দ্রুত পর্যালোচনা করতে পারেন:

git diff <commit hash> <filename>

তারপরে একটি নির্দিষ্ট ফাইলটি সেই কমিটিতে ফিরিয়ে আনতে রিসেট কমান্ডটি ব্যবহার করুন:

git reset <commit hash> <filename>

স্থানীয় পরিবর্তনগুলি থাকলে আপনাকে --hard বিকল্পটি ব্যবহার করতে হবে।.

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

git checkout <commit hash>
git checkout -b <new branch name>

আপনি যখন সেই পরিবর্তনগুলিকে একত্রিত করতে প্রস্তুত হবেন তখন আপনি আপনার মেইনলাইনের বিরুদ্ধে এটি পুনঃবিবেচনা করতে পারেন:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
560
Chris Lloyd

SHA-1 সহ, আপনি যদি কোন সুবিধাটি ব্যবহার করেন তবে এটি সবচেয়ে সুবিধাজনক। বিন্দু কমান্ড এই মত দেখাচ্ছে:

git checkout [commit-ref] -- [filename]

335
foxxtrot
git checkout -- foo

যে foo মাথা থেকে রিসেট করা হবে। আপনি এটিও করতে পারেন:

git checkout HEAD^ foo

এক সংশোধন ফিরে, ইত্যাদি জন্য.

264
Greg Hewgill

এবং সর্বশেষ প্রতিশ্রুতিবদ্ধ সংস্করণে ফিরে যাওয়ার জন্য, যা প্রায়শই প্রয়োজন হয়, আপনি এই সহজ কমান্ডটি ব্যবহার করতে পারেন।.

git checkout HEAD file/to/restore
117
CDR

আমার এখন একই সমস্যা ছিল এবং আমি পেয়েছি এই উত্তরটি বোঝার সহজতম (commit-ref SHA লগের যে পরিবর্তনটি আপনি ফিরে যেতে চান তার পরিবর্তনের মান):

git checkout [commit-ref] [filename]

এটি আপনার কাজের নির্দেশিকাতে সেই পুরানো সংস্করণটি রাখবে এবং যদি আপনি চান তবে এটির মাধ্যমে আপনি এটি করতে পারেন।.

103
bbrown

যদি আপনি জানেন যে আপনাকে কতগুলি ফিরে যেতে হবে তবে আপনি এটি ব্যবহার করতে পারেন:

git checkout master~5 image.png

আপনি অনুমান করছেন যে আপনি master শাখায় আছেন এবং আপনি যে সংস্করণটি চান তা হল 5 টি।.

89
Ron DeVera

আমার মনে হয় আমি এটি খুঁজে পেয়েছি .... http://www-cs-students.stanford.edu/~blynn/gitmagic/ch02.html

কখনও কখনও আপনি ফিরে যান এবং একটি নির্দিষ্ট বিন্দু আগে প্রতি পরিবর্তন সম্পর্কে ভুলে যান কারণ তারা সব ভুল।.

শুরু করা:

$ git log

যা আপনাকে সাম্প্রতিক কমিটির তালিকা এবং তাদের SHA1 হ্যাশ দেখায়।.

পরবর্তী, টাইপ করুন:

$ git reset --hard SHA1_HASH

একটি নির্দিষ্ট কমিটিতে রাষ্ট্র পুনরুদ্ধার এবং স্থায়ীভাবে রেকর্ড থেকে সব নতুন কমিট মুছে ফেলা।.

80
jdee

এটা আমার জন্য কাজ করেছে:

git checkout <commit hash> file

তারপর পরিবর্তন করুন:

git commit -a
61
v2k

আপনি যখন "রোলব্যাক" বলবেন তখন আপনাকে সতর্কতা অবলম্বন করতে হবে। যদি আপনি $ A টিম করার জন্য একটি ফাইলের একটি সংস্করণ ব্যবহার করেন, এবং তারপরে পরে দুটি বিভাজন দুটি পৃথক করে $ B এবং $ C করেন তবে (আপনি যা দেখছেন তা হল ফাইলটির তৃতীয় পুনরাবৃত্তি) এবং যদি আপনি " আমি প্রথম একটিকে আবার ফিরতে চাই ", তুমি কি সত্যি বলতে চাও?

যদি আপনি দ্বিতীয় এবং তৃতীয় পুনরাবৃত্তি উভয় পরিবর্তন পরিত্রাণ পেতে চান, এটা খুব সহজ:

$ git checkout $A file

এবং তারপর আপনি ফলাফল কমিট। কমান্ডটি "আমি $ A প্রতিশ্রুতি দ্বারা রেকর্ড করা রাষ্ট্র থেকে ফাইলটি পরীক্ষা করতে চাই" জিজ্ঞাসা করে।.

অন্যদিকে, আপনি যা বোঝাতে চেয়েছেন তা হল দ্বিতীয় পুনরাবৃত্তি (অর্থাত $ B প্রেরণ করা) পরিবর্তনটি পরিত্রাণ পেতে, যখন ফাইলটি $ সি করেছে তা পালন করে আপনি $ B কে ফেরত দিতে চান

$ git revert $B

মনে রাখবেন যে যে কেউ $ B কে তৈরি করেছে সেটি খুব শিষ্টাচারিত নাও হতে পারে এবং একই অঙ্গীকারে সম্পূর্ণ অসম্পূর্ণ পরিবর্তন করেছে, এবং এই প্রত্যাবর্তনটি ফাইল এর পরিবর্তে ফাইলগুলিকে স্পর্শ করতে পারে, আপনি ক্ষতিকারক পরিবর্তনগুলি দেখতে পারেন, যাতে আপনি চান তাই করার পরে সাবধানে ফলাফল পরীক্ষা করতে।.

54
gitster

হাস্যকরভাবে, 'git checkout foo' কাজ করবে না যদি কাজ কপি foo নামে একটি ডিরেক্টরিতে থাকে; যাইহোক, উভয় 'git checkout HEAD foo' এবং 'git checkout ./foo' উভয়ই করবে:

$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D   foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
36
Aaron Maenpaa

rebase কিভাবে কাজ করে তা এখানে:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>

আপনি আছে অনুমান

---o----o----o----o  master
    \---A----B       <my branch>

প্রথম দুটি কমান্ড ... জিট চেকআউট গিট রিবেস মাস্টার

... master শাখায় আপনি যে পরিবর্তনগুলি প্রয়োগ করতে চান তা শাখাটি দেখুন। rebase কমান্ডটি <my branch> (যা master তে পাওয়া যায় না) থেকে কৃতিত্বগুলি গ্রহণ করে এবং master এর শীর্ষে তাদের প্রয়োগ করে। অন্য কথায়, <my branch> এর প্রথম কমিটির পিতা-মাতা master ইতিহাসের পূর্ববর্তী কমিটি নয়, বরং master এর বর্তমান প্রধান। দুটি কমান্ড একই রকম:

git rebase master <my branch>

"বেস" এবং "পরিবর্তন" শাখার উভয়ই সুস্পষ্ট হিসাবে এই কমান্ডটি মনে রাখা সহজ হতে পারে।.

। চূড়ান্ত ইতিহাস ফলাফল হল:

---o----o----o----o   master
                   \----A'----B'  <my branch>

চূড়ান্ত দুটি আদেশ ...

git checkout master
git merge <my branch>

... master এ সমস্ত <my branch> পরিবর্তনগুলি প্রয়োগ করার জন্য একটি ফাস্ট-ফরওয়ার্ড মার্জ করুন। এই পদক্ষেপ ছাড়া, রিবেস কমিটি master তে যোগ করা হয় না। চূড়ান্ত ফলাফল হল:

---o----o----o----o----A'----B'  master, <my branch>

master এবং <my branch> উভয় রেফারেন্স B'। এছাড়াও, এই বিন্দু থেকে <my branch> রেফারেন্সটি মুছতে নিরাপদ।.

git branch -d <my branch>
32
cmcginty

প্রথম টার্গেট ফাইলের জন্য হেড রিসেট করুন

git reset HEAD path_to_file

দ্বিতীয় চেকআউট যে ফাইল

git checkout -- path_to_file
23
Gulshan Maurya

গিট-এলিয়াস, অচল এবং শেল-ফাংশন উদ্ধার!

git prevision <N> <filename>

<N> ফাইল <filename> ফাইলের জন্য রোলব্যাকের সংশোধনের সংখ্যা।.
উদাহরণস্বরূপ, x/y/z.c একটি একক ফাইলের অবিলম্বে পূর্ববর্তী পুনর্বিবেচনার চেকআউট চেক করতে

git prevision -1 x/y/z.c

কিভাবে গিট বাধা কাজ করে?

আপনার gitconfig এ নিচের যোগ করুন

[alias]
        prevision = "!f() { git checkout `git log --oneline $2 |  awk -v commit="$1" 'FNR == -commit+1 {print $1}'` $2;} ;f"

মূলত কমান্ড

  • নির্দিষ্ট ফাইল এবং git log সঞ্চালন করে
  • ফাইলের ইতিহাসে যথোপযুক্ত সৃষ্টিকর্তা বাছাই করে
  • নির্দিষ্ট ফাইলের জন্য commit-আইডি git checkout চালায়।.

মূলত, এই সমস্ত পরিস্থিতিতে নিজে নিজে যে কাজ করবে,
এক সুন্দর, কার্যকর গিট-উদীয় মধ্যে আবৃত - গিট-প্রতিরোধ

21
TheCodeArtist

যদি আপনি কোনও ফাইলটিকে পূর্ববর্তী কমিটিতে ফেরত দিতে চান (এবং যে ফাইলটি আপনি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ করতে চান) আপনি এটি ব্যবহার করতে পারেন

git checkout HEAD^1 path/to/file

অথবা

git checkout HEAD~1 path/to/file

তারপর শুধু মঞ্চ এবং "নতুন" সংস্করণ কমিট।.

একটি বিভাজনের ক্ষেত্রে একটি কমিটির দুটি পিতামাতা থাকতে পারে এমন জ্ঞানের সাথে সশস্ত্র, আপনাকে জানা উচিত যে HEAD ^ 1 হল প্রথম পিতামাতা এবং HEAD ~ 1 হল দ্বিতীয় পিতামাতা।.

গাছের শুধুমাত্র একটি পিতা বা মাতা যদি হয় কাজ করবে।.

20
ModernIncantations

আমি EasyGit এখানে প্লাগ করতে হবে, যা একটি মোড়ক যা গিটগুলি ব্যবহারকারীদের বিভ্রান্তিকর করে নতুন উপায়ে আরও বেশি প্রবেশযোগ্য করে তুলতে পারে। এটি যে জিনিসগুলির মধ্যে একটি --- git revert এর আরো অর্থ প্রদান করুন । এই ক্ষেত্রে, আপনি কেবল বলবেন:

eg revertfoo/bar foo/baz

20
Aristotle Pagaltzis

উল্লেখ্য, যাইহোক, git checkout ./foo এবং git checkout HEAD ./foo হয় না ঠিক একই জিনিস; বিন্দু ক্ষেত্রে:

$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A

(দ্বিতীয় add সূচীতে ফাইলটি স্থির করে, তবে এটি প্রতিশ্রুতিবদ্ধ হয় না।)

Git checkout ./foo অর্থ --- ./foo থেকে সূচী; HEAD যোগ করার আগে Git নির্দেশ করে যে পথটি HEAD পুনর্বিবেচনা করার আগেই সেই পথটি ফেরত পাঠায়।.

18
Damien Diederen

এখানে অনেক পরামর্শ, অধিকাংশ git checkout $revision -- $file লাইন বরাবর। অস্পষ্ট বিকল্প একটি দম্পতি:

git show $revision:$file > $file

এবং, আমি সাময়িকভাবে একটি বিশেষ সংস্করণ দেখতে শুধু এটি ব্যবহার করি:

git show $revision:$file

অথবা

git show $revision:$file | vim -R -

(ওবিএস: $file./ দিয়ে prefixed করতে হবে যদি এটি git show $revision:$file এর কাজ করার জন্য আপেক্ষিক পথ হয়)

এবং এমনকি আরো অদ্ভুত:

git archive $revision $file | tar -x0 > $file
16
Peter V. Mørch

আমার জন্য কোন উত্তর সত্যিই স্পষ্ট লাগেনি এবং তাই আমি সুপার সহজ মনে মনে খনি যোগ করতে চাই।.

আমি abc1 একটি কমিট আছে এবং তারপরে আমি file.txt ফাইলটিতে কয়েকটি (বা একটি সংশোধন) করেছি।.

এখন বলুন যে আমি file.txt ফাইলে কিছু আপগ্রেড করেছি এবং আমি পূর্ববর্তী কমিটিতে ফিরে যেতে চাই abc1

1 .git checkout file.txt: যদি আপনার প্রয়োজন হয় না তবে এটি স্থানীয় পরিবর্তনগুলি সরিয়ে দেবে

2 .git checkout abc1 file.txt: এটি আপনার ফাইলটি আপনার কাছে আনবে চেয়েছিলেন সংস্করণ

3 .git commit -m "Restored file.txt to version abc1": এটি আপনার প্রত্যাবর্তন করবে।.

  1. git Push: এটি রিমোট রিপোজিটরিতে সবকিছু পুশ করবে

ধাপ ২ এবং 3 এর মধ্যে অবশ্যই আপনি কি করছেন তা বুঝতে git status করতে পারেন। সাধারণত আপনি file.txt ইতিমধ্যে যোগ করা উচিত এবং এই কারণে git add এর কোন প্রয়োজন নেই।.

12
kalmanIsAGameChanger

ফাইলটির পূর্ববর্তী কমিটির সংস্করণটিতে যাওয়ার জন্য, commit সংখ্যাটি পান, তারপর eb917a1 বলুন

git checkout eb917a1 YourFileName

আপনি শুধু শেষ commited সংস্করণ ফিরে যেতে হবে

git reset HEAD YourFileName
git checkout YourFileName

এটি কেবল আপনাকে ফাইলটির সর্বশেষ প্রতিশ্রুতিবদ্ধ অবস্থায় নিয়ে যাবে

11
shah1988

git checkout ref | commitHash - filePath

উদাহরণস্বরূপ.

git checkout HEAD~5 -- foo.bar
or 
git checkout 048ee28 -- foo.bar
10
Amos Folarin

নির্দিষ্ট সংস্করণের জন্য হ্যাশ কীটি পেতে git log ব্যবহার করুন এবং তারপরে git checkout <hashkey> ব্যবহার করুন

দ্রষ্টব্য: শেষের আগে হ্যাশ টাইপ করতে ভুলবেন না। শেষ হ্যাশ আপনার বর্তমান অবস্থান নির্দেশ করে (HEAD) এবং কিছুই পরিবর্তন করে।.

8
mustafakyr

এখানে অনেক উত্তর git reset ... <file> বা git checkout ... <file> ব্যবহার করার দাবি করে তবে এটি করার মাধ্যমে, আপনি যে রিভিউটি প্রত্যাবর্তন করতে চান তার পরে আপনি <file>- এ প্রতিটি পরিবর্তনগুলি হ্রাস করবেন।.

যদি আপনি কেবলমাত্র এক ফাইলের জন্য একটি কমিট থেকে পরিবর্তনগুলি প্রত্যাবর্তন করতে চান, ঠিক যেমন git revert কাজ করবে তবে শুধুমাত্র একটি ফাইলের জন্য (অথবা কমিট ফাইলগুলির উপসেট বলতে হবে), আমি git diff এবং git apply উভয়টি ব্যবহার করার পরামর্শ দিই (<sha> = আপনি ফেরত দিতে চান কমিটির হ্যাশ):

git diff <sha>^ <sha> path/to/file.ext | git apply -R

মূলত, এটি প্রথমে আপনি যে পরিবর্তনগুলি প্রত্যাবর্তন করতে চান তার সাথে একটি প্যাচ তৈরি করবে এবং তারপরে সেই পরিবর্তনগুলিকে বাদ দেওয়ার জন্য প্যাচটিকে বিপরীত-প্রয়োগ করুন।.

অবশ্যই, যদি <sha1> এবং HEAD (দ্বন্দ্ব) এর মধ্যে কোনও কমিটির দ্বারা উল্টানো লাইন সংশোধন করা হয় তবে এটি কাজ করবে না।.

8
Vince

স্পষ্টতই কেউ কেউ গিট উপর একটি বুদ্ধিমান বই লিখতে প্রয়োজন, বা গিট ডকুমেন্টেশন ভাল ব্যাখ্যা করা প্রয়োজন। এই একই সমস্যা সঙ্গে মুখোমুখি আমি যে অনুমান

cd <working copy>
git revert master

করণীয় যা শেষ কমিট পূর্বাবস্থায় ফেরানো হবে।.

ইয়ান

7
Ian Davis

যদি আপনি আপনার শেষ কাজগুলিতে ভুল ফাইলটি করেন তবে নির্দেশ অনুসরণ করুন:

  1. ওপেন সোর্স ট্রি, এই কমিট পরিবর্তন

open source tree

  1. লাইন পরিবর্তন করুন এবং আপনার প্রতিবেদনে ভুল ফাইলটি প্রেরণ হিসাবে পাঠানো হয়েছে

enter image description here

  1. আপনি যে পরিবর্তন আপনার পরিবর্তন তালিকা দেখতে পারেন list of files in the source tree
  2. এটি নির্বাচন করুন এবং তারপরে ডানদিকে ক্লিক করুন ... ফাইল বিপরীত ক্লিক করুন
  3. তারপরে আপনি নীচের বাম পাশে ফাইল স্ট্যাটাস ট্যাবে এটি দেখতে পারেন তারপর unstage ক্লিক করুন:

file status tab

  1. আপনার ভিজ্যুয়াল স্টুডিও কোড খুলুন এবং আপনার সরানো ফাইল সম্পাদন করে ফিরে ফিরে
  2. সব পরে, আপনি উৎস গাছ আপনার শেষ কমিটিতে ফলাফল দেখতে পারেন

enter image description here

6
saber tabatabaee yazdi
  1. Git একটি নির্দিষ্ট কমিটিতে ফাইল ফিরে

জিট চেকআউট Last_Stable_commit_Number - ফাইল নাম

2. একটি নির্দিষ্ট শাখায় ফাইল ফিরে যান

git checkout branchName_Which_Has_stable_Commit fileName
5
ireshika piyumalie
git revert <hash>

একটি প্রদত্ত কমিট প্রত্যাবর্তন করবে। আপনার মনে হয় git revert কেবলমাত্র সাম্প্রতিকতম কমিটিতে প্রভাব ফেলে।.

এটি আপনার সমস্যার সমাধান করে না, যদি আপনি কোনও নির্দিষ্ট ফাইলে পরিবর্তনটি প্রত্যাবর্তন করতে চান এবং সেই ফাইলটি তার চেয়ে বেশি পরিবর্তিত হয়।.

4
Otto

আপনি 4 টি ধাপে এটি করতে পারেন:

  1. আপনি যে ফাইলটি বিশেষভাবে প্রত্যাহার করতে চান তার সাথে পুরো কমিটিটি ফিরিয়ে আনুন - এটি আপনার শাখায় একটি নতুন কমিটি তৈরি করবে
  2. নরম রিসেট যে কমিট - কমিটি অপসারণ এবং কাজ এলাকায় পরিবর্তন চালায়
  3. ফিরিয়ে আনতে এবং তাদের প্রতিশ্রুতি ফাইল হ্যান্ডপিক
  4. আপনার কাজ এলাকায় সব অন্যান্য ফাইল ড্রপ

আপনার টার্মিনালে টাইপ করার দরকার কী:

  1. git revert <commit_hash>
  2. git reset HEAD~1
  3. git add <file_i_want_to_revert> & git commit -m 'reverting file'
  4. git checkout .

সৌভাগ্য কামনা করছি

4
Nir M.

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

# git checkout <previous commit_id> <file_name>
# git commit --amend

এই খুব সহজ। যদি আমরা কোনও পূর্ববর্তী কমিটির কোনও পূর্ববর্তী কমিটির কাছে কোনও ফাইল আনতে চাই তবে আমরা সহজেই এটি করতে পারি।.

3
Abhishek Dwivedi

এখানে আমার উপায়।.

ক) অ্যান্ড্রয়েড স্টুডিওতে, ফাইলটি খুলুন।.

খ) গিট -> ইতিহাস দেখান, পূর্ববর্তী কমিটিটি আমি প্রত্যাবর্তন করতে চাই। Commit_আইডি পান (অর্থাত হ্যাশ করুন)।.

গ) git checkout commit_id file_path

1
Francis Bacon

আপনি যদি জিট এক্সটেনশানগুলি ব্যবহার করেন এবং আপনি কেবলমাত্র ফাইলটির জন্য পিতামাতা কমিটিতে ফিরে যেতে চান তবে আপনি যে পরিবর্তনগুলি প্রত্যাবর্তন করতে চান তা নির্বাচন করতে পারেন, তারপরে বিবরণ দফায় 'ডিফ' ট্যাব নির্বাচন করুন, ডান-ক্লিক করুন আপনি যে ফাইলটি ফিরতে চান, তারপরে 'ফাইল (গুলি) পুনরায় সেট করুন' ...., তারপর 'A' (পিতা-মাতা)

1
Chris Halcrow