2012-04-16 35 views
66

Tôi là newbie trong git và tôi đang làm việc trên git.git - Chi nhánh của bạn ở phía trước 'origin/master' bởi 1 cam kết

tôi đã thêm một số tập tin trong git:

git add <file1> 
git add <file2> 

sau đó tôi muốn thúc đẩy đó để xem xét, nhưng tôi đã nhầm lẫn

git commit 

để các tập tin mà tôi đã thay đổi không đi cho đánh giá.
Bây giờ nếu tôi nhập lệnh:

git status 

nó nói

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

Tôi muốn trở lại đó cam kết và tôi muốn đẩy các tập tin để xem xét chứ không phải cam kết. Có ai cho tôi biết tôi có thể làm điều đó không?

+0

Nếu bạn muốn hoàn tác cam kết của mình - hãy xem [câu hỏi tương tự] (http://stackoverflow.com/questions/927358/git-undo-last- cam kết). –

+0

Tôi không biết những gì bạn đang sử dụng để đánh giá mã. Câu trả lời đơn giản cho câu hỏi đơn giản về cách hủy cam kết là 'git reset HEAD ^' – Anonymoose

+0

tôi đã đặt lại HEAD. nhưng sau đó khi tôi cố gắng đẩy, sau đó nó nói tôi D file1.py khi tôi cố gắng để psuh sau đó một lần nữa nó nói với tôi rằng chi nhánh của bạn là trước nguồn gốc/chủ bởi 1 cam kết – sam

Trả lời

97

Bạn không thể đẩy bất cứ điều gì mà chưa được cam kết được nêu ra. Thứ tự của các hoạt động là:

  1. Thực hiện thay đổi của bạn.
  2. git add - đây giai đoạn thay đổi của bạn đối với cam kết
  3. git commit - đây cam kết thay đổi tổ chức của bạn tại địa phương
  4. git push - đây đẩy những thay đổi cam kết của bạn đến một từ xa

Nếu bạn đẩy mà không cam kết, không có gì được đẩy . Nếu bạn cam kết mà không thêm, không có gì được cam kết. Nếu bạn thêm mà không cam kết, không có gì xảy ra cả, git chỉ nhớ rằng những thay đổi bạn đã thêm sẽ được xem xét cho cam kết sau.

Thông báo bạn đang xem (chi nhánh của bạn trước 1 cam kết) có nghĩa là kho lưu trữ cục bộ của bạn có một cam kết chưa được đẩy.

Nói cách khác: addcommit đang hoạt động tại địa phương, push, pullfetch là hoạt động tương tác với một điều khiển từ xa.

Vì dường như có quy trình kiểm soát nguồn chính thức tại nơi bạn làm việc, bạn nên hỏi nội bộ cách xử lý này.

+3

aha ok. Vì vậy, nó có nghĩa là sau khi cam kết, tôi phải đẩy nó – sam

+4

Giải thích tốt - câu hỏi có thể không muốn thực sự hoàn nguyên cam kết, nhưng đúng hơn, có người xem lại cam kết trước khi đẩy nó vào kho 'origin'. Tôi cũng khuyên bạn nên đọc một vài hướng dẫn/phần giới thiệu để git trên http://git-scm.com/documentation – dbr

+0

Khi trạng thái git của tôi cho biết "Chi nhánh của bạn ở phía trước 'origin/develop' bằng 1 commit." làm thế nào chính xác để tôi xem các tập tin đã được thay đổi? git diff dường như không làm bất cứ điều gì – Tom

3
git reset HEAD <file1> <file2> ... 

loại bỏ các file được chọn từ các cam kết tiếp theo

19

Nếu bạn chỉ muốn vứt bỏ những thay đổi và trở lại các cam kết cuối cùng (một trong những bạn muốn chia sẻ):

git reset --hard HEAD~ 

Bạn có thể muốn kiểm tra để chắc chắn rằng bạn muốn điều này (git log), bởi vì bạn sẽ mất tất cả các thay đổi.

Một lựa chọn an toàn hơn là chạy

git reset --soft HEAD~ # reset to the last commit 
git stash    # stash all the changes in the working tree 
git push    # push changes 
git stash pop   # get your changes back 
32

git reset HEAD^ --soft (Lưu các thay đổi của bạn, trở lại để cuối cùng cam kết)

git reset HEAD^ --hard (Bỏ qua thay đổi, trở lại để cuối cùng cam kết)

12

tôi giải quyết điều này bằng cách chỉ chạy một đơn giản:

git pull 

Không có gì hơn. Bây giờ nó hiển thị:

# On branch master 
nothing to commit, working directory clean 
+0

Nó có thể gây ra vấn đề nếu có nhiều hơn một chi nhánh được tạo ra mà không phải là bắt buộc. –

+0

bạn quay lại trạng thái ở xa và mất công việc cuối cùng của bạn: D –

2

reset git ĐẦU^

sau đó các tập tin được sửa đổi sẽ hiển thị lên.

Bạn có thể di chuyển các file và chỉnh sửa một chi nhánh mới

sử dụng, git checkout -b newbranch git checkout commit -m "tập tin sửa đổi" git push gốc newbranch

git checkout chủ

thì bạn nên ở một nhánh sạch và các thay đổi của bạn sẽ được lưu trữ trong newbranch. Sau đó bạn có thể kết hợp thay đổi này vào chi nhánh chính

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