2008-11-03 38 views
8

Tôi đang gặp khó khăn trong việc hiểu một số khái niệm git/DCVS. Đây là những gì đã xảy ra:Git - Chi nhánh chuyển đổi (cửa sổ) và các thay đổi không được sửa đổi

  1. Tôi tạo ra một dự án git, và nhập khẩu nó từ một repo SVN
  2. tôi thực hiện một số cam kết
  3. tôi muốn thử nghiệm một cái gì đó, vì vậy tôi đã tạo ra một chi nhánh gọi hằng cập nhật
  4. tôi chuyển sang hằng cập nhật chi nhánh, chuyển một số tập tin, một số khác bị xóa và thêm vào nhiều hơn nữa
  5. tôi cam kết sẽ chi nhánh này
  6. Bây giờ tôi đang cố gắng chuyển sang nhánh chính của mình bằng cách sử dụng git checkout master
  7. Tôi gặp lỗi này: lỗi: Bạn có các thay đổi cục bộ đối với 'src/groovy/Constants.groovy'; không thể chuyển nhánh.

Hiểu biết của tôi về DCVS là tôi có thể chuyển đổi chi nhánh, nếu một số chi nhánh có nhiều hoặc ít tệp hơn những người khác, miễn là tôi cam kết tệp của mình. Tôi đã thử cam kết với git commit -a và chuyển sang nhánh chính, nhưng tôi có cùng lỗi.

Như một lưu ý phụ, khi tôi cam kết git cảnh báo tôi rằng LF sẽ được thay thế bằng CRLF và cảnh báo tôi về một số khoảng trống sau cũng; sau khi tôi cam kết, tôi thực hiện git status và một loạt tệp luôn xuất hiện dưới dạng #modified ....

Điều này có liên quan đến git/windows hoặc tôi không hiểu chính xác những gì nó được cho là xảy ra? Tôi chỉ muốn chuyển sang chi nhánh chính của tôi mà không làm mất các thay đổi của tôi ở chi nhánh khác.

Trả lời

4

tôi giải quyết vấn đề hacking my pre-commit hook (cho ý kiến ​​những dòng này trong .git/hooks/pre-commit với một #):

#  if (/\s$/) { 
#  bad_line("trailing whitespace", $_); 
#  } 
4

Tra cứu git-stash để thay đổi nhánh trong khi có thay đổi chưa lưu trong nhánh hiện tại.

+0

Tôi đã đỏ về git stash, nhưng tôi đang cố gắng sử dụng quy trình làm việc mặc định (sử dụng các nhánh thay thế). –

4

Bạn đúng trong suy nghĩ của bạn về cách thức hoạt động của tính năng này.

Tuy nhiên, có vẻ như git đang gặp sự cố với dòng kết thúc và nó cho rằng tất cả các tệp của bạn đều được sửa đổi ngay cả khi chúng không có. Tôi không sử dụng git trên Windows, nhưng tôi sẽ đề xuất tùy chọn "core.autocrlf" để thực hiện công việc xử lý crlf. Tuy nhiên, blog entry sau đây chỉ ra rằng điều này có thể không phải là một ý tưởng tốt: http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html

2

Chỉ cần sử dụng các tùy chọn sau đây trong .gitconfig tệp nằm trong thư mục người dùng của bạn.

[lõi] autocrlf = true

Và nó sẽ giải quyết vấn đề này.

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