Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -

Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -

Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -

Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -

Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -
Giải quyết xung đột hợp nhất với Git (PHẦN 3 ) -
(028) 35124257 - 0933 427 079

Giải quyết xung đột hợp nhất với Git (PHẦN 3 )

31-12-2021

Hợp nhất các branch và giải quyết xung đột hợp nhất

Bây giờ bạn sẽ thực hiện việc hợp nhất giữa hai branch khác nhau. Fix branch sẽ tối ưu hóa việc tính toán địa chỉ IP đầu tiên và cuối cùng.

Bước 11:

So sánh masterfix branches. Sử dụng lệnh git diff.

student@student-workstation:~/working_directory$ git diff master origin/fix

diff --git a/calculator.py b/calculator.py

<... output omitted ...>

 

     def get_first_ip(self):

-        """ Calculates the first IP address. """

-

-        first_ip = list(self.network.hosts())[0]

+        network_address = self.get_network_address()

+        first_ip = network_address + 1

         return str(first_ip)

 

     def get_last_ip(self):

-        """ Calculates the last IP address. """

-

-        last_ip = list(self.network.hosts())[-1]

+        broadcast_address = self.get_broadcast_address()

+        last_ip = broadcast_address - 1

         return str(last_ip)

 

<... output omitted ...>

 

Bạn có thể thấy nhiều điểm khác biệt giữa hai branch. Nếu tập trung vào get_first_ip()get_last_ip(), bạn có thể thấy rằng các phương pháp sử dụng code khác nhau để tính địa chỉ IP

Sử dụng space để xem trang tiếp theo. Nhấn q để trở về shell prompt.

Bước 12:

Để sử dụng code từ fix branch cho các phương thức get_first_ip()get_last_ip(),  hãy hợp nhất 2 branch, sử dụng git merge.

student@student-workstation:~/working_directory$ git merge origin/fix

Auto-merging calculator.py

CONFLICT (content): Merge conflict in calculator.py

Automatic merge failed; fix conflicts and then commit the result.

Bạn có thể thấy rằng tự động hợp nhất không thành công. Git đã cố gắng hợp nhất cả hai nhánh nhưng có những thay đổi trong các dòng giống nhau. Vì tự động hợp nhất không thành công, bạn cần thực hiện giải quyết xung đột hợp nhất thủ công.

Bước 13:

Sử dụng git status để xem trạng thái gần đây.

student@student-workstation:~/working_directory$ git status

On branch master

Your branch is up to date with 'origin/master'.

 

You have unmerged paths.

  (fix conflicts and run "git commit")

  (use "git merge --abort" to abort the merge)

 

Unmerged paths:

  (use "git add ..." to mark resolution)

 

               both modified:   calculator.py

 

Git hiển thị giải thích khá tốt về những gì bạn cần làm để giải quyết xung đột. Trước tiên, bạn phải giải quyết tất cả các xung đột trong tệp Calculator.py. Sau khi giải quyết xong xung đột, bạn cần sử dụng lệnh git add để thêm tệp đã giải quyết vào vùng dàn. Sau đó, bạn cần sử dụng lệnh git commit để thực hiện các thay đổi.

 

Bước 14:

Sử dụng lệnh git diff để xem các thay đổi không được hợp nhất tự động.

student@student-workstation:~/working_directory$ git diff

diff --cc calculator.py

index b66f5cc,16cc4eb..0000000

--- a/calculator.py

+++ b/calculator.py

@@@ -19,15 -9,13 +19,25 @@@ class IPCalculator

          return str(self.network)

 

      def get_first_ip(self):

++<<<<<<< HEAD

 +        """ Calculates the first IP address. """

 +

 +        first_ip = list(self.network.hosts())[0]

 +        return str(first_ip)

 +

 +    def get_last_ip(self):

 +        """ Calculates the last IP address. """

 +

 +        last_ip = list(self.network.hosts())[-1]

++=======

+         network_address = self.get_network_address()

+         first_ip = network_address + 1

+         return str(first_ip)

+

+     def get_last_ip(self):

+         broadcast_address = self.get_broadcast_address()

+         last_ip = broadcast_address - 1

++>>>>>>> origin/fix

          return str(last_ip)

 

      def get_broadcast_address(self):

Bạn có thể thấy phần code nơi xảy ra xung đột hợp nhất. Code giữa điểm đánh dấu <<<<<<< HEAD và ======= là code trong target branch. Trong trường hợp của bạn đó là master branch. Code giữa điểm đánh dấu ======= và >>>>>>> origin/fix là branch nguồn. Bạn cần chỉnh sửa tệp của mình và quyết định code nào sẽ được thêm vào tệp cuối cùng. Có thể bạn sẽ muốn rời khỏi docstrings từ master branch và thêm phương thức tính IP từ fix branch.

Bước 15:

Giải quyết xung đột hợp nhất trong Visual Studio Code.

Để giải quyết điều này, bạn cần quyết định những đoạn nào bạn sẽ giữ lại từ mỗi branch. Giữ code chú thích trong hình sau. Xóa mọi thứ khác bao gồm điểm đánh dấu Git (<<<<<<< HEAD, =======, >>>>>>> origin/fix). Sắp xếp code để hoạt động.

Lệnh get_first_ip() and get_last_ip() có kết quả như sau:

<... output omitted ...>

    def get_first_ip(self):

        """ Calculates the first IP address. """

 

        network_address = self.get_network_address()

        first_ip = network_address + 1

        return str(first_ip)

 

    def get_last_ip(self):

        """ Calculates the last IP address. """

 

        broadcast_address = self.get_broadcast_address()

        last_ip = broadcast_address - 1

        return str(last_ip)

<... output omitted ...>

Bước 16:

Chạy lại câu lệnh python calculator.py -n 192.0.0.0/8

 

student@student-workstation:~/working_directory$ python calculator.py -n 192.0.0.0/8

The result of the calculation is:

-> Input network:                              192.0.0.0/8

-> Network address:                         192.0.0.0

-> Netmask:                                       255.0.0.0

-> Broadcast address:                       192.255.255.255

-> First IP address:                           192.0.0.1

-> Last IP address:                           192.255.255.254

Bạn sẽ nhận ra thời gian đã nhanh hơn lần trước.

Bước 17:

Thêm file calculator.py vào Git với câu lệnh git add.

 

student@student-workstation:~/working_directory$ git add calculator.py

student@student-workstation:~/working_directory$

 

Bước 18:

Kiểm tra Git status.

student@student-workstation:~/working_directory$ git status

On branch master

Your branch is up to date with 'origin/master'.

 

All conflicts fixed but you are still merging.

  (use "git commit" to conclude merge)

 

Changes to be committed:

 

            modified:   calculator.py

 

Bạn sẽ thấy rằng calculator.py đang ở trong staging area và chờ commit.

Bước 19

Commit file.

student@student-workstation:~/working_directory$ git commit -m "Merging the fix branch into master branch"

[master a88f170] Merging the fix branch into master branch

 

Thay đổi đã được commit vào master branch.

Bước 20

Kiểm tra Git logs. Sử dụng lệnh git log –oneline.

 

student@student-workstation:~/working_directory$ git log --oneline

a88f170 (HEAD -> master) Merging the fix branch into master branch

aea48d5 (origin/fix) Adding optimization code for get_first_ip() and get_last_ip() methods

16dd2e0 (origin/master, origin/HEAD) Adding execution code

a520972 Adding argument parser

5b49915 Adding the calculate() method to print the results

fd8cedf Adding docstrings

4428bae init commit

Bạn có thể thấy rằng các commit từ fix branch bây giờ là một phần của master branch. Git đã tạo commit hợp nhất với thông báo mà bạn đã chỉ định.


FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0