Chuyển các thay đổi chưa được cam kết sang nhánh Git mới

Chuyển các thay đổi chưa được cam kết sang nhánh Git mới
Chuyển các thay đổi chưa được cam kết sang nhánh Git mới

Thiết lập một chi nhánh mới cho công việc chưa được cam kết của bạn

Khi phát triển các tính năng mới, người ta thường nhận ra rằng những thay đổi cần được tách biệt trong nhánh riêng của chúng. Điều này cho phép tổ chức tốt hơn và phát triển song song. Nếu bạn đã bắt đầu làm việc trên một tính năng mới và quyết định giữa chừng rằng nó sẽ nằm trong một nhánh riêng biệt, Git sẽ cung cấp một cách đơn giản để chuyển những thay đổi không được cam kết này.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn quy trình chuyển công việc hiện có, chưa được cam kết của bạn sang một chi nhánh mới. Ngoài ra, bạn sẽ tìm hiểu cách đặt lại chi nhánh hiện tại của mình mà không làm mất bất kỳ tiến trình nào. Điều này đảm bảo rằng quy trình làm việc của bạn vẫn sạch sẽ và hiệu quả.

Yêu cầu Sự miêu tả
git checkout -b <branch-name> Tạo một nhánh mới và chuyển sang nhánh đó.
git add . Thực hiện tất cả các thay đổi không được cam kết trong thư mục làm việc.
git commit -m "message" Cam kết các thay đổi theo giai đoạn với một thông báo mô tả.
git checkout - Chuyển trở lại nhánh đã thanh toán trước đó.
git reset --hard HEAD~1 Đặt lại nhánh hiện tại về cam kết trước đó, loại bỏ các thay đổi.
#!/bin/bash Chỉ định rằng tập lệnh sẽ được chạy trong shell bash.

Hiểu quy trình làm việc Git để quản lý công việc chưa được cam kết

Trong ví dụ về tập lệnh đầu tiên, chúng tôi di chuyển thủ công các thay đổi chưa được cam kết sang một nhánh mới bằng cách sử dụng một loạt lệnh Git. Quá trình bắt đầu với git checkout -b new-feature-branch, tạo một nhánh mới có tên là "new-feature-branch" và chuyển sang nhánh đó. Điều này rất cần thiết để tách biệt hoạt động của tính năng mới khỏi nhánh chính. Tiếp theo, chúng tôi thực hiện tất cả các thay đổi không được cam kết với git add .. Lệnh này đảm bảo rằng tất cả các tệp mới và sửa đổi đều được chuẩn bị để chuyển giao. Theo sau điều này, git commit -m "Move uncommitted work to new feature branch" lệnh cam kết những thay đổi này đối với nhánh mới bằng một thông báo giải thích hành động.

Sau khi đảm bảo các thay đổi trong nhánh mới, chúng ta quay lại nhánh ban đầu với git checkout original-branch. Để đặt lại nhánh ban đầu về trạng thái trước đó, chúng tôi sử dụng git reset --hard HEAD~1. Lệnh này buộc phải đặt lại nhánh về cam kết trước đó, loại bỏ mọi thay đổi được thực hiện kể từ đó. Chuỗi lệnh này đảm bảo rằng hoạt động trên tính năng mới được giữ nguyên trong nhánh riêng của nó trong khi nhánh ban đầu được đặt lại về trạng thái sạch.

Tự động hóa quy trình bằng Shell Script

Ví dụ tập lệnh thứ hai tự động hóa quá trình này bằng cách sử dụng tập lệnh shell. Tập lệnh bắt đầu bằng cách kiểm tra xem tên nhánh mới đã được cung cấp chưa if [ -z "$1" ]; then, sẽ thoát khỏi tập lệnh nếu không có tên nào được đưa ra. Biến NEW_BRANCH=$1 gán tên nhánh được cung cấp cho một biến. Tập lệnh sau đó tạo và chuyển sang nhánh mới này với git checkout -b $NEW_BRANCH. Tất cả các thay đổi không được cam kết được tổ chức bằng cách sử dụng git add .và cam kết với git commit -m "Move uncommitted work to $NEW_BRANCH".

Sau khi thực hiện các thay đổi, tập lệnh sẽ quay trở lại nhánh trước bằng cách sử dụng git checkout -. Lệnh cuối cùng git reset --hard HEAD~1 đặt lại nhánh ban đầu về cam kết trước đó, đảm bảo nó sạch sẽ và không có những thay đổi đã được chuyển sang nhánh mới. Tập lệnh shell này cung cấp một cách thuận tiện để tự động hóa quá trình di chuyển công việc chưa được cam kết sang một nhánh mới và đặt lại nhánh hiện tại, giúp quản lý quy trình làm việc của bạn trong Git dễ dàng hơn.

Di chuyển các thay đổi chưa được cam kết sang một nhánh mới trong Git

Sử dụng dòng lệnh Git

# Step 1: Create a new branch and switch to it
git checkout -b new-feature-branch

# Step 2: Stage all uncommitted changes
git add .

# Step 3: Commit the staged changes
git commit -m "Move uncommitted work to new feature branch"

# Step 4: Switch back to the original branch
git checkout original-branch

# Step 5: Reset the original branch to the previous commit
git reset --hard HEAD~1

Chuyển công việc sang chi nhánh mới trong khi vẫn duy trì tiến độ

Sử dụng Shell Script để tự động hóa

#!/bin/bash

# Check if the user provided a branch name
if [ -z "$1" ]; then
  echo "Usage: $0 <new-branch-name>"
  exit 1
fi

NEW_BRANCH=$1

# Create and switch to the new branch
git checkout -b $NEW_BRANCH

# Stage all uncommitted changes
git add .

# Commit the changes
git commit -m "Move uncommitted work to $NEW_BRANCH"

# Switch back to the original branch
git checkout -

# Reset the original branch
git reset --hard HEAD~1

Tạo và quản lý các nhánh tính năng trong Git

Khi làm việc với Git, điều quan trọng là giữ cho quy trình làm việc của bạn được ngăn nắp, đặc biệt là khi phát triển các tính năng mới. Một cách thực hành tốt nhất là sử dụng các nhánh tính năng. Nhánh tính năng cho phép bạn làm việc trên một tính năng mới độc lập với cơ sở mã chính. Sự cô lập này giúp ngăn chặn mã chưa hoàn thiện hoặc không ổn định ảnh hưởng đến nhánh chính. Để tạo một nhánh tính năng, hãy sử dụng lệnh git checkout -b feature-branch. Điều này không chỉ tạo nhánh mà còn chuyển bạn đến nhánh đó, đảm bảo mọi công việc mới đều được thực hiện trong ngữ cảnh chính xác.

Khi bạn đã tạo nhánh tính năng của mình, bạn có thể làm việc trên tính năng mới mà không ảnh hưởng đến nhánh chính. Điều này đặc biệt hữu ích trong môi trường cộng tác nơi nhiều nhà phát triển đang làm việc đồng thời trên các tính năng khác nhau. Khi tính năng của bạn hoàn tất và được kiểm tra kỹ lưỡng, bạn có thể hợp nhất nó trở lại nhánh chính bằng cách sử dụng git merge feature-branch. Bằng cách này, nhánh chính chỉ chứa mã ổn định và đầy đủ. Nếu bạn cần cập nhật nhánh tính năng của mình với những thay đổi mới nhất từ ​​nhánh chính, bạn có thể sử dụng git rebase main trong khi ở nhánh tính năng của bạn, đảm bảo nó được cập nhật.

Câu hỏi thường gặp về quản lý chi nhánh Git

  1. Một nhánh tính năng là gì?
  2. Nhánh tính năng là một nhánh riêng biệt được tạo để phát triển một tính năng mới độc lập với cơ sở mã chính.
  3. Làm cách nào để tạo một nhánh mới trong Git?
  4. Bạn có thể tạo một nhánh mới bằng cách sử dụng git checkout -b branch-name.
  5. Làm cách nào để chuyển đổi giữa các nhánh trong Git?
  6. Sử dụng git checkout branch-name để chuyển sang một chi nhánh hiện có.
  7. Làm cách nào để hợp nhất một nhánh tính năng trở lại nhánh chính?
  8. Để hợp nhất một nhánh tính năng, hãy chuyển sang nhánh chính và sử dụng git merge feature-branch.
  9. Làm cách nào để cập nhật nhánh tính năng của tôi với những thay đổi mới nhất từ ​​nhánh chính?
  10. Khi ở trên nhánh tính năng của bạn, hãy sử dụng git rebase main để kết hợp những thay đổi mới nhất.
  11. Nếu tôi muốn xóa một nhánh sau khi sáp nhập thì sao?
  12. Bạn có thể xóa một nhánh bằng cách sử dụng git branch -d branch-name.
  13. Làm cách nào để liệt kê tất cả các nhánh trong kho lưu trữ của tôi?
  14. Sử dụng git branch để liệt kê tất cả các chi nhánh.
  15. Tôi có thể đổi tên một nhánh trong Git không?
  16. Có, sử dụng git branch -m old-name new-name để đổi tên một chi nhánh.
  17. Làm cách nào để kiểm tra xem tôi hiện đang ở chi nhánh nào?
  18. Sử dụng git status hoặc git branch để xem chi nhánh hiện tại.
  19. Điều gì xảy ra nếu tôi cố gắng hợp nhất một nhánh có xung đột?
  20. Git sẽ nhắc bạn giải quyết xung đột trước khi hoàn tất việc hợp nhất. Sử dụng git status để xem các tập tin có xung đột và chỉnh sửa chúng cho phù hợp.

Suy nghĩ cuối cùng:

Chuyển công việc chưa được cam kết sang một nhánh mới trong Git là một kỹ thuật có giá trị để duy trì quy trình phát triển có tổ chức và rõ ràng. Bằng cách sử dụng các lệnh và tập lệnh được cung cấp, bạn có thể dễ dàng tạo một nhánh mới cho tính năng của mình, thực hiện các thay đổi và đặt lại nhánh hiện tại. Cách tiếp cận này không chỉ duy trì tiến trình của bạn mà còn giữ cho nhánh chính của bạn ổn định và không có các tính năng chưa hoàn thiện. Việc áp dụng những phương pháp này sẽ nâng cao năng suất của bạn và tạo điều kiện cho sự hợp tác tốt hơn giữa các thành viên trong nhóm.