Git: add vs push vs commit


115

Sự khác biệt giữa git là gì add, pushcommit?

Chỉ có một chút bối rối đến từ SVN, nơi "cập nhật" sẽ 'thêm' nội dung, và cam kết thực hiện một "đẩy" và cũng sẽ 'thêm'

Có tất cả các chức năng khác nhau trong git. Hy vọng một số lời giải thích từ kinh nghiệm của bạn.


Câu trả lời:


163
  1. git addthêm các tệp đã sửa đổi của bạn vào hàng đợi để được cam kết sau này . Các tệp không được cam kết

  2. git commitcam kết các tệp đã được thêm và tạo bản sửa đổi mới bằng nhật ký ... Nếu bạn không thêm bất kỳ tệp nào, git sẽ không cam kết bất kỳ điều gì. Bạn có thể kết hợp cả hai hành động vớigit commit -a

  3. git push đẩy các thay đổi của bạn vào kho lưu trữ từ xa.

Con số này từ bảng lừa đảo git này cho ta một ý tưởng tốt về quy trình làm việc

nhập mô tả hình ảnh ở đây

git addkhông có trong hình vì cách đề xuất để cam kết là kết hợp git commit -a, nhưng bạn có thể thêm một cách tinh thần git addvào khối thay đổi để hiểu quy trình.

Cuối cùng, lý do tại sao lại pushlà một lệnh riêng biệt là vì gittriết lý của ''. gitlà một hệ thống lập phiên bản phân tán, và thư mục làm việc cục bộ kho lưu trữ của bạn! Tất cả những thay đổi bạn cam kết sẽ được phản ánh và ghi lại ngay lập tức. pushchỉ được sử dụng để cập nhật repo từ xa (mà bạn có thể chia sẻ với người khác) khi bạn hoàn thành bất cứ điều gì bạn đang làm. Đây là một cách gọn gàng để làm việc và lưu các thay đổi cục bộ (không tính phí mạng) và chỉ cập nhật nó khi bạn muốn, thay vì mỗi lần cam kết. Điều này gián tiếp dẫn đến cam kết / phân nhánh, v.v. dễ dàng hơn (tại sao không, đúng không? Bạn phải trả phí gì?), Dẫn đến nhiều điểm lưu hơn, mà không gây rối với kho lưu trữ.


Vì vậy, có phải push commit cục bộ và sau đó đẩy đến máy chủ từ xa hay người ta phải cam kết trước sau đó push để có được công việc đến kho lưu trữ từ xa?
Andrew S,

2
Đầu tiên bạn phải cam kết ("git commit") cập nhật kho lưu trữ cục bộ của bạn (hay còn gọi là trên máy cục bộ của bạn), sau đó bạn phải đẩy đến máy chủ ("git push") cập nhật kho lưu trữ từ xa (ví dụ: trên máy chủ github. )
Romain

Tôi rất thích một chức năng "thêm tinh thần" trong Git!
Junchen Liu

1
Không chỉ cam kết thường xuyên mà còn thúc đẩy thường xuyên. Điều này bảo vệ công việc của bạn khi ổ cứng của bạn gặp sự cố.
CCC

86

git add lựa chọn các thay đổi

git commit hồ sơ thay đổi ĐỊA PHƯƠNG

git push chia sẻ những thay đổi


22
  • git add thêm tệp vào chỉ mục Git, đây là một vùng tổ chức cho các đối tượng chuẩn bị được cam kết.
  • git commitcam kết các tệp trong chỉ mục vào kho lưu trữ, git commit -alà một phím tắt để thêm tất cả các tệp được theo dõi đã sửa đổi vào chỉ mục trước.
  • git push gửi tất cả các thay đổi đang chờ xử lý tới kho lưu trữ từ xa mà chi nhánh của bạn được ánh xạ tới (ví dụ: trên GitHub).

Để hiểu Git, bạn sẽ cần đầu tư nhiều nỗ lực hơn là chỉ lướt qua tài liệu, nhưng nó chắc chắn xứng đáng. Chỉ cần không cố gắng ánh xạ các lệnh Git trực tiếp tới Subversion, vì hầu hết chúng không có đối tác trực tiếp.


Ai đó nên giải thích sự khác biệt giữa github cục bộ và từ xa. Những gì bạn có trong địa phương và remte. Đây là chìa khóa mà bạn cần tìm
Mehdi Amrollahi

12

Tôi đã bối rối về những gì 'thêm' thực sự làm. Tôi vừa đọc một đoạn rất thú vị trong cuốn sách Git Pro mà tôi muốn thêm vào đây, vì nó làm rõ mọi thứ

“Nó chỉ ra rằng Git phân giai đoạn một tệp chính xác như khi bạn chạy lệnh git add. Nếu bạn commit ngay bây giờ, thì phiên bản của benchmark.rb như khi bạn chạy lệnh git add lần cuối là cách nó đi vào commit, không phải là phiên bản của tệp như trong thư mục làm việc của bạn khi bạn chạy git commit. Nếu bạn sửa đổi tệp sau khi chạy git add, bạn phải chạy lại git add để tạo phiên bản mới nhất của tệp: ”

Trích từ: Chacon, Scott. "Pro Git." Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Tài liệu này có thể được bảo vệ bởi bản quyền.


7

add yêu cầu git bắt đầu theo dõi một tệp.

cam kết cam kết những thay đổi hiện tại của bạn trên kho lưu trữ cục bộ của bạn

push đẩy bạn repo cục bộ ngược dòng.



5

Pdf rất đẹp về nhiều bí mật của GIT.

Thêm vào cũng giống như add của svn (đôi khi nó được sử dụng để đánh dấu tệp đã được giải quyết).

Cam kết cũng giống như svn, nhưng cam kết thay đổi vào kho lưu trữ cục bộ của bạn.


2
Bây giờ tôi phải đi tìm kiếm thêm và cam kết svn. Nỗi sợ lớn của tôi: tài liệu của họ sau đó sẽ chuyển tôi đến git add và commit. Và chúa_t là tác giả của các tài liệu nói trên.
eric

Tác giả câu hỏi đã có kiến ​​thức về SVN, vì vậy tôi cho rằng anh ta biết các lệnh của svn.
Lord_t

0

add -in git được sử dụng để cho git biết tệp nào chúng ta muốn cam kết, nó đặt tệp vào vùng dàn

commit- in git được sử dụng để lưu các tệp vào máy cục bộ để nếu chúng tôi thực hiện bất kỳ thay đổi nào hoặc thậm chí xóa tệp, chúng tôi vẫn có thể khôi phục các tệp đã cam kết của mình

push - nếu chúng tôi cam kết các tệp của mình trên máy cục bộ, chúng vẫn dễ bị mất nếu máy cục bộ của chúng tôi bị mất, bị hỏng, v.v., để giữ an toàn cho tệp của chúng tôi hoặc để chia sẻ tệp của chúng tôi, thông thường chúng tôi muốn giữ tệp của mình trên điều khiển từ xa kho lưu trữ như Github. Để tiết kiệm trên kho lưu trữ từ xa, chúng tôi sử dụng push

ví dụ Dàn tệp có tên index.html git thêm index.html

Cam kết một tệp được dàn dựng git cam kết -m 'tên của cam kết của bạn'

Đẩy tệp lên Github git push origin master

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.