Trong hướng dẫn Git mà tôi đang thực hiện, git commit
được sử dụng để lưu trữ những thay đổi bạn đã thực hiện.
Những gì được git push
sử dụng cho sau đó?
Trong hướng dẫn Git mà tôi đang thực hiện, git commit
được sử dụng để lưu trữ những thay đổi bạn đã thực hiện.
Những gì được git push
sử dụng cho sau đó?
Câu trả lời:
Về cơ bản git commit
" ghi lại các thay đổi vào kho lưu trữ " trong khi git push
" cập nhật các ref từ xa cùng với các đối tượng liên quan ". Vì vậy, cái đầu tiên được sử dụng liên quan đến kho lưu trữ cục bộ của bạn, trong khi cái thứ nhất được sử dụng để tương tác với một kho lưu trữ từ xa.
Đây là một hình ảnh đẹp từ Oliver Steele , giải thích mô hình git và các lệnh:
Đọc thêm về git push
và git pull
trên GitReady.com (bài viết tôi đề cập đầu tiên)
git push
để làm việc với. Trong thực tế, đích đến git push
có thể là bất kỳ kho git nào . Nó có thể nằm trên ổ cứng cục bộ của riêng bạn trong một thư mục khác ( git remote add clone ~/proj/clone.git; git push clone master
hoặc git push ~/proj/clone.git master
, ví dụ), hoặc một kho lưu trữ git mà máy chủ của riêng bạn phục vụ.
Chà, về cơ bản, git commit đưa các thay đổi của bạn vào repo cục bộ của bạn, trong khi git đẩy sẽ gửi các thay đổi của bạn đến vị trí từ xa.
git push
tải lên các tệp cập nhật thực tế hoặc một số tệp "khác" đặc biệt không?
git push
được sử dụng để thêm các cam kết bạn đã thực hiện trên kho lưu trữ cục bộ vào một kho lưu trữ từ xa - cùng với git pull
đó, nó cho phép mọi người cộng tác.
Vì git là một hệ thống kiểm soát phiên bản phân tán, sự khác biệt là cam kết sẽ cam kết thay đổi đối với kho lưu trữ cục bộ của bạn, trong khi đó, đẩy sẽ đẩy các thay đổi lên tới một repo từ xa.
Cam kết : Ảnh chụp | Thay đổi | Lịch sử_record | Phiên bản | 'Lưu dưới dạng' của một kho lưu trữ. Kho Git = series (cây) của cam kết .
Kho lưu trữ cục bộ : kho lưu trữ trên máy tính của bạn.
Kho lưu trữ từ xa : kho lưu trữ trên một máy chủ ( Github ).
git commit
: Nối một mới cam kết (cuối cùng cam kết + dàn dựng sửa đổi) đến địa phương kho. (Tất cả các cam kết được lưu trữ trong /.git
)
git push
, git pull
: Đồng bộ hóa kho lưu trữ cục bộ với kho lưu trữ từ xa được liên kết . push
- áp dụng các thay đổi từ cục bộ vào từ xa , pull
- áp dụng các thay đổi từ xa vào cục bộ .
git commit
ghi lại những thay đổi của bạn vào kho lưu trữ cục bộ .
git push
cập nhật các từ xa kho với những thay đổi tại địa phương.
Ba điều cần lưu ý:
1) Thư mục làm việc ----- thư mục chứa tập tin mã của chúng tôi
2) Kho lưu trữ cục bộ ------ Đây là trong hệ thống của chúng tôi. Khi chúng tôi lần đầu tiên thực hiện lệnh CommIT thì Kho lưu trữ cục bộ này được tạo. ở cùng nơi có thư mục Làm việc của chúng tôi,
tệp Checkit (.git) được tạo.
Sau đó, khi chúng tôi cam kết, điều này sẽ lưu trữ những thay đổi chúng tôi thực hiện trong tệp của Thư mục làm việc vào Kho lưu trữ cục bộ (.git)
3) Kho lưu trữ từ xa ----- Điều này nằm bên ngoài hệ thống của chúng tôi như trên các máy chủ được đặt ở bất kỳ nơi nào trên thế giới. như github. Khi chúng tôi thực hiện lệnh PUSH thì các mã từ kho lưu trữ cục bộ của chúng tôi sẽ được lưu trữ vào Kho lưu trữ từ xa này
Chỉ muốn thêm các điểm sau:
Yon không thể đẩy cho đến khi bạn cam kết khi chúng tôi sử dụng git push
để đẩy các cam kết được thực hiện trên nhánh cục bộ của bạn đến một kho lưu trữ từ xa.
Các git push
lệnh hai đối số:
Một tên từ xa, ví dụ, origin
Tên chi nhánh, ví dụ,master
Ví dụ:
git push <REMOTENAME> <BRANCHNAME>
git push origin master
Một sự tương tự rất thô thiển: nếu chúng ta so sánh git commit
với việc lưu một tệp đã chỉnh sửa, thì git push
sẽ sao chép tệp đó sang một vị trí khác.
Xin đừng loại bỏ sự tương tự này ra khỏi bối cảnh này - cam kết và đẩy không hoàn toàn giống như lưu một tệp đã chỉnh sửa và sao chép nó. Điều đó nói rằng, nó nên giữ để so sánh vì lợi ích.
Sẽ dễ hiểu hơn khi sử dụng các lệnh git add
và commit
nếu bạn tưởng tượng một tệp nhật ký đang được duy trì trong kho lưu trữ của bạn trên Github. Tệp nhật ký của một dự án điển hình đối với tôi có thể trông giống như:
---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2
Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------
---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on
Tôi thường bắt đầu một ngày của tôi với một git pull
yêu cầu và kết thúc nó với một git push
yêu cầu. Vì vậy, mọi thứ trong hồ sơ của một ngày tương ứng với những gì xảy ra giữa chúng. Trong mỗi ngày, có một hoặc nhiều nhiệm vụ hợp lý mà tôi hoàn thành yêu cầu thay đổi một vài tệp. Các tập tin được chỉnh sửa trong nhiệm vụ đó được liệt kê trong một chỉ mục.
Mỗi tác vụ phụ này (Nhiệm vụ A và Nhiệm vụ B ở đây) là các cam kết riêng lẻ. Các git add
lệnh bổ sung thêm file vào danh sách 'Index của tập tin đã thay đổi'. Quá trình này cũng được gọi là dàn dựng và trong hồ sơ thực tế đã thay đổi các tập tin và những thay đổi được thực hiện. Các git commit
hồ sơ lệnh / để hoàn tất những thay đổi và danh sách chỉ số tương ứng cùng với một thông báo tùy chỉnh có thể được sử dụng để tham khảo sau này.
Hãy nhớ rằng bạn vẫn chỉ thay đổi bản sao cục bộ của kho lưu trữ chứ không phải bản sao trên Github. Sau này, chỉ khi bạn làm mộtgit push
hiện tất cả các thay đổi được ghi lại này, cùng với các tệp chỉ mục của bạn cho mỗi cam kết, mới được đăng nhập vào kho lưu trữ chính (trên Github).
Ví dụ, để có được mục nhập thứ hai trong tệp nhật ký tưởng tượng đó, tôi đã thực hiện:
git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push
Tóm lại, git add
và git commit
cho phép bạn chia nhỏ một thay đổi đối với kho lưu trữ chính thành các thay đổi phụ logic có hệ thống. Như các câu trả lời và nhận xét khác đã chỉ ra, có rất nhiều cách sử dụng chúng. Tuy nhiên, đây là một trong những cách sử dụng phổ biến nhất và nguyên tắc thúc đẩy Git là một hệ thống kiểm soát sửa đổi nhiều giai đoạn không giống như các hệ thống phổ biến khác như Svn.
git commit không gì khác ngoài việc lưu các thay đổi của chúng tôi một cách chính thức, với mỗi cam kết chúng tôi đưa ra thông điệp cam kết, một khi chúng tôi thực hiện xong các cam kết, chúng tôi có thể đẩy nó ra từ xa để thấy sự thay đổi của chúng tôi trên toàn cầu
điều đó có nghĩa là chúng ta có thể thực hiện nhiều lần xác nhận trước khi đẩy từ xa (chúng ta có thể thấy danh sách các cam kết đã xảy ra và các thông báo cũng vậy) git lưu từng cam kết với id xác nhận là mã 40 chữ số
và tôi chỉ sử dụng git đẩy khi tôi muốn thấy sự thay đổi của mình trong điều khiển từ xa (Sau đó tôi sẽ kiểm tra xem mã của tôi có hoạt động trong jenkins không)
Chà, về cơ bản, git commit đưa các thay đổi của bạn vào repo cục bộ của bạn, trong khi git đẩy sẽ gửi các thay đổi của bạn đến vị trí từ xa. Vì git là một hệ thống kiểm soát phiên bản phân tán, sự khác biệt là cam kết sẽ cam kết thay đổi đối với kho lưu trữ cục bộ của bạn, trong khi đó, đẩy sẽ thay đổi lên tới một repo từ xa
nguồn Google
http://gitref.org/basic/ liên kết này cũng sẽ rất hữu ích
trong điều kiện cư sĩ, git commit
là bước trước khi git push
bạn chạy chúng theo cách đó để git thành công tệp của bạn vào github.
git commit
là để cam kết các tập tin được dàn dựng trong repo cục bộ. git push
là để chuyển tiếp nhanh hợp nhất nhánh chính của phía cục bộ với nhánh chính từ xa. Nhưng sự hợp nhất sẽ không luôn luôn thành công. Nếu từ chối xuất hiện, bạn phải để pull
bạn có thể thành công git push
.