2013-08-02 28 views
8

Trên SourceTree, tôi có một chi nhánh được gọi là "phát triển". Tôi sử dụng SourceTree Git Flow để tạo một tính năng mới từ nhánh "phát triển". Tôi thực hiện các thay đổi đối với chi nhánh tính năng và sau đó kết thúc tính năng và các thay đổi quay lại nhánh "phát triển" của tôi.Nhiều tính năng cho một nhánh - điểm là gì?

Sau đó tôi đẩy các thay đổi này vào điều khiển từ xa.

Bây giờ, đây là những gì tôi đang cố gắng làm. Tôi phải làm việc trên hai nhiệm vụ JIRA cùng một lúc. Vì vậy, tôi đã tạo hai chi nhánh tính năng từ nhánh "phát triển": "phát triển/feature1" và "phát triển/feature2". Tôi có thể chuyển đổi giữa các tính năng bằng cách nhấp đúp vào chúng khi được chọn trên SourceTree. Sau đó tôi có thể kiểm tra bản sao làm việc cho cả hai nhánh tính năng, nhưng tôi nhận thấy rằng các tệp tôi đã thêm vào cũng đã được thêm vào phần khác.

Câu hỏi của tôi là:

  1. Khi tôi thêm tệp vào bản sao làm việc một tính năng của tại sao chúng xuất hiện trong bản sao làm việc của tính năng khác?

  2. Điểm có các chi tiết tính năng là gì nếu chúng không thể tách biệt các thay đổi với nhau?

+3

Không quen thuộc với ** altassian ** nhưng như xa như ** git ** là có liên quan, bất kỳ mới tạo ra các tập tin không được theo dõi không thuộc về git cho đến khi bạn 'git add' chúng. Do đó bạn sẽ nhìn thấy chúng bất kể bạn chi nhánh nào vào thư mục làm việc của bạn. Điều này có xảy ra trong trường hợp của bạn không? – TheCodeArtist

+0

@TheCodeArtist mẹo hay ở đó. Làm thế nào để kiểm tra - bằng cách sử dụng dòng lệnh - cho dù các tập tin này đã được git thêm hay không? Hoặc nếu các tập tin cập nhật đã được git thêm vào hay không? Cảm ơn. –

+4

'git status' sẽ hiển thị cho bạn danh sách các tệp trong một phần' untracked' riêng biệt – TheCodeArtist

Trả lời

9

git cho phép bạn chuyển đổi nhánh ngay cả khi bạn có thay đổi không được cam kết trong chi nhánh hiện tại. Các tệp vẫn không được cam kết và bạn có thể cam kết chúng trong nhánh khác nếu bạn cần. Điều này thật tuyệt vời khi bạn nhận ra rằng bạn đã hoàn thành công việc trên feature/feature1 phải nằm trên feature/feature2.

Khi bạn đã cam kết thay đổi, chúng sẽ không chuyển đổi giữa các nhánh nữa. Sau đó bạn có thể hợp nhất hoặc thay đổi lựa chọn anh đào giữa các nhánh.

Lưu ý rằng git sẽ không cho phép bạn chuyển nhánh nếu bạn có thay đổi không cam kết gây xung đột hợp nhất trong nhánh bạn muốn chuyển sang và thậm chí nếu một trong những thay đổi của bạn nằm trong tệp đã bị thay đổi và cam kết trong nhánh bạn muốn chuyển sang. Trong trường hợp đó, bạn cần phải cam kết, hoàn nguyên hoặc lưu trữ các thay đổi của bạn trước tiên.

Nếu git không cho phép bạn chuyển đổi nhánh và bạn cố gắng giải quyết điều đó bằng cách đánh dấu các thay đổi của bạn trước khi chuyển nhánh, bạn nên đảm bảo rằng bạn cất cửa sổ bật lên trong nhánh gốc. Nếu bạn đang ở trên feature/feature1, thay đổi stash, sau đó chuyển sang feature/feature2 và cửa sổ bật lên ở đó, bạn sẽ thay đổi nhỏ đã có trong feature/feature2 nhưng không có trong feature/feature1. Điều này khó phát hiện.

3

Các tệp mới và thay đổi không được theo dõi bởi git cho đến khi bạn thực hiện git add. Điều đó có nghĩa là git không có bản sao của dữ liệu này, vì vậy nếu nó được hoàn nguyên các thay đổi của bạn khi bạn kiểm tra một nhánh khác, nó sẽ không thể khôi phục chúng sau đó.

Bạn có thể xem danh sách các file nào lập chỉ mục, sửa đổiuntracked với git status.

Cách duy nhất để giải quyết vấn đề này là bằng cách theo dõi sự thay đổi của bạn với git, hoặc bằng cách thêm và cam kết họ (mà bạn có thể hoàn tác sau đó với một git reset), hoặc bằng cách stashing chúng với git stash -u (có thể được hoàn tác sau đó với git stash pop).

Lợi thế của git khi làm việc theo cách này là bạn có thể làm việc trên bất kỳ thứ gì bạn muốn mà không phải suy nghĩ về chi nhánh. Khi đến lúc cam kết, bạn có thể chỉ cần thanh toán chi nhánh có liên quan và thêm các tệp bạn muốn với git add hoặc chỉ thêm các phần của các tệp bạn muốn với git add -p.


1: -u là viết tắt cho --include-untracked, trong đó bao gồm các file mới được tạo ra nhưng không được bỏ qua các file

Các vấn đề liên quan