Tại sao tôi không thể chuyển ngành?


81

Tôi đang cố gắng chuyển các nhánh trong git nhưng tôi nhận được thông báo lỗi này:

error: you need to resolve your current index first

Tôi đang sử dụng git trong xcode4

git status
# On branch DateCode
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
#
no changes added to commit (use "git add" and/or "git commit -a")
Frappuccinos-MacBook-Pro:whereami

# Đường dẫn Đã hủy: # (sử dụng "git reset ĐẦU <file> ..." để unstage) # (sử dụng "git add / rm <file> ..." như phù hợp với độ phân giải mark) #
chụp đèn

vui lòng chỉnh sửa câu hỏi của bạn để dán thông tin đó, nó không thể đọc được trong nhận xét.
Mat

git reset {{currentBranchName}}sau đó git checkout . sẽ giải quyết vấn đề của bạn
selvaraj muthukumar

Câu trả lời:


95

Hãy thử điều này nếu bạn không muốn bất kỳ hợp nhất nào được liệt kê ở trạng thái git:

git reset --merge

Thao tác này đặt lại chỉ mục và cập nhật các tệp trong cây làm việc khác nhau giữa <commit>HEAD, nhưng vẫn giữ những tệp khác nhau giữa chỉ mục và cây làm việc (tức là những tệp có những thay đổi chưa được thêm vào).

Nếu một tệp khác biệt giữa <commit>và chỉ mục có các thay đổi chưa được đánh dấu - việc đặt lại sẽ bị hủy bỏ.

Thông tin thêm về điều này - https://www.techpurohit.com/list-some-useful-git-commands & liên kết Doc - https://git-scm.com/docs/git-reset


53

Bạn kết thúc với both modifiedđầu ra của git statusnếu có xung đột tạo ra bởi hợp nhất. git không cho phép bạn thay đổi nhánh cho đến khi bạn giải quyết xong những xung đột này. Nếu bạn chỉnh sửa tệp đó, bạn sẽ thấy một số điểm đánh dấu xung đột trong đó - có hướng dẫn giải quyết các xung đột đó trong hướng dẫn sử dụng git . (Vì kernel.org hiện không hoạt động, bạn có thể tìm thấy hướng dẫn đó tại đây .)

Ngoài ra, nếu bạn cho rằng việc hợp nhất là do nhầm lẫn, bạn có thể hoàn tác bằng: git reset --merge


19

Nếu bạn không quan tâm đến những thay đổi mà git nói là nổi bật, thì bạn có thể thực hiện kiểm tra buộc.

git checkout -f {{insert your branch name here}}


3
Đây chính xác là những gì tôi cần - tôi có một nhánh thử nghiệm trong đó việc hợp nhất đã không thành công với rất nhiều xung đột và tôi chỉ muốn vứt bỏ nhánh đó. Tôi đã không thể quay lại chi nhánh tốt (thanh toán không thành công và git reset --mergecũng không thành công). Nhưng checkout -flàm việc tuyệt vời.
Chad

6

Tôi nhận được thông báo này khi cập nhật tệp mới từ điều khiển từ xa và chỉ mục đã thoát khỏi lỗi. Đã cố gắng sửa chỉ mục, nhưng giải quyết qua Xcode 4.5, GitHub.app (103) và GitX.app (0.7.1) không thành công. Vì vậy, tôi đã làm điều này:

git commit -a -m "your commit message here"

đã hoạt động trong việc bỏ qua chỉ số git.

Hai bài đăng trên blog giúp tôi hiểu về Git và Xcode là:

  • Ray Wenderlich trên Xcode 4.5
  • Oliver Steele từ 2008


  • 6

    bạn có thể đặt lại chi nhánh của mình bằng HEAD

    git reset --hard branch_name
    

    sau đó tìm nạp các chi nhánh và xóa các chi nhánh không nằm trong vùng từ xa,

    git fetch -p 
    

    1

    Bạn cần phải cam kết hoặc hủy bất kỳ thay đổi nào chưa được lưu trước khi chuyển đổi nhánh.

    Git sẽ không cho phép bạn chuyển đổi nhánh nếu điều đó có nghĩa là các thay đổi chưa lưu sẽ bị xóa.


    Lỗi và git statusđầu ra chỉ ra rằng đây không chỉ là những thay đổi trong cây làm việc mà sẽ bị mất khi thay đổi nhánh - chúng chỉ ra rằng hợp nhất không thành công và xung đột phải được giải quyết trong chỉ mục.
    Mark Longair

    1

    Vì tệp được sửa đổi bởi cả hai, bạn cần phải thêm nó bằng

    git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    Hoặc nếu bạn muốn bỏ qua những thay đổi trong năm, thì hãy

    git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    Sau đó, chỉ cần chuyển đổi chi nhánh của bạn. Điều này sẽ thực hiện thủ thuật.

    Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
    Licensed under cc by-sa 3.0 with attribution required.