Dưới đây là tất cả các lệnh Git tôi đã sử dụng tuần trước và những gì họ làm.

Tín dụng hình ảnh: GitHub Octodex

Giống như hầu hết những người mới, tôi bắt đầu tìm kiếm StackOverflow cho các lệnh Git, sau đó sao chép các câu trả lời, mà không thực sự hiểu những gì họ đã làm.

Tín dụng hình ảnh: XKCD

Tôi nhớ mình đã nghĩ, sẽ rất tuyệt nếu có một danh sách các lệnh Git phổ biến nhất cùng với một lời giải thích về lý do tại sao chúng hữu ích?

Chà, ở đây tôi nhiều năm sau để biên soạn một danh sách như vậy, và đưa ra một số thực tiễn tốt nhất mà ngay cả các nhà phát triển trung cấp cũng nên thấy hữu ích.

Để giữ cho mọi thứ thực tế, tôi đã liệt kê danh sách này ra khỏi các lệnh Git thực tế mà tôi đã sử dụng trong tuần qua.

Hầu như mọi nhà phát triển đều sử dụng Git và rất có thể là GitHub. Nhưng nhà phát triển trung bình có thể chỉ sử dụng ba lệnh này 99% thời gian:

git thêm --all
git cam kết -am ""
git đẩy nguồn gốc

Điều đó rất tốt và tốt khi bạn làm việc trong nhóm một người, hackathon hoặc ứng dụng vứt đi, nhưng khi sự ổn định và bảo trì bắt đầu trở thành ưu tiên, hãy dọn dẹp các cam kết, bám sát chiến lược phân nhánh và viết thông điệp cam kết mạch lạc trở nên quan trọng.

I Khănll bắt đầu với danh sách các lệnh thường được sử dụng để giúp người mới dễ hiểu hơn những gì có thể với Git, sau đó chuyển sang chức năng nâng cao hơn và thực tiễn tốt nhất.

Các lệnh được sử dụng thường xuyên

Để khởi tạo Git trong kho lưu trữ (repo), bạn chỉ cần gõ lệnh sau. Nếu bạn không khởi tạo Git, bạn không thể chạy bất kỳ lệnh Git nào khác trong repo đó.

git init

Nếu bạn sử dụng GitHub và bạn đang đẩy mã lên một repo GitHub được lưu trữ trực tuyến, bạn sẽ sử dụng một repo từ xa. Tên mặc định (còn được gọi là bí danh) cho repo từ xa đó là nguồn gốc. Nếu bạn đã sao chép một dự án từ Github, thì nó đã có nguồn gốc. Bạn có thể xem nguồn gốc đó bằng lệnh git remote -v, sẽ liệt kê URL của repo từ xa.

Nếu bạn đã khởi tạo repo Git của riêng mình và muốn liên kết nó với repo GitHub, bạn sẽ phải tạo một cái trên GitHub, sao chép URL được cung cấp và sử dụng lệnh git remote add origin , với URL được cung cấp bởi GitHub thay thế . Từ đó, bạn có thể thêm, cam kết và đẩy vào repo từ xa của mình.

Cái cuối cùng được sử dụng khi bạn cần thay đổi kho lưu trữ từ xa. Hãy nói với bạn rằng bạn đã sao chép một repo từ người khác và muốn thay đổi kho lưu trữ từ xa từ chủ sở hữu ban đầu thành một tài khoản GitHub của riêng bạn. Thực hiện theo quy trình tương tự như git remote add origin, ngoại trừ sử dụng set-url thay thế để thay đổi repo từ xa.

git từ xa -v
git từ xa thêm nguồn gốc 
git nguồn gốc set-url từ xa 

Cách phổ biến nhất để sao chép repo là sử dụng git clone, theo sau là URL của repo.

Hãy nhớ rằng kho lưu trữ từ xa sẽ được liên kết với tài khoản mà bạn đã nhân bản repo. Vì vậy, nếu bạn đã nhân bản một repo thuộc về người khác, bạn sẽ không thể đẩy sang GitHub cho đến khi bạn thay đổi nguồn gốc bằng cách sử dụng các lệnh trên.

git clone 

Bạn nhanh chóng tìm thấy chính mình bằng cách sử dụng các chi nhánh. Nếu bạn không hiểu các chi nhánh là gì, có những hướng dẫn khác sâu hơn nhiều và bạn nên đọc chúng trước khi tiếp tục (ở đây là một trong những hướng dẫn).

Lệnh git nhánh liệt kê tất cả các nhánh trên máy cục bộ của bạn. Nếu bạn muốn tạo một nhánh mới, bạn có thể sử dụng nhánh git , với đại diện cho tên của nhánh, chẳng hạn như chủ chủ đề.

Lệnh git checkout chuyển sang một nhánh hiện có. Bạn cũng có thể sử dụng lệnh git checkout -b để tạo một nhánh mới và ngay lập tức chuyển sang nó. Hầu hết mọi người sử dụng điều này thay vì các lệnh thanh toán và chi nhánh riêng biệt.

chi nhánh git
chi nhánh git 
kiểm tra git 
kiểm tra git -b 

Nếu bạn đã thực hiện một loạt các thay đổi cho một nhánh, hãy để nó gọi là Thay đổi phát triển và bạn muốn hợp nhất lại nhánh đó vào nhánh chính của mình, bạn sử dụng lệnh git merge . Bạn muốn kiểm tra nhánh chính, sau đó chạy git merge phát triển để hợp nhất phát triển thành nhánh chính.

hợp nhất git 

Nếu bạn làm việc với nhiều người, bạn sẽ thấy mình ở một vị trí nơi một repo được cập nhật trên GitHub, nhưng bạn không có những thay đổi cục bộ. Nếu trường hợp đó, bạn có thể sử dụng git pull origin để lấy các thay đổi gần đây nhất từ ​​nhánh từ xa đó.

nguồn gốc git kéo 

Nếu bạn tò mò muốn xem những tập tin nào đã được thay đổi và những gì đang được theo dõi, bạn có thể sử dụng trạng thái git. Nếu bạn muốn xem mỗi tệp đã được thay đổi bao nhiêu, bạn có thể sử dụng git diff để xem số lượng dòng thay đổi trong mỗi tệp.

tình trạng git
git diff --stat

Lệnh nâng cao và thực hành tốt nhất

Chẳng mấy chốc bạn đạt đến một điểm mà bạn muốn các cam kết của mình trông đẹp và ổn định. Bạn cũng có thể phải loay hoay với lịch sử cam kết của mình để làm cho các cam kết của bạn dễ hiểu hơn hoặc hoàn nguyên một thay đổi đột ngột.

Lệnh git log cho phép bạn xem lịch sử cam kết. Bạn muốn sử dụng điều này để xem lịch sử của các cam kết của bạn.

Cam kết của bạn sẽ đi kèm với tin nhắn và hàm băm, đó là chuỗi số và chữ cái ngẫu nhiên. Một ví dụ băm có thể trông như thế này: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

nhật ký git

Hãy nói rằng bạn đã đẩy một cái gì đó đã phá vỡ ứng dụng của bạn. Thay vì sửa nó và đẩy một cái gì đó mới, bạn nên thay vì quay lại một lần và thử lại.

Nếu bạn muốn quay ngược thời gian và kiểm tra ứng dụng của mình từ một cam kết trước đó, bạn có thể thực hiện việc này trực tiếp bằng cách sử dụng hàm băm làm tên chi nhánh. Điều này sẽ tách ứng dụng của bạn khỏi phiên bản hiện tại (vì bạn đang chỉnh sửa một bản ghi lịch sử, thay vì phiên bản hiện tại).

kiểm tra git c3d88eaa1aa4e4d5f

Sau đó, nếu bạn thực hiện các thay đổi từ nhánh lịch sử đó và bạn muốn đẩy lại, bạn phải thực hiện một cú đẩy mạnh mẽ.

Thận trọng: Đẩy lực là nguy hiểm và chỉ nên được thực hiện nếu bạn hoàn toàn phải. Nó sẽ ghi đè lên lịch sử của ứng dụng của bạn và bạn sẽ mất bất cứ thứ gì đến sau.

git đẩy gốc -f

Những lần khác, nó chỉ không thực tế để giữ mọi thứ trong một lần cam kết. Có lẽ bạn muốn lưu lại tiến trình của mình trước khi thử điều gì đó có khả năng rủi ro, hoặc có lẽ bạn đã phạm sai lầm và muốn tránh cho bản thân sự bối rối khi gặp lỗi trong lịch sử phiên bản. Đối với điều đó, chúng tôi có git rebase.

Hãy để nói rằng bạn có 4 lần cam kết trong lịch sử địa phương (không bị đẩy lên GitHub), trong đó bạn đã đi tới đi lui. Cam kết của bạn trông cẩu thả và thiếu quyết đoán. Bạn có thể sử dụng rebase để kết hợp tất cả các cam kết đó thành một cam kết ngắn gọn, duy nhất.

git rebase -i ĐẦU ~ 4

Lệnh trên sẽ mở ra trình soạn thảo mặc định của máy tính của bạn (đó là Vim trừ khi bạn đã cài đặt nó thành một thứ khác), với một số tùy chọn về cách bạn có thể thay đổi các cam kết của mình. Nó sẽ trông giống như mã dưới đây:

chọn tin nhắn cam kết cũ nhất 130deo9
chọn tin nhắn cam kết lâu đời thứ hai 4209fei
chọn 4390gne tin nhắn cam kết lâu đời thứ ba
chọn tin nhắn cam kết mới nhất của bmo0dne

Để kết hợp những thứ này, chúng ta cần thay đổi tùy chọn của Pick pick thành thành fix fixup (như tài liệu bên dưới đoạn mã nói) để kết hợp các cam kết và loại bỏ các thông điệp cam kết. Lưu ý rằng trong vim, bạn cần nhấn vào một số điện thoại hoặc một phần mềm để có thể chỉnh sửa văn bản và để lưu và thoát, bạn cần nhập phím thoát theo sau là shift shift + z + z. Don Cầu hỏi tôi tại sao, nó chỉ là.

chọn tin nhắn cam kết cũ nhất 130deo9
sửa lỗi 4209fei tin nhắn cam kết lâu đời thứ hai
sửa lỗi 4390gne tin nhắn cam kết lâu đời thứ ba
sửa lỗi bmo0dne tin nhắn cam kết mới nhất

Điều này sẽ hợp nhất tất cả các cam kết của bạn vào cam kết với thông điệp Cam kết tin nhắn cam kết cũ nhất.

Bước tiếp theo là đổi tên tin nhắn cam kết của bạn. Đây hoàn toàn là một vấn đề về quan điểm, nhưng miễn là bạn tuân theo một khuôn mẫu nhất quán, bất cứ điều gì bạn làm đều ổn. Tôi khuyên bạn nên sử dụng các nguyên tắc cam kết do Google đưa ra cho Angular.js.

Để thay đổi thông điệp cam kết, sử dụng cờ sửa đổi.

cam kết game --amend

Điều này cũng sẽ mở vim và các quy tắc chỉnh sửa và lưu văn bản giống như trên. Để đưa ra một ví dụ về một thông điệp cam kết tốt, ở đây, một trong những quy tắc từ hướng dẫn:

feat: thêm nút thanh toán sọc vào trang thanh toán
- thêm nút thanh toán sọc
- viết bài kiểm tra để kiểm tra

Một lợi thế để tuân thủ các loại được liệt kê trong hướng dẫn là nó làm cho việc ghi nhật ký thay đổi dễ dàng hơn. Bạn cũng có thể bao gồm thông tin trong phần chân trang (một lần nữa, được chỉ định trong hướng dẫn) tham chiếu các vấn đề.

Lưu ý: bạn nên tránh việc đánh lại và xóa các cam kết của mình nếu bạn đang hợp tác trong một dự án và được đẩy mã lên GitHub. Nếu bạn bắt đầu thay đổi lịch sử phiên bản dưới mũi người, bạn có thể sẽ khiến mọi người sống khó khăn hơn với những lỗi khó theo dõi.

Có một số lượng gần như vô tận các lệnh có thể có với Git, nhưng các lệnh này có lẽ là những lệnh duy nhất mà bạn sẽ cần biết trong vài năm đầu lập trình.

Sam Corcos là nhà phát triển chính và đồng sáng lập của Bản đồ Tầm nhìn, nền tảng trực quan nhất cho bản đồ địa hình in 3D, cũng như LearnPhoenix.io, một trang web hướng dẫn nâng cao trung gian để xây dựng các ứng dụng sản xuất có thể mở rộng với Phoenix và React.