Sobes.tech
Middle

რა განსხვავებაა merge და rebase ბრძანებებს შორის Git-ის ვერსიების მართვის სისტემაში?

sobes.tech AI

პასუხი AI-სგან

merge ტოტებს აერთიანებს ახალი კომიტის შექმნით, ორი მშობელი და შენახული ცვლილებების ისტორია. rebase გადადის ერთ ტოტის კომიტებს სხვა ტოტის ზედა, ლინეურულად წესრიგს აწყობს, მაგრამ იცვლის კომიტების ჰეშებს.

  • merge-ის დროს:

    • ახალი ერთობლივი კომიტი იქმნება.
    • ტოტების ისტორია აშკარა რჩება.
    • შეიძლება წარმოიშვას კონფლიქტები, რომლებიც ახალი კომიტით გადაჭრილია.
    # merge-ის გამოყენების მაგალითი
    git checkout feature-branch
    git merge main
    # თუ კონფლიქტები არსებობს, გადაჭრა
    git commit -m "Merge main into feature-branch"
    
  • rebase-ის დროს:

    • კომიტები "გადანაცვლება" და გამოიყენება სამიზნე ტოტის ზედა.
    • ისტორია ხდება ლინეურული, შეიძლება გამოიყურებოდეს "სუფთა".
    • გადანაცვლებული კომიტების ჰეშები იცვლება.
    • შეიძლება წარმოიშვას კონფლიქტი თითოეულ გადანაცვლებულ კომიტზე.
    • არ არის რეკომენდებული უკვე გამოქვეყნებული და სხვა დეველოპერების მიერ გამოყენებული ტოტებისთვის, რადგან ეს იცვლის ისტორიას.
    # rebase-ის გამოყენების მაგალითი
    git checkout feature-branch
    git rebase main
    # თუ კონფლიქტები არსებობს, გადაჭრა (თითოეულ კონფლიქტურ კომიტზე)
    git add .
    git rebase --continue
    # ან git rebase --skip კონფლიქტური კომიტის გამოტოვებისთვის
    # ან git rebase --abort თავიდან დაწყებისთვის
    
მახასიათებელი merge rebase
ისტორიაში ცვლილება ინახავს ისტორიას იცვლის ისტორიას (გაწერით)
კომიტები ქმნის merge-комიტს გადადის არსებული კომიტების ზედა
ისტორიის ლინეურულობა არა (ტოტები განშლილია) დიახ (პროადვილებს ისტორიას)
მიდგომა არ დესტრუქციული პოტენციურად დესტრუქციული
გამოყენებადობა საჯარო, საერთო ტოტები ადგილობრივი, პირადი ტოტები