গিটে হেড ও হেড between এর মধ্যে পার্থক্য কী?


755

আমি যখন গিটে কোনও পূর্বপুরুষের প্রতিশ্রুতিবদ্ধ বস্তু নির্দিষ্ট করি, তখন আমি HEAD^এবং এর মধ্যে বিভ্রান্ত হই HEAD~

উভয়ের একটি "সংখ্যাযুক্ত" সংস্করণ রয়েছে HEAD^3এবং এর মতো HEAD~2

এগুলি আমার কাছে খুব মিল বা একই বলে মনে হচ্ছে তবে কি টিলড এবং কেরেটের মধ্যে কোনও পার্থক্য রয়েছে?


64
লিঙ্কগুলি পেস্ট করা খারাপ, আমি জানি তবে এটি সবচেয়ে ভাল ব্যাখ্যা আমি খুঁজে পেয়েছি এবং এতে চিত্র রয়েছে। paulboxley.com/blog/2011/06/git-care-and-tilde
igor

4
লিঙ্কগুলি ভেঙে গেলে বিশেষত খারাপ হয়। এই কারণেই কিছু প্রশ্নের পেস্ট অনুলিপি করার ক্ষমতাটি যে কারণে এটি রোধ করতে সাহায্য করে এমন প্রশ্নের উত্তর দেওয়া নিরাপদ :)
স্যামুয়েল

উত্তর:


762

চলতি নিয়ম

  • ~বেশিরভাগ সময় ব্যবহার করুন - বেশিরভাগ প্রজন্মকে ফিরে যেতে, সাধারণত যা আপনি চান
  • ^মার্জ কমিটে ব্যবহার করুন - কারণ তাদের দুই বা ততোধিক (তাত্ক্ষণিক) জনক রয়েছে have

স্মৃতিবর্ধনবিদ্যা:

  • টিলডে ~চেহারা প্রায় লিনিয়ার এবং একটি সরল রেখায় পিছনে যেতে চায়
  • ক্যারেট ^রাস্তার একটি গাছ বা কাঁটাচামচ একটি আকর্ষণীয় বিভাগের পরামর্শ দেয়

টিল্ড

"নির্দিষ্ট করা পুনর্বিবেচনা" বিভাগে git rev-parseডকুমেন্টেশন সংজ্ঞায়িত ~হিসাবে

<rev>~<n>উদাহরণস্বরূপ,master~3 একটি পুনর্বিবেচনার প্যারামিটারের
প্রত্যয়টির ~<n>অর্থ কমিট অবজেক্ট যা কেবলমাত্র প্রথম পিতামাতাকে অনুসরণ করে নামকরণ করা কমিট অবজেক্টের n তম প্রজন্মের পূর্বপুরুষ। উদাহরণস্বরূপ, <rev>~3সমতূল্য <rev>^^^যা সমতূল্য <rev>^1^1^1...

আপনি যে কোনও প্রতিশ্রুতিবদ্ধতার পিতামাতার কাছে পেতে পারেন, কেবল তা নয় HEAD। আপনি প্রজন্মের মধ্যেও ফিরে যেতে পারেন: উদাহরণস্বরূপ, master~2মাস্টার শাখার ডগায় দাদা-পিতা, মার্জ কমিটে প্রথম পিতামাতার পক্ষে দেওয়া।

কাকপদ

গিটের ইতিহাস ননলাইন: একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ (ডিএজি) বা গাছ। শুধুমাত্র একটি পিতা বা মাতার সাথে প্রতিশ্রুতিবদ্ধ rev~এবং rev^একই জিনিস বোঝাতে। ক্যারেট সিলেক্টর মার্জ কমিটের সাথে দরকারী হয়ে যায় কারণ প্রত্যেকেই দুটি বা ততোধিক পিতামাতার সন্তান - এবং জীববিজ্ঞান থেকে ধারিত স্ট্রেন ভাষা।

HEAD^মানে বর্তমান শাখার অগ্রভাগের প্রথম তাত্ক্ষণিক অভিভাবক। HEAD^এর জন্য সংক্ষিপ্ত HEAD^1, এবং আপনি ঠিকানার মতো HEAD^2এবং ঠিকানার মতোও করতে পারেন । একই অধ্যায় git rev-parseডকুমেন্টেশন যেমন সংজ্ঞায়িত

<rev>^, যেমন HEAD^ ,v1.5.1^0
একটি প্রত্যয়ের ^পুর্নবিবেচনার প্যারামিটার প্রথম পিতা বা মাতা যে বস্তুর কমিট মানে। ^<n>এর অর্থ n পিতা বা মাতা ([ উদাঃ ] <rev>^এর সমতুল্য <rev>^1)। একটি বিশেষ নিয়ম হিসাবে, <rev>^0মানে প্রতিশ্রুতিবদ্ধ হওয়া এবং যখন ব্যবহৃত <rev>হয় কোনও ট্যাগ অবজেক্টের নাম যখন কোনও কমিট অবজেক্টকে বোঝায়।

উদাহরণ

এই স্পেসিফায়ার বা নির্বাচকগুলি নির্বিচারে শৃঙ্খলাবদ্ধ হতে পারে, উদাহরণস্বরূপ , topic~3^2ইংরেজিতে এই সংযুক্তির দ্বিতীয় পিতামাতা হ'ল শাখার বর্তমান নূরের বড়-পিতামহ (তিন প্রজন্মের পিছনে) topic

এর উপরোক্ত অধ্যায় git rev-parseডকুমেন্টেশন একটি ধারণাগত Git ইতিহাস মাধ্যমে অনেক পাথ ট্রেস। সময়টি সাধারণত নিচের দিকে প্রবাহিত হয়। কমিট ডি, এফ, বি এবং এ মার্জ কমিট হয়।

এখানে জন লোয়েলগার একটি চিত্র তুলে ধরেছেন। কমিট নোড বি এবং সি উভয়ই কমিট নোডের পিতা-মাতা P পিতামাতার কমিট বাম থেকে ডানে অর্ডার করা হয় are

G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A

A =      = A^0
B = A^   = A^1     = A~1
C = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2

গিট সংগ্রহস্থল তৈরি করতে নীচের কোডটি চালান যার ইতিহাস উদ্ধৃত চিত্রের সাথে মেলে।

#! /usr/bin/env perl

use strict;
use warnings;
use subs qw/ postorder /;
use File::Temp qw/ mkdtemp /;

my %sha1;
my %parents = (
  A => [ qw/ B C /               ],
  B => [ qw/     D E F /         ],
  C => [ qw/         F /         ],
  D => [ qw/           G H /     ],
  F => [ qw/               I J / ],
);

sub postorder {
  my($root,$hash) = @_;
  my @parents = @{ $parents{$root} || [] };
  postorder($_, $hash) for @parents;
  return if $sha1{$root};
  @parents = map "-p $sha1{$_}", @parents;
  chomp($sha1{$root} = `git commit-tree @parents -m "$root" $hash`);
  die "$0: git commit-tree failed" if $?;
  system("git tag -a -m '$sha1{$root}' '$root' '$sha1{$root}'") == 0 or die "$0: git tag failed";
}

$0 =~ s!^.*/!!;  # / fix Stack Overflow highlighting
my $repo = mkdtemp "repoXXXXXXXX";
chdir $repo or die "$0: chdir: $!";
system("git init") == 0               or die "$0: git init failed";
chomp(my $tree = `git write-tree`);      die "$0: git write-tree failed" if $?;

postorder 'A', $tree;
system "git update-ref HEAD   $sha1{A}"; die "$0: git update-ref failed" if $?;
system "git update-ref master $sha1{A}"; die "$0: git update-ref failed" if $?;

# for browsing history - http://blog.kfish.org/2010/04/git-lola.html
system "git config alias.lol  'log --graph --decorate --pretty=oneline --abbrev-commit'";
system "git config alias.lola 'log --graph --decorate --pretty=oneline --abbrev-commit --all'";

এটি কেবল নতুন থ্রোওয়ে রেপোতে এলিয়াস যুক্ত করেছে git lolএবংgit lola তাই আপনি ইতিহাসটি দেখতে পাচ্ছেন

$ git lol
*   29392c8 (HEAD -> master, tag: A) A
|\
| * a1ef6fd (tag: C) C
| |
|  \
*-. \   8ae20e9 (tag: B) B
|\ \ \
| | |/
| | *   03160db (tag: F) F
| | |\
| | | * 9df28cb (tag: J) J
| | * 2afd329 (tag: I) I
| * a77cb1f (tag: E) E
*   cd75703 (tag: D) D
|\
| * 3043d25 (tag: H) H
* 4ab0473 (tag: G) G

নোট করুন যে আপনার মেশিনে SHA-1 অবজেক্টের নাম উপরের চিত্রগুলির চেয়ে পৃথক হবে, তবে ট্যাগগুলি আপনাকে নাম অনুসারে কমিটগুলি সম্বোধন করতে এবং আপনার বোঝার জন্য পরীক্ষা করতে দেয়।

$ git log -1 --format=%f $(git rev-parse A^)
B
$ git log -1 --format=%f $(git rev-parse A~^3~)
I
$ git log -1 --format=%f $(git rev-parse A^2~)
F

"নির্দিষ্ট করা পুনর্বিবেচনা" এ git rev-parseডকুমেন্টেশন মহান তথ্য পূর্ণ এবং মূল্য একটি মধ্যে গভীরতা পঠিত। গিট সরঞ্জামগুলি - প্রো গিট বইটি থেকে সংশোধন নির্বাচন দেখুন ।

অর্ডার অফ প্যারেন্ট কমিটস

গিটের নিজস্ব ইতিহাস থেকে 89e4fcb0dd কমিট করা একত্রিত হওয়া কমিট, যেমন git show 89e4fcb0ddমার্জ শিরোনাম লাইনটি সাথে সাথে ইঙ্গিত দেয় যা পূর্ববর্তী পূর্বপুরুষদের অবজেক্টের নাম প্রদর্শন করে।

commit 89e4fcb0dd01b42e82b8f27f9a575111a26844df
Merge: c670b1f876 649bf3a42f b67d40adbb
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Oct 29 10:15:31 2018 +0900

    Merge branches 'bp/reset-quiet' and 'js/mingw-http-ssl' into nd/config-split […]

আমরা git rev-parseক্রমান্বয়ে 89e4fcb0dd এর তাত্ক্ষণিক পিতামাতাকে দেখাতে বলার মাধ্যমে অর্ডারটি নিশ্চিত করতে পারি ।

$ git rev-parse 89e4fcb0dd^1 89e4fcb0dd^2 89e4fcb0dd^3
c670b1f876521c9f7cd40184bf7ed05aad843433
649bf3a42f344e71b1b5a7f562576f911a1f7423
b67d40adbbaf4f5c4898001bf062a9fd67e43368

অস্তিত্বহীন চতুর্থ পিতামাতাকে জিজ্ঞাসা করা একটি ত্রুটির ফলস্বরূপ।

$ git rev-parse 89e4fcb0dd^4
89e4fcb0dd^4
fatal: ambiguous argument '89e4fcb0dd^4': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

যদি আপনি কেবল পিতামাতাকে নিষ্কাশন করতে চান তবে সম্পূর্ণ হ্যাশগুলির জন্য সুন্দর বিন্যাসটি %P ব্যবহার করুন

$ git log -1 --pretty=%P 89e4fcb0dd
c670b1f876521c9f7cd40184bf7ed05aad843433 649bf3a42f344e71b1b5a7f562576f911a1f7423 b67d40adbbaf4f5c4898001bf062a9fd67e43368

বা %pসংক্ষিপ্ত পিতামাতার জন্য।

$ git log -1 --pretty=%p 89e4fcb0dd
c670b1f876 649bf3a42f b67d40adbb

দেখে মনে হচ্ছে all সমস্ত মামলা পরিচালনা করতে পারে এবং কেউ কেন আশ্চর্য করতে পারে ~ প্রথম স্থানে উপস্থিত হয়েছিল। কীভাবে শুধু কাজ করে মনে আছে?
এসবিউ

এটি এখনও দুর্দান্ত বিভ্রান্তিকর ... ধরে নিচ্ছি জি হেড, তাই যদি আমি একটি হেড করি ^ তবে ডি হবে?
পটোশি パ ト 20 16'17

12
@duckx গ্রাফটি আসলে উপরের থেকে নীচে চলছে, সুতরাং A হ'ল সাম্প্রতিক প্রতিশ্রুতি এবং জি একটি প্রাচীনতম। আমি যা বলতে পারি তা থেকে জি থেকে ডি পর্যন্ত পথ এগিয়ে, পিছিয়ে নয়।
সোনাররাতিও

@ সিমনবুদিন আমার ধারণা, এর ^^^^^^^পরিবর্তে ~7এটি ব্যবহার করা খুব সুবিধাজনক নয় , তাই না? এজন্যই ~দরকারী
ইয়াকভএল

1
অদিত্যভিকাশ দেবিড়পল্লি এটি নিজের প্রশ্ন হিসাবে ভাল হবে।
গ্রেগ বেকন

340

মধ্যে পার্থক্য HEAD^এবং HEAD~ভাল চিত্রণ (জন Loeliger দ্বারা) দ্বারা বর্ণনা করা হয় পাওয়া http://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html

এই ডকুমেন্টেশনটি প্রাথমিকভাবে কিছুটা অস্পষ্ট হতে পারে তাই আমি নীচের চিত্রটির পুনরুত্পাদন করেছি:

G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A
A =      = A^0
B = A^   = A^1     = A~1
C = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2

12
শুধু একটা প্রশ্ন. দু'জনের বেশি বাবা-মা হওয়া কোনও প্রতিশ্রুতিবদ্ধভাবে কীভাবে সম্ভব? (খ দেখুন - এটির বাবা-মা হ'ল ডি, ই এবং এফ) আমি কল্পনা করি যে প্রতিশ্রুতিবদ্ধ হওয়া দু'জন পিতা-মাতার থাকতে পারে যখন এটি মার্জ কমিট হয় তবে আপনি কীভাবে একই সাথে 3 টি কমিটকে একীভূত করতে পারেন?
tsikov

যদি আমি ভুল না হয়ে থাকি তবে এটি সুস্পষ্ট হতে পারে তবে আমি মনে করি যে এটি নির্দিষ্ট করা উচিত যে হেড ~ বর্তমান শাখা অনুসরণ করে (নীচে উল্লিখিত ডিয়েগো ডায়াসের মতো)।
ফাইবো

2
অতিরিক্তভাবে F = A^2^,।
মতিন উলহাক

2
সুতরাং, ^ == ^1 == LEFTMOST PARENT, ^2 == SECOND LEFTMOST PARENTএদিক ওদিক তাই। আর ~ == ~1 == LEFTMOST PARENT, ~2 == LEFTMOST PARENTS LEFTMOST PARENT == LEFTMOST GRANDPARENT। এক্সটেনশন দ্বারা,~2^2 == LEFTMOST GRANDPARENTS SECOND LEFTMOST PARENT
আলেকজান্ডার টর্স্টলিং

1
এই টুইটটি আমার পক্ষে অত্যন্ত সহায়ক ছিল তবে, এখানে বাম এবং ডান মানে কী?
বহুভিত্তিক_ডোনট

287

উভয়ই ~এবং নিজস্বভাবে প্রতিশ্রুতিবদ্ধতার পিতামাতাকে বোঝায় ^( ~~এবং ^^উভয়ই দাদা-দাদার প্রতিশ্রুতি ইত্যাদি উল্লেখ করে) তবে সংখ্যার সাথে ব্যবহার করার সময় তারা অর্থের সাথে পৃথক হয়:

  • ~2যদি প্রতিশ্রুতিবদ্ধতার একাধিক পিতা-মাতা থাকে তবে প্রথম পিতামাতার মাধ্যমে স্তরের স্তরের স্তরের দুটি স্তর পর্যন্ত বোঝায়

  • ^2মানে দ্বিতীয় পিতা-মাতা যেখানে প্রতিশ্রুতিবদ্ধতার একাধিক পিতামাত থাকে (যেমন এটি একীভূত হওয়ার কারণে)

এগুলিকে একত্রিত করা যায়, সুতরাং এর HEAD~2^3অর্থ HEADপিতামাতার প্রতিশ্রুতির তৃতীয় পিতামাতার প্রতিশ্রুতি।


2
এটিকে স্ট্যাকওভারফ্লো . com/ জিজ্ঞাসা / 2221658/… থেকে ছবিটি পড়া নিখুঁত করে তোলে।
কুনিগামী

23
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, অন্যগুলির চেয়ে অনেক বেশি সংক্ষিপ্ত এবং দরকারী।
রিচভেল

3
এই উত্তরটি আমাকে সংখ্যা ছাড়াই এবং সংখ্যার সাথে ক্যারেট / টিলডের মধ্যে পার্থক্য তৈরি করেছে! আমি ভেবেছিলাম ^^একইরকম ^2তবে তা নয়।
আলেকজান্ডার ডার্ক

278

আমার দুই সেন্ট...

এখানে চিত্র বর্ণনা লিখুন


এবং কিভাবে H=A~2^2না H=A~2^1?
মোহাম্মদ ফয়সাল

3
যদি আমি এটা ঠিক মতোই করেছিলাম সঠিকভাবে করে A, B, D, Gএকই ডালে এবং কমিট Dএকটি একত্রীকরণ হয় Gএবং H, অতএব দুই বাবা হচ্ছে। সুতরাং Hঅন্যান্য শাখা থেকে প্রতিশ্রুতিবদ্ধ ( ) এর দ্বারা রেফারেন্স হয় ^2
মোহাম্মদ ফয়সাল

62

Http://www.paulboxley.com/blog/2011/06/git-care-and-tilde থেকে ভারব্যাটিম নেওয়া খুব ভাল ব্যাখ্যা এখানে রয়েছে :

ref~সংক্ষিপ্ত ref~1এবং এর অর্থ কমিটের প্রথম পিতামাতার জন্য। ref~2মানে কমিটের প্রথম পিতামাতার প্রথম পিতামাতা। ref~3মানে কমিটের প্রথম পিতামাতার প্রথম পিতামাতার প্রথম পিতামাতা। ইত্যাদি।

ref^সংক্ষিপ্ত ref^1এবং এর অর্থ কমিটের প্রথম পিতামাতার জন্য। তবে যেখানে দুটি পৃথক হয় তার ref^2মানে কমিটের দ্বিতীয় পিতা বা মাতা (মনে রাখবেন, একীভূত হওয়ার সময় কমিটের দুটি বাবা থাকতে পারে)।

^এবং ~অপারেটরদের মিলিত হতে পারে।

এখানে চিত্র বর্ণনা লিখুন


5
অনেকগুলি উদাহরণ পোস্ট করার চেয়ে পার্থক্যটি ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ।
কার্ক Broadhurst

32

^<n>বিন্যাস আপনি কমিট এর n তম পিতা বা মাতা (মার্জ প্রাসঙ্গিক) নির্বাচন করতে পারবেন। ~<n>বিন্যাস আপনি n তম নির্বাচন পূর্বপুরুষ কমিট, সবসময় প্রথম পিতা বা মাতা নিম্নলিখিত করতে পারবেন। দেখুন Git-প্রকা-পার্স কিছু উদাহরণ 's ডকুমেন্টেশন।


21

এটি লক্ষণীয় যে গিটটিতে "সেখান থেকে আপনি এসেছেন" / "এখনই ফিরে যান" এখন ট্র্যাকিংয়ের জন্য একটি বাক্য গঠনও রয়েছে - উদাহরণস্বরূপ, HEAD@{1}সেই জায়গাটি উল্লেখ করা হবে যেখানে আপনি নতুন কমিটের জায়গায় গিয়েছিলেন।

মূলত HEAD@{}ভেরিয়েবলগুলি হেড মুভমেন্টের ইতিহাস ক্যাপচার করে এবং আপনি কমান্ডটি ব্যবহার করে গিটের পুনর্বিবেচনাগুলি অনুসন্ধান করে একটি নির্দিষ্ট মাথা ব্যবহার করার সিদ্ধান্ত নিতে পারেন git reflog

উদাহরণ:

0aee51f HEAD@{0}: reset: moving to HEAD@{5}
290e035 HEAD@{1}: reset: moving to HEAD@{7}
0aee51f HEAD@{2}: reset: moving to HEAD@{3}
290e035 HEAD@{3}: reset: moving to HEAD@{3}
9e77426 HEAD@{4}: reset: moving to HEAD@{3}
290e035 HEAD@{5}: reset: moving to HEAD@{3}
0aee51f HEAD@{6}: reset: moving to HEAD@{3}
290e035 HEAD@{7}: reset: moving to HEAD@{3}
9e77426 HEAD@{8}: reset: moving to HEAD@{3}
290e035 HEAD@{9}: reset: moving to HEAD@{1}
0aee51f HEAD@{10}: reset: moving to HEAD@{4}
290e035 HEAD@{11}: reset: moving to HEAD^
9e77426 HEAD@{12}: reset: moving to HEAD^
eb48179 HEAD@{13}: reset: moving to HEAD~
f916d93 HEAD@{14}: reset: moving to HEAD~
0aee51f HEAD@{15}: reset: moving to HEAD@{5}
f19fd9b HEAD@{16}: reset: moving to HEAD~1
290e035 HEAD@{17}: reset: moving to HEAD~2
eb48179 HEAD@{18}: reset: moving to HEAD~2
0aee51f HEAD@{19}: reset: moving to HEAD@{5}
eb48179 HEAD@{20}: reset: moving to HEAD~2
0aee51f HEAD@{21}: reset: moving to HEAD@{1}
f916d93 HEAD@{22}: reset: moving to HEAD@{1}
0aee51f HEAD@{23}: reset: moving to HEAD@{1}
f916d93 HEAD@{24}: reset: moving to HEAD^
0aee51f HEAD@{25}: commit (amend): 3rd commmit
35a7332 HEAD@{26}: checkout: moving from temp2_new_br to temp2_new_br
35a7332 HEAD@{27}: commit (amend): 3rd commmit
72c0be8 HEAD@{28}: commit (amend): 3rd commmit

একটি উদাহরণ হতে পারে যে আমি স্থানীয়- কমিট-> বি-> সি-> ডি করেছি এবং তারপরে আমি আমার কোডটি যাচাই করার জন্য 2 কমিটগুলি বাতিল করে ফিরে গিয়েছিলাম git reset HEAD~2- এবং তারপরে আমি আমার হেডকে ডি-তে ফিরিয়ে নিতে চাই - git reset HEAD@{1}


17

সরলভাবে :

  • ~ পূর্বপুরুষ নির্দিষ্ট করে
  • ^ পিতামাতাকে নির্দিষ্ট করে

মার্জ করার সময় আপনি এক বা একাধিক শাখা নির্দিষ্ট করতে পারেন। তারপরে একটি প্রতিশ্রুতিবদ্ধতার দুটি বা তার বেশি বাবা-মা থাকে এবং তারপরে ^পিতামাতাকে নির্দেশ করতে কার্যকর।

ধরুন আপনি শাখা A তে রয়েছেন এবং আপনার আরও দুটি শাখা রয়েছে: বি এবং সি

প্রতিটি শাখায় সর্বশেষ তিনটি কমিটি হ'ল:

  • : এ 1 , এ 2 , এ 3
  • বি : বি 1 , বি 2 , বি 3
  • সি : সি 1 , সি 3 , সি 3

এখন যদি শাখা A তে আপনি আদেশটি কার্যকর করেন:

git merge B C

তারপরে আপনি তিনটি শাখা একত্রিত করছেন (এখানে আপনার মার্জ কমিটের তিনটি পিতা-মাতা রয়েছে)

এবং

~ প্রথম শাখায় n'th পূর্বপুরুষকে নির্দেশ করে, তাই

  • HEAD~A3 নির্দেশ করে
  • HEAD~2A2 নির্দেশ করে
  • HEAD~31 নির্দেশ করে

^ n'th পিতামাতাকে নির্দেশ করে, তাই

  • HEAD^A3 নির্দেশ করে
  • HEAD^2বি 3 নির্দেশ করে
  • HEAD^3সি 3 নির্দেশ করে

একে অপরের পরবর্তী ~বা পরবর্তী ব্যবহার ^পূর্ববর্তী অক্ষর দ্বারা মনোনীত প্রতিশ্রুতি প্রসঙ্গে the

বিজ্ঞপ্তি 1 :

  • HEAD~3সর্বদা সমান: HEAD~~~এবং এর সাথে: HEAD^^^(প্রতিটি এ 1 নির্দেশ করে ),

        এবং সাধারণত :

  • HEAD~nসর্বদা সমান: HEAD~...~( n বার ~) এবং এর সাথে: HEAD^...^( n বার ^)।

বিজ্ঞপ্তি 2 :

  • HEAD^3হয় না হিসাবে একই HEAD^^^(প্রথম ইঙ্গিত C3 এ এবং দ্বিতীয় ইঙ্গিত ক 1 )

        এবং সাধারণত :

  • HEAD^1হিসাবে একই HEAD^,
  • কিন্তু এন > 1: HEAD^nসর্বদা না হিসাবে একই HEAD^...^( এন বার ~)।

15

TLDR

you আপনি বেশিরভাগ সময় যা চান তা বর্তমান শাখায় অতীত প্রতিশ্রুতিগুলির উল্লেখ করে

parents পিতামাতাকে রেফারেন্স দেয় (গিট-মার্জ একটি দ্বিতীয় পিতামাত বা আরও বেশি তৈরি করে)

A always সর্বদা A ^
A as এর মতো সর্বদা একই থাকে এবং অন্যভাবে
A ~ 2 A ^ 2 এর মতো নয় তবে
~ 2 শর্টহ্যান্ড ~~
এবং ^ 2 নয় কোনও কিছুর জন্য শর্টহ্যান্ড, এর অর্থ ২ য় পিতামাতার


11

HEAD HE হিড ~ 3 এর সমান, হেডের আগে তৃতীয় প্রতিশ্রুতি নির্বাচন করে

হেড ^ 2 একটি মার্জ কমিটে দ্বিতীয় মাথা নির্দিষ্ট করে


9
  • হেড ~ একটি "শাখায়" প্রথম পিতামাতার নির্দিষ্ট করে

  • হেড ^ আপনাকে কমিটের একটি নির্দিষ্ট পিতামাতার নির্বাচন করতে দেয়

একটি উদাহরণ:

আপনি যদি কোনও পাশের শাখা অনুসরণ করতে চান তবে আপনাকে এর মতো কিছু নির্দিষ্ট করতে হবে

master~209^2~15


0

সহজ কথায় বলতে গেলে পিতৃত্বের প্রথম স্তরের জন্য (পিতৃপুরুষ, উত্তরাধিকার, বংশ ইত্যাদি) হেড ^ এবং হেড AD উভয়ই একই প্রতিশ্রুতিতে নির্দেশ করে, যা হেড (কমিট) এর উপরে একটি পিতা বা মাতা থাকে (অবস্থিত)।

তদ্ব্যতীত, হেড ^ = হেড ^ 1 = হেড ~ = হেড ~ 1। তবে হেড ^^! = হেড ^ 2! = হেড ~ 2। তবুও হেড ^^ = হেড ~ 2। পড়তে.

প্যারেন্টেজের প্রথম স্তরের বাইরেও জিনিসগুলি আরও জটিল হয়ে ওঠে, বিশেষত যদি ওয়ার্কিং শাখা / মাস্টার শাখায় মার্জ হয়ে থাকে (অন্যান্য শাখা থেকে)। ক্যারেটের সাথে সিনট্যাক্সের বিষয়টিও রয়েছে, HEAD ^^ = HEAD ~ 2 (তারা সমতুল্য) তবে হেড ^^! = হেড ^ 2 (তারা সম্পূর্ণ দুটি ভিন্ন জিনিস)।

প্রতিটি / ক্যারেট হ'ল প্রথম পিতা-মাতার কথা উল্লেখ করে, এজন্য সংযুক্ত ক্যারেটগুলির সংখ্যার উপর ভিত্তি করে তারা প্রথম পিতামাতার (প্রথম পিতামাতার) প্রথম পিতামাতার, ইত্যাদি ইত্যাদি উল্লেখ করে, কারণ তারা একসাথে যুক্ত ক্যারেটগুলি টিলড ভাবের সমতুল্য are বা টিলডের পরে সংখ্যায় (যেভাবেই তারা উভয়ই একই জিনিস বোঝায়), অর্থাৎ প্রথম পিতামাতার সাথে থাকুন এবং এক্স প্রজন্মের দিকে যান।

হেড ~ 2 (বা হেড ^^) হায়ারার্কিতে বর্তমান প্রতিশ্রুতি (হেড) এর উপরে বা পিতৃপুরুষের দুই স্তরের আপের প্রতিশ্রুতি বোঝায় যার অর্থ হেডের পিতামাতার প্রতিশ্রুতি।

অন্যদিকে, হেড ^ 2 প্রথম পিতামাতার দ্বিতীয় পিতামাতার প্রতিশ্রুতি বোঝায় না, কেবল দ্বিতীয় পিতামাতার প্রতিশ্রুতি বোঝায়। কারণ কার্ট মানে প্রতিশ্রুতিবদ্ধতার পিতামাতার, এবং নীচের সংখ্যাটি বোঝায় যে কী / কী প্রতিশ্রুতিবদ্ধ বলে উল্লেখ করা হয়েছে (প্রথম পিতামাতা, ক্ষেত্রে যখন ক্যারেটের কোনও নম্বর অনুসরণ করা হয় না [কারণ এটি সংখ্যার জন্য সংক্ষিপ্ত 1 হচ্ছে, যার অর্থ প্রথম পিতামাতা]। ক্যারেটের বিপরীতে, পরে যে সংখ্যাটি পরে থাকে তার দ্বারা অন্য স্তরের স্তরক্রমকে উপরের দিকে বোঝানো হয় না, বরং এটি বোঝায় যে স্তরক্রমের কতটা স্তর স্তরের দিকে, একজনকে সঠিক পিতামাতার (প্রতিশ্রুতিবদ্ধ) সন্ধান করতে হবে। টিলড এক্সপ্রেশনের সংখ্যার বিপরীতে, কেরেটটি চালিয়ে যাওয়া সংখ্যার (তাত্ক্ষণিক) নির্বিশেষে এটি শ্রেণিবিন্যাসের একমাত্র পিতা-মাতা। Wardর্ধ্বমুখী পরিবর্তে, ক্যারেট '

সুতরাং হেড ^ 3 হিড কমিটের তৃতীয় পিতামাতার সমান (গ্রেড-পিতামহ নয়, যা হ্যাড ^^^ এবং হেড ~ 3 হবে ...)।


-1

~ এর অর্থ পিতামাতা।

^ যদি এর দুটি বা ততোধিকের মা-বাবার থাকে তবে মার্জ কমিটের মতো আমরা পিতামাতার দ্বিতীয় বা অন্যটি নির্বাচন করতে পারি।

সুতরাং যদি কেবল একটি জিনিস যেমন (শিরোনাম ~ বা হেড ^) থাকে তবে এর একই ফলাফল হয়।

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