2013-06-06 37 views
20

Mọi thứ đều trong tiêu đề ...Tại sao "trạng thái git" không hiển thị các cam kết chưa được xóa trong nhánh?

tôi đọc câu hỏi này: Viewing Unpushed Git Commits

Nhưng tôi không hiểu tại sao git status hiển thị tất cả các cam kết unpushed trong ngành thạc sĩ, nhưng không hiển thị bất cứ điều gì trong các ngành khác.

Ai đó có thể giải thích nó?

EDIT

Đây là những gì các lệnh và kết quả tôi đã làm/nhận được:

[email protected]:/home/repo/$ git branch 
    new_feature 
* master 

[email protected]:/home/repo/$ git checkout new_feature 
Switched to branch 'new_feature' 

[email protected]:/home/repo/$ echo test > newfile.txt 
[email protected]:/home/repo/$ git add newfile.txt 
[email protected]:/home/repo/$ git commit -m "Test commit" 
[new_feature 51c6a64] Test commit 
1 file added 
[email protected]:/home/repo/$ git status 
# On branch new_feature 
nothing added to commit 

Tại sao không phải tôi cam kết xuất hiện khi sử dụng git status?

+0

trùng lặp có thể xảy ra [Làm thế nào Bạn có tạo một nhánh Git hiện có theo dõi một nhánh từ xa không?] (http://stackoverflow.com/questions/520650/how-do-you-make-an-existing-git-branch-track-a-remote-branch) – arnorhs

+3

@arnorhs, bạn về mặt kỹ thuật chính xác nhưng tôi đoán OP chỉ không biết về tất cả các máy theo dõi chi nhánh đó nên họ không có cơ hội tìm thấy câu hỏi đó. Do đó tôi không bỏ phiếu để đóng câu trả lời. – kostix

+0

mát mẻ. điều đó có ý nghĩa với tôi. Tôi cũng có thể tưởng tượng mọi người đang cố gắng tìm kiếm câu hỏi của Google theo cách tương tự như câu hỏi OP nếu họ không quen với thuật ngữ git chính xác để theo dõi. Thật khó để có được thành git với tất cả các biệt ngữ. – arnorhs

Trả lời

20

Lý do là chi nhánh chính của bạn thực sự có chi nhánh từ xa, trên nguồn gốc/chủ mà chi nhánh của bạn đã được thiết lập để theo dõi.

Điều này có nghĩa là mỗi khi bạn thực hiện cam kết làm chủ, sau đó thực hiện một số git status git sẽ cho bạn biết các cam kết nào khác nhau giữa chi nhánh địa phương và chi nhánh từ xa.

Khi bạn tạo chi nhánh mới, không có nhánh từ xa tương ứng theo mặc định. Bạn có thể thấy điều này bằng cách thực hiện git branch -a. sẽ hiển thị cho bạn tất cả các nhánh từ xa được thiết lập.

Vì vậy, có hai việc cùng chơi:

1) Bạn không có một chi nhánh từ xa cho chi nhánh địa phương của bạn 2) chi nhánh của bạn không được thiết lập để theo dõi những thay đổi từ chi nhánh từ xa

một cách đơn giản để tạo ra một chi nhánh từ xa và thiết lập theo dõi cho chi nhánh địa phương của bạn, là để đẩy các chi nhánh địa phương để chi nhánh từ xa:

git checkout new_feature 
git push -u origin new_feature 

Thông thường, khi bạn chỉ cần đẩy mà không -u chuyển đổi, không theo dõi sẽ b e thiết lập, nhưng chi nhánh của bạn vẫn sẽ bị đẩy. Nhưng khi bạn vượt qua trong các chuyển đổi -u nó sẽ cho git rằng bạn cũng muốn thiết lập chi nhánh của bạn để theo dõi các thay đổi từ các chi nhánh từ xa.

Sau khi bạn làm điều này và sau đó thực hiện thay đổi và cam kết họ, sau đó làm một git status bạn sẽ nhận được kết quả mong đợi của "chi nhánh của bạn là một người đứng đầu xuất xứ/new_feature bởi 1 cam kết"

+0

Tôi đã thử những gì bạn đề nghị: git branch -u origin/my_other_branch và nhận lại: error: unknown switch' u '... – Aurelien

+0

ah, phiên bản git cũ hơn.Tôi sẽ sửa câu trả lời của mình – arnorhs

+0

Tôi cũng tìm thấy một câu hỏi trùng lặp, mà tôi đã thêm một lá cờ cho – arnorhs

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