- vừa được xem lúc

Intellij in action: Clone multiples commit in difference branches.

0 0 19

Người đăng: logbasex

Theo Viblo Asia

I. Prerequisite

IntelliJ IDEA (v 2022.3.2) or from some version onward/backward.

II. Problem

Chúng ta có bài toán sau: bạn được giao nhiệm vụ tích hợp Salesforce vào dự án bằng cách clone phần code có sẵn từ dự án khác tuy nhiên phần code Salesforce của dự án kia dàn trải trên nhiều commit và nhiều branch khác nhau khiến bạn không thể squash thành 1 commit được. Bạn có thể lần theo từng commit để code, nhưng nếu trong trường hợp một vài tập tin có nhiều revision (được chỉnh sửa nhiều lần) thì việc này trở nên tương đối phiền phức. Vậy thì có cách nào để xem revision cuối cùng của tất cả tập tin của những commit đấy không? Câu trả lời là có bằng cách sử dụng git patch.

Chúng ta cần patch tất cả commit trong hình trên là từ commit có revision number là 78de07d4 ngày 31/10/2022 cho đến commit có revision là 38a442d3 ngày 05/01/2023.

III. Git patch là gì?

A patch file represents a single set of changes that can be applied to any branch, in any order. By using patch, you will get differences between one or more files. And later, you can apply the differences (patch) to get the changes on new files.

IV. Solution

Idea cơ bản về solution đó chính là collect những commit cần thiết thành một bản vá (patch) lưu ra file .patch/ clipboard sau đó checkout commit ở ngay trước commit có revision number là 78de07d4 rồi apply patch data vào. Vì bản vá là single set of changes nên chúng ta sẽ thấy được những thay đổi cuối cùng của tất cả các tập tin trong những commit đã chọn. That's it.

1. Tạo patch

  • Select commit => Right click => Create Patch
  • Select commit => CTRL + SHIFT + A (Help|Find Action) => Create Patch

2. Tìm commit gần nhất ngay trước commit cũ nhất của patch (78de07d4)

Đầu tiên chúng ta cần tìm commit 78de07d4.

Và ngay phía dưới đó là commit FIX CONFLICT có revision number là 3091d4f7.

3. Checkout commit (3091d4f7)

Việc checkout commit gần nhất sẽ giúp chúng ta giảm thiểu số lượng conflict khi apply patch.

4. Apply patch

All done.

V. References

  1. IDEA - Create patch from commit
 ____________________
< Thanks for reading > -------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || |

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 737

- vừa được xem lúc

Tập hợp những câu lệnh GIT hữu dụng

Dưới đây là một vài ví dụ về các câu lệnh Git mà tôi thường dùng. git config --global user.name "John Doe". git config --global user.

0 0 68

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 2): Trigger một work flow

Events trigger. Bạn có thể cấu hình cho workflows chạy khi có một sự kiện nào đó xảy ra trên GitHub, theo một lịch có sẵn hoặc cũng có thể là một sự kiện nào đó xảy ra ngoài GitHub.

0 0 80

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 1): Một ít lý thuyết

CI/CD là gì. Về mặt khái niệm là vậy nhưng về mặt triển khai thì CI/CD là quá trình tự động thực hiện các quá trình build, test, release, deploy khi có các trigger như commit/merge code lên một branch định sẵn hoặc có thể là tự động chạy theo một lịch cố định.

0 0 128

- vừa được xem lúc

Giới thiệu về Git LFS

. Git LFS là gì . Git LFS làm điều này bằng cách thay thế các tệp lớn trong repo của bạn bằng một con trỏ nhỏ.

0 0 37

- vừa được xem lúc

Git workflow được Google và Facebook sử dụng có gì hay ho

Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git.

0 0 85