git - কিভাবে আগে 'গিট অ্যাড' পূর্বাবস্থায় ফেরাতে হবে?




version-control git-commit git-stage (25)

git add myfile.txt # এই প্রতিশ্রুতিবদ্ধ তালিকা হতে আপনার ফাইল যোগ করা হবে

এই কমান্ডের বিপরীতে বিপরীত,

git reset HEAD myfile.txt  # this will undo it. 

সুতরাং, আপনি পূর্ববর্তী অবস্থায় হতে হবে। উল্লিখিত তালিকা আবার হবে (পূর্ববর্তী রাষ্ট্র)।

এটা যে নির্দিষ্ট ফাইল দিয়ে আপনার মাথা রিসেট হবে। সুতরাং, যদি আপনার মাথার অর্থ না থাকে তবে এটি কেবল এটি পুনরায় সেট করবে

কমান্ডটি ব্যবহার করে আমি ভুলভাবে ফাইল যোগ করেছি:

git add myfile.txt

আমি এখনও git commit চালানো হয়নি। এটি পূর্বাবস্থায় ফিরিয়ে আনতে কোন উপায় আছে, তাই এই ফাইলগুলি কি কমিটিতে অন্তর্ভুক্ত করা হবে না?

এখন পর্যন্ত 48 টি উত্তর আছে (কিছু মুছে ফেলা হয়েছে)। আপনার নতুন কিছু না থাকলে নতুন এক যোগ করবেন না।


এই কমান্ডটি আপনার পরিবর্তনগুলি আনস্টশ করবে:

git reset HEAD filename.txt

আপনি ব্যবহার করতে পারেন

git add -p 

ফাইল অংশ যোগ করতে।


ব্যাখ্যা করার জন্য: git add চলমান ডিরেক্টরি থেকে স্টেজিং এলাকা (সূচী) থেকে পরিবর্তনগুলি পরিবর্তন করে।

এই প্রক্রিয়া স্টেজিং বলা হয়। সুতরাং পরিবর্তনগুলি (পরিবর্তিত ফাইল) পর্যায়ক্রমে সর্বাধিক প্রাকৃতিক কমান্ডটি হল:

git stage

git add git stage জন্য git stage টাইপ করা একটি সহজ

দু: খ নেই কোন git unstage না git unadd কমান্ড আছে। প্রাসঙ্গিক এক অনুমান বা মনে কঠিন, কিন্তু বেশ স্পষ্ট:

git reset HEAD --

আমরা সহজেই এই জন্য একটি উপনাম তৈরি করতে পারেন:

git config --global alias.unadd 'reset HEAD --'
git config --global alias.unstage 'reset HEAD --'

এবং অবশেষে, আমাদের নতুন কমান্ড আছে:

git add file1
git stage file2
git unadd file2
git unstage file1

ব্যক্তিগতভাবে আমি এমনকি ছোট aliases ব্যবহার:

git a #for staging
git u #for unstaging

গিট যোগ ব্যবহার পূর্বাবস্থায় ফিরিয়ে আনুন

git reset filename


* একাধিক ফাইল হ্যান্ডেল করতে * কমান্ড ব্যবহার করুন

git reset HEAD *.prj
git reset HEAD *.bmp
git reset HEAD *gdb*

ইত্যাদি


গ্রহনযোগ্য উত্তরের একটি সংযোজন, যদি আপনার ভুলভাবে যোগ করা ফাইলটি বিশাল ছিল তবে আপনি সম্ভবত লক্ষ্য করবেন যে, এটি ' git reset ' সহ সূচী থেকে সরিয়ে দেওয়ার পরেও এটি এখনও .git ডিরেক্টরির মধ্যে স্থান দখল করে। এটি সম্পর্কে চিন্তিত হওয়ার কিছু নেই, ফাইল প্রকৃতপক্ষে রেজোজিটরিতে রয়েছে, তবে কেবল "আলগা বস্তু" হিসাবে, এটি অন্য সংগ্রহস্থলগুলিতে (ক্লোন, ধাক্কা দিয়ে) অনুলিপি করা হবে না এবং স্থানটির অবশেষে পুনরুদ্ধার করা হবে - যদিও সম্ভবত খুব শীঘ্রই না। আপনি উদ্বিগ্ন হলে, আপনি চালাতে পারেন:

git gc --prune=now

হালনাগাদ (অনুসরণ করা বেশিরভাগ আপ-ভোট দেওয়া উত্তরগুলি থেকে উদ্ভূত কিছু বিভ্রান্তি সাফ করার আমার প্রচেষ্টাটি অনুসরণ করে):

সুতরাং, git add আসল পূর্বাভাস যা?

git reset HEAD <file> ?

অথবা

git rm --cached <file> ?

কঠোরভাবে কথা বলা, এবং আমি ভুল না হলে: কেউ না

git add পূর্বাবস্থায় ফেরানো যাবে না - নিরাপদে, সাধারণভাবে।

আসুন প্রথমে git add <file> আসলে কি করে:

  1. যদি <file> পূর্বে ট্র্যাক করা না হয় git add তার বর্তমান সামগ্রী সহ ক্যাশে যোগ করে

  2. যদি <file> ইতিমধ্যে ট্র্যাক করা হয়েছে , git add ক্যাশে বর্তমান সামগ্রী (স্ন্যাপশট, সংস্করণ) সংরক্ষণ করে। জিআইটি-এ, এই ক্রিয়াটি এখনো যোগ করা হয় , (এটি কেবলমাত্র আপডেট নয়), কারণ একটি ফাইলের দুটি ভিন্ন সংস্করণ (স্ন্যাপশট) দুটি পৃথক আইটেম হিসাবে গণ্য করা হয়: অতএব, আমরা প্রকৃতপক্ষে ক্যাশে একটি নতুন আইটেম যোগ করছি পরে commited।

এই আলোকে, প্রশ্ন সামান্য দ্বিধান্বিত হয়:

আমি ভুলভাবে কমান্ড ব্যবহার করে ফাইল যোগ করা ...

অপারেটিং সিস্টেমের দৃশ্যটি প্রথমটি (অপ্রকাশিত ফাইল) বলে মনে হচ্ছে, আমরা ট্র্যাক হওয়া আইটেমগুলি থেকে ফাইল (কেবলমাত্র বর্তমান সামগ্রী নয়) মুছে ফেলতে "পূর্বাবস্থায় ফেরা" চাই। এই ক্ষেত্রে যদি, তাহলে এটি git rm --cached <file> চালানো ঠিক।

এবং আমরা git reset HEAD <file> চালাতে পারি। এটি স্বাভাবিকভাবেই ভাল, কারণ এটি উভয় ক্ষেত্রেই কাজ করে: এটি পূর্বরূপও ঘটে যখন আমরা ভুলভাবে ইতিমধ্যে ট্র্যাক করা আইটেমটির একটি সংস্করণ যোগ করি।

কিন্তু দুটি ক্যাভিট আছে।

প্রথমতঃ (উত্তর হিসাবে উল্লেখ করা হয়েছে) git rm --cached কেবলমাত্র একটি দৃশ্যকল্প যা git reset HEAD কাজ করে না, তবে git rm --cached : একটি নতুন সংগ্রহস্থল (কোনও কাজ নেই)। কিন্তু, সত্যিই, এটি একটি বাস্তব অপ্রাসঙ্গিক ক্ষেত্রে।

দ্বিতীয়ত: জিট git reset HEAD যাদুকরভাবে পূর্বে ক্যাশেড ফাইল সামগ্রী পুনরুদ্ধার করতে পারে না তা সচেতন থাকুন, এটি কেবল HEAD থেকে এটি পুনর্বিন্যস্ত করে। যদি আমাদের বিভ্রান্তিকর গিটটি পূর্ববর্তী স্ট্যাজড অসমাপ্ত সংস্করণটিকে ওভাররোট করে git add আমরা এটি পুনরুদ্ধার করতে পারছি না। তাই, কঠোরভাবে বলছি, আমরা পূর্বাবস্থায় ফেরাতে পারি না [*]।

উদাহরণ:

$ git init
$ echo "version 1" > file.txt
$ git add file.txt   # first add  of file.txt
$ git commit -m 'first commit'
$ echo "version 2" > file.txt
$ git add  file.txt   # stage (don't commit) "version 2" of file.txt
$ git diff --cached file.txt
-version 1
+version 2
$ echo "version 3" > file.txt   
$ git diff  file.txt
-version 2
+version 3
$ git add  file.txt    # oops we didn't mean this
$ git reset HEAD file.txt  # undo ?
$ git diff --cached file.txt  # no dif, of course. stage == HEAD
$ git diff file.txt   # we have lost irrevocably "version 2"
-version 1
+version 3

অবশ্যই, আমরা শুধুমাত্র নতুন ফাইল (কেস 1) যোগ করার জন্য 'গিট অ্যাড' করার স্বাভাবিক অলস কার্যপ্রণালী অনুসরণ করি, এবং আমরা commit, git commit -a কমান্ডের মাধ্যমে নতুন সামগ্রী আপডেট করি তা খুব গুরুতর নয়।

* (সম্পাদনা: উপরেরটি কার্যত সঠিক, তবে এখনও কিছুটা হ্যাকিশ / কনটলিউটেড উপায় হতে পারে যা পরিবর্তনগুলি পুনরুদ্ধারের জন্য কিন্তু প্রতিশ্রুতিবদ্ধ না হয়ে ওভাররাইট করা হয়েছে - জোহানেস মটোকিক এবং আইলসমিট দ্বারা মন্তব্য দেখুন)


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

git reset *

প্রশ্ন পরিষ্কারভাবে প্রকাশ করা হয় না। কারণ git add দুটি অর্থ আছে:

  1. স্টেজিং এলাকায় একটি নতুন ফাইল যোগ করা, তারপর git rm --cached file সঙ্গে পূর্বাবস্থায় git rm --cached file
  2. স্টেজিং এলাকায় একটি সংশোধিত ফাইল যোগ, তারপর git reset HEAD file সঙ্গে পূর্বাবস্থায় ফেরা।

সন্দেহ থাকলে, ব্যবহার করুন

git reset HEAD file

এটা উভয় ক্ষেত্রে প্রত্যাশিত জিনিস কারণ।

সতর্কতা: যদি আপনি git rm --cached file কোনও ফাইলে সংশোধন করেন (একটি ফাইল যা রিপোজিটোরিতে আগে বিদ্যমান ছিল), তবে git rm --cached file সরানো হবে! এটি এখনও আপনার ফাইল সিস্টেমের মধ্যে উপস্থিত থাকবে, তবে অন্য কেউ যদি আপনার প্রতিশ্রুতিটি টেনে নেয় তবে ফাইলটি তাদের কাজের গাছ থেকে মুছে ফেলা হবে।

ফাইলটি একটি নতুন ফাইল বা সংশোধন করা হলে git status আপনাকে জানাবে:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   my_new_file.txt
    modified:   my_modified_file.txt

ইতিমধ্যে যোগ করা একটি ফাইল পূর্বাবস্থায় ফিরিয়ে আনুন যেটি ইতিমধ্যে যোগ করা myfile.txt পুনরায় সেট করার জন্য, git ব্যবহার করে বেশ সহজ।

git reset HEAD myfile.txt

ব্যাখ্যা করা:

আপনি অবাঞ্ছিত ফাইল (গুলি) পরিচালনা করার পরে, পূর্বাবস্থায় ফিরিয়ে আনতে, আপনি git reset করতে পারেন, Head স্থানীয় আপনার ফাইলের প্রধান এবং শেষ প্যারামিটারটি আপনার ফাইলের নাম।

আমি আপনার জন্য আরও বিশদে নীচের চিত্রটিতে পদক্ষেপগুলি তৈরি করেছি, এই ক্ষেত্রে যা ঘটতে পারে তা সহ:


git remove বা git rm এই জন্য ব্যবহার করা যেতে পারে, - --cached পতাকা। চেষ্টা করুন:

git help rm

আপনার আসন্ন কমিটি থেকে শুধু যোগ করা ফাইল মুছে ফেলার জন্য git add -i ব্যবহার git add -i । উদাহরণ:

আপনি না চান ফাইল যোগ করা:

$ git add foo
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   foo
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
# [...]#

আপনার যোগটি পূর্বাবস্থায় ফিরিয়ে আনতে ইন্টারেক্টিভ যোগে যান (এখানে জিট এ টাইপ করা কমান্ডগুলি "r" (বিপরীত), "1" (তালিকার প্রত্যাবর্তন শোতে প্রথম এন্ট্রি), রিভার্ট মোড থেকে বাদ দেওয়ার জন্য 'প্রত্যাবর্তন' এবং "q" (প্রস্থান করার):

$ git add -i
           staged     unstaged path
  1:        +1/-0      nothing foo

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> r
           staged     unstaged path
  1:        +1/-0      nothing [f]oo
Revert>> 1
           staged     unstaged path
* 1:        +1/-0      nothing [f]oo
Revert>> 
note: foo is untracked now.
reverted one path

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> q
Bye.
$

এটাই! এখানে আপনার প্রমাণ রয়েছে, যে দেখাচ্ছে যে "foo" অট্যাকড তালিকাতে ফিরে এসেছে:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
# [...]
#       foo
nothing added to commit but untracked files present (use "git add" to track)
$

অন্যান্য উত্তর হিসাবে আপনি git reset ব্যবহার করতে পারেন

কিন্তু:

আমি এই দুর্দান্ত সামান্য পোস্টটি পেয়েছি যা আসলে Git git unadd জন্য Git কমান্ড (ভাল একটি git unadd ) যোগ করে: বিস্তারিত জানার জন্য git unadd দেখুন।

কেবল,

git config --global alias.unadd "reset HEAD"

এখন তুমি পার

git unadd foo.txt bar.txt

তুমি চাও:

git rm --cached <added_file_to_undo>

রিজনিং:

যখন আমি এই নতুন ছিল, আমি প্রথম চেষ্টা

git reset .

(আমার সম্পূর্ণ প্রাথমিক যোগ পূর্বাবস্থায় ফেরাতে), শুধুমাত্র এটি (তাই নয়) সহায়ক বার্তাটি পেতে:

fatal: Failed to resolve 'HEAD' as a valid ref.

এটি দেখা দেয় যে এটি হ'ল HEAD রেফারেন্স (শাখা?) প্রথম কমিটির পরে বিদ্যমান নেই। অর্থাৎ, আপনি যদি আমার কর্মপ্রবাহ, আমার মত, আমার মত একই beginner এর সমস্যা মধ্যে চালানো হবে:

  1. জিডি, নতুন গরমতা চেষ্টা করার জন্য আমার মহান নতুন প্রকল্প ডিরেক্টরির সিডি
  2. git init
  3. git add .
  4. git status

    ... দ্বারা বিষ্ঠা স্ক্রোল প্রচুর ...

    => অবাক, আমি যে সব যোগ করতে চাই না।

  5. google "undo git add"

    => স্ট্যাক ওভারফ্লো খুঁজুন - হ্যাঁ

  6. git reset .

    => মারাত্মক: একটি বৈধ রেফারেন্স হিসাবে 'HEAD' সমাধান করতে ব্যর্থ।

এটি আরও সক্রিয় করে যে মেইলিং লিস্টে এটির অসহায়ত্বের বিরুদ্ধে একটি ত্রুটি রয়েছে

এবং যে সঠিক সমাধান Git স্ট্যাটাস আউটপুট সেখানে ছিল (যা, হ্যাঁ, আমি 'বাদাম হিসাবে glossed)

...
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
...

এবং সমাধান প্রকৃতপক্ষে git rm --cached FILE ব্যবহার করা হয়।

এখানে অন্যত্র সতর্কতাগুলি লক্ষ্য করুন - git rm আপনার স্থানীয় স্থানীয় অনুলিপি ফাইলটি মুছে ফেলে, তবে আপনি যদি --cached ব্যবহার করেন না । এখানে git help rm ফলাফল এর:

--cached কেবলমাত্র সূচক থেকে পথগুলি সরাতে এবং সরানোর জন্য এই বিকল্পটি ব্যবহার করুন। কাজ গাছ ফাইল, সংশোধন বা না, বাকি থাকবে।

আমি ব্যবহার এগিয়ে যান

git rm --cached .

সবকিছু মুছে ফেলুন এবং আবার শুরু করুন। যদিও কাজ না, কারণ যখন add . recursive হয়, rm প্রয়োজন সক্রিয় -r recurs। দীর্ঘশ্বাস.

git rm -r --cached .

ঠিক আছে, এখন আমি ফিরে এসেছি যেখানে আমি শুরু করেছি। পরবর্তী সময় আমি একটি শুষ্ক চালনা করতে -n ব্যবহার করতে যাচ্ছি এবং দেখতে হবে কী যোগ করা হবে:

git add -n .

--cached ধ্বংস না করে (এবং যদি আমি এটি বানান ভুল করি) সম্পর্কে --cached git help rm বিশ্বাস করার আগে আমি সবকিছু নিরাপদে --cached


আপনি যদি আপনার প্রাথমিক কমিটিতে থাকেন এবং আপনি গিট রিসেট ব্যবহার করতে না পারেন তবে কেবল "গিট দেউলিয়া" ঘোষণা করুন এবং .git ফোল্ডার মুছুন এবং শুরু করুন


উল্লেখ্য, যদি আপনি একটি সংশোধন নির্দিষ্ট করতে ব্যর্থ হন তবে আপনাকে একটি বিভাজক অন্তর্ভুক্ত করতে হবে। আমার কনসোল থেকে উদাহরণ:

git reset <path_to_file>
fatal: ambiguous argument '<path_to_file>': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

git reset -- <path_to_file>
Unstaged changes after reset:
M   <path_to_file>

(গিট সংস্করণ 1.7.5.4)


আপনি যখন একটি নতুন প্রকল্প শুরু করেন তখন এই ভীতিকর সমস্যা এড়াতে এখানে একটি উপায়:

  • আপনার নতুন প্রকল্পের জন্য প্রধান ডিরেক্টরি তৈরি করুন।
  • git init চালানো চালান।
  • এখন একটি। Gitignore ফাইল তৈরি করুন (এমনকি যদি এটি খালি)।
  • আপনার। জিটিগনোর ফাইল Commit।

Git যদি আপনার কোন মতামত না থাকে তবে জিট রিসেটটি করা সত্যিই কঠিন করে তোলে। আপনি যদি শুধুমাত্র একটি থাকার জন্য একটি ছোট প্রাথমিক প্রাথমিক তৈরি করেন তবে এর পরে আপনি git add -A এবং git reset যতবার চান ততবার আপনি ঠিক করতে পারেন।

এই পদ্ধতির আরেকটি সুবিধা হল যে যদি আপনি পরে লাইন-শেষ সমস্যাগুলি চালান এবং আপনার সমস্ত ফাইল রিফ্রেশ করতে চান তবে এটি সহজ:

  • যে প্রাথমিক কমিটি পরীক্ষা করে দেখুন। এই আপনার সব ফাইল মুছে ফেলা হবে।
  • তারপর আবার আপনার সাম্প্রতিক কমিটি চেক আউট। এটি আপনার বর্তমান লাইন শেষ সেটিংস ব্যবহার করে আপনার ফাইলগুলির নতুন কপি পুনরুদ্ধার করবে।

আপনি যদি টাইপ করেন:

git status

গিট আপনাকে কীভাবে স্টেজ করা হবে ইত্যাদি বলবে, কীভাবে অস্থির করা যায় তার নির্দেশাবলী সহ:

use "git reset HEAD <file>..." to unstage

আমি git এই মত পরিস্থিতিতে সঠিক জিনিস আমাকে nudging একটি চমত্কার ভাল কাজ করে না।

দ্রষ্টব্য: সাম্প্রতিক গিট সংস্করণ (1.8.4.x) এই বার্তাটি পরিবর্তন করেছে:

(use "git rm --cached <file>..." to unstage)

চালান

git gui

এবং ম্যানুয়াল সমস্ত ফাইল ম্যানুয়ালি বা তাদের সব নির্বাচন করে এবং কমিট বাটন থেকে unstage ক্লিক করে মুছে ফেলুন।


git reset filename.txt

বর্তমান সূচী থেকে filename.txt নামক একটি ফাইল মুছে ফেলবে, যা "অন্য কিছু করা" এলাকা ছাড়া অন্য কিছু পরিবর্তন না করে।


git reset filename.txt  

বর্তমান সূচী থেকে filename.txt নামক একটি ফাইল মুছে ফেলবে, যা "অন্য কিছু করা" এলাকা ছাড়া অন্য কিছু পরিবর্তন না করে।


Git কল্পনাযোগ্য প্রতিটি কর্মের জন্য কমান্ড আছে, তবে সঠিক জিনিসগুলি পেতে ব্যাপক জ্ঞান প্রয়োজন এবং এর ফলে এটি সেরা-পাল্টা-জ্ঞানীয় ...

আপনি আগে কি করেছেন:

  • একটি ফাইল পরিবর্তন এবং ব্যবহৃত git add . , অথবা git add <file>

তুমি কি চাও:

  • সূচী থেকে ফাইল সরান, কিন্তু এটি সংস্করণ রাখা এবং কাজ অনুলিপি মধ্যে অসামান্য পরিবর্তন সঙ্গে বামে:

    git reset head <file>
    
  • HEAD থেকে শেষ অবস্থাতে ফাইলটি পুনরায় সেট করুন, পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনুন এবং সূচী থেকে তাদের সরান:

    # Think `svn revert <file>` IIRC.
    git reset HEAD <file>
    git checkout <file>
    
    # If you have a `<branch>` named like `<file>`, use:
    git checkout -- <file>
    

    এই git reset --hard HEAD থেকে প্রয়োজন হয় - git reset --hard HEAD একক ফাইলের সাথে কাজ করবে না।

  • <file> সূচী এবং সংস্করণ থেকে সরান, আন-সংস্করণযুক্ত ফাইলটি অনুলিপি করা অনুলিপি অনুলিপি করে:

    git rm --cached <file>
    
  • <file> মুছে ফেলার কাজ এবং সংস্করণ সম্পূর্ণরূপে সরান:

    git rm <file>
    

আমি অবাক হচ্ছি যে কেউ ইন্টারেক্টিভ মোড উল্লেখ করে না:

git add -i

আন আনুন ফাইল 3 যোগ করুন। আমার ক্ষেত্রে আমি প্রায়শই একাধিক ফাইল যুক্ত করতে চাই, ইন্টারেক্টিভ মোড সহ আপনি ফাইল যোগ করার জন্য এইরকম সংখ্যা ব্যবহার করতে পারেন। এই সব নিতে হবে 4: 1,2,3,5

একটি ক্রম নির্বাচন করতে 1 থেকে 5 পর্যন্ত সবগুলি নিতে 1-5 টাইপ করুন।

Git স্টেজিং ফাইল


আপনি আপনার প্রশ্ন পোস্ট করার পরে সম্ভবত Git উন্নত হয়েছে।

$> git --version
git version 1.6.2.1

এখন, আপনি চেষ্টা করতে পারেন:

git reset HEAD .

এই আপনি খুঁজছেন কি হতে হবে।


git rm --cached . -r

আপনি আপনার বর্তমান ডিরেক্টরি থেকে ক্রমাগত যোগ করেছেন সবকিছু "আন-যোগ করুন" হবে


এটি একটি সাম্প্রতিক কমিটিতে সরাসরি রিসেট করার আরও একটি উপায়

git stash
git stash clear

শেষ কমিট থেকে আপনি যে সমস্ত পরিবর্তন করেছেন সেটি সরাসরি এটি সাফ করে।

PS: এটি একটি সামান্য সমস্যা আছে; এটা আপনি সম্প্রতি সংরক্ষিত স্ট্যাশ পরিবর্তন সব মুছে ফেলা। যা আমি বেশিরভাগ ক্ষেত্রে অনুমান করা উচিত নয়।





git version-control git-commit git-stage