Git cho người mới bắt đầu

      6 Comments on Git cho người mới bắt đầu

Đây là bài viết đầu tiên trong loạt bài viết về git, những bài khác các bạn có thể xem tại:
1. Git cho người mới bắt đầu
2. Tạo ssh key và sử dụng ssh key trong git
3. Git ignore và làm việc với .gitignore
4. Xoá file đã tồn tại trong git và cập nhật gitignore giữa chừng dự án
5. git branch và mô hình pull request (Phần 1): git branch
6. git branch và mô hình pull request (Phần 2): pull request
7. git conflict và cách giải quyết
8. git tagging – gắn thẻ để đánh dấu commit
9. Git remote và việc push source code lên nhiều nơi cùng lúc
10. Sử dụng ssh với 2 tài khoản github cùng 1 lúc

Git?

Khi làm việc nhóm với nhau, cùng chung một dự án, code chung một chức năng, sửa chung một đoạn code, bạn sẽ làm sao để gửi/nhận code tới/từ các thành viên còn lại?
* Nén code rồi chép vào usb, gửi sang?
* Nếu ở xa thì gửi code qua các phương tiện liên lạc: email, chat…?
* “Chuyên nghiệp” hơn một chút thì dùng các phần mềm đồng bộ file: dropbox, drive, onedrive, sugarsync…?
Thời sinh viên, mình đã từng thử cả ba cách trên, và thực sự nó là một ác mộng. Và rồi ác mộng chấm dứt (để đẻ ra ác mộng mới :)) khi mình biết đến hệ thống quản lý phiên bản, và biết đến git.
Git là một hệ thống quản lý phiên bản dạng phân tán.
Dạng phân tán là sao thì mình sẽ giải thích ở cuối bài viết, còn bây giờ chúng ta sẽ tập trung vào Hệ thống quản lý phiên bản
Git hoàn toàn Miễn phí và là mã nguồn mở

Git giúp mình được những gì?

Git sẽ hỗ trợ tận răng cho bạn trong việc làm việc nhóm (nhóm của bạn có thể là 2 người, 20 người, hay 200000000(nhiều số 0 lắm) git đều “xử” được hết):
* Chia sẻ, đồng bộ mã nguồn, tài liệu của dự án
* Xử lý xung đột khi hai hay nhiều người cùng thao tác vào một file, đoạn code
* Theo dõi, lưu dấu cho dự án, bạn sẽ biết được cụ thể file nào, đoạn code nào do ai tạo, ai sửa, khi nào, sửa như thế nào
* Xoá những bản nháp không cần thiết một cách nhanh nhất
* Quay trở về bất kỳ thời điểm nào của dự án
* Rẽ nhánh để những tính năng “thử nghiệm” không ảnh hưởng đến hệ thống
Và nhiều nhiều tính năng hữu ích nữa đang chờ bạn khám phá.

Cài đặt và làm việc với git, chia sẻ đoạn code đầu tiên cho thế giới =))

Cài đặt

Việc cài đặt git khá đơn giản, bạn chỉ việc lên trang chủ git tải về và cài đặt như mọi phần mềm khác, để cho dễ dàng nhất thì bạn cứ để mọi thứ ở mặc định (còn ai thích khám phá thì có thể xem thêm tại từng bước cài đặt).
Chờ chút Vậy người khác thông qua git, truy cập vào máy tôi để lấy code tôi đã chia sẻ luôn à? Nếu vậy, lỡ tôi tắt máy thì sao?
Nếu bạn muốn, bạn có thể làm vậy, nhưng trên thế giới có rất nhiều dịch vụ lưu trữ source code cho bạn, github và bitbucket là hai dịch vụ nổi tiếng nhất. Hiện Google, Facebook và nhiều ông lớn công nghệ đang lưu giữ code trên những dịch vụ này. Ở bài viết này, mình sẽ giới thiệu về github.

Github?

Github là dịch vụ lưu trữ mã nguồn dựa trên git, ngoài ra nó còn hỗ trợ thêm nhiều dịch vụ khác như trao đổi cộng đồng, báo cáo vấn đề, tạo trang wiki, tạo trang web… Nhưng mình sẽ tập trung vào việc lưu trữ mã nguồn và chia sẻ để làm việc nhóm.

Đăng ký tài khoản

Việc đang ký khá đơn giản và đã được github hướng dẫn cụ thể.

Tạo kho chứa dự án trên github

Đăng nhập vào github, click vào nút hình dấu “+” ở phía trên bên phải và chọn new repository.

Repository (repo) là một cái “kho” có dùng để chứa mã nguồn dự án của mình, mọi thứ đều sẽ đặt vào trong đó, mỗi dự án ta sẽ tạo một repo tương ứng cho nó.

Điền tên của repo (mình ví dụ là demo_git) và bấm Create repository
Khi tạo xong repo, github sẽ đưa bạn tới trang bắt đầu:
Screen Shot 2015-08-07 at 9.17.04 AM
Ở đây, bạn bấm vào nút HTTPS để có được link tới repo của bạn, các thành phần khác mình sẽ giải thích từ từ.

Tạo dự án mới dưới máy mình

Tạo một thư mục mới và cd đến đó:

Lưu ý dấu $ để chỉ rằng đó là những câu lệnh mình sẽ chạy, bạn không gõ ký tự đó mà chỉ cần gõ git init. Những dòng không bắt đầu bởi $ là những dòng thông báo của hệ thống.
Liên kết dự án của mình đến repo trên github

Tạo thử một file rồi điền vài nội dung vào:

Mặc định khi bạn tạo mới một file, file này vẫn nằm “ngoài vòng pháp luật”, bạn phải thêm file này vào git index để git nó quản lý:

Mẹo Nếu muốn add nhiều file một lần, bạn có thể dùng lệnh git add .
commit những thay đổi: commit là thao tác đưa những thay đổi của mình vào hàng đợi, sẵn sàng để đẩy lên server

OK, đến lúc chia sẻ cho thế giới rồi, push code thôi: push là thao tác đẩy code từ máy của mình lên repo trên server.

Toàn bộ quá trình thao tác:

alt

Toàn bộ quá trình thao tác

Lên github, F5 trang của bạn và cảm nhận sự thay đổi 😛
Screen Shot 2015-08-07 at 9.46.17 AM
Tuyệt vời, vậy bây giờ tôi muốn chia sẻ dự án của tôi thì sao?

Chia sẻ dự án

Trước hết, mình nói qua về quyền chia sẻ dự án, mặc định, mọi dự án đưa lên github là public repo , có nghĩa là người khác chỉ cần vào trang github của bạn là có thể xem được tất cả các repo của bạn, và tất nhiên là họ sẽ lấy về máy được. Nguy hiểm quá! Ờ, github là mã nguồn mở mà, nên nó dựa trên tư tưởng mở cho cộng đồng, nếu bạn muốn có private repo thì bạn có thể mua một gói cao cấp hơn tài khoản free 😀
Nếu bạn muốn vừa free và vừa có private repo, bạn có thể tham khảo qua bitbucket: với bitbucket, bạn có thể tạo những private repo với 5 thành viên (và có thể nâng lên 8 thông qua chương trình giới thiệu thành viên) => quá đủ cho những nhóm nhỏ 🙂
Quay lại việc chia sẻ dự án, bạn chỉ việc đưa cho các thành viên khác cái link đến repo của mình lúc nãy (vd: https://github.com/CQBinh/demo_git.git) link này bạn có thể thấy trên trang tổng quan của repo trên github.
Các thành viên khác chỉ cần clone nó về là xong:

Bạn cũng có thể tự test vụ clone này:

Thêm chút nữa

Nãy bạn có nói đến dạng phân tán gì đó

Mình sẽ nói về dạng tập trung trước: với mô hình dạng tập trung, server sẽ đứng ra lưu trữ code và các thao tác quản lý, đồng bộ, blah blah. Nếu một ngày đẹp trời, server bị sập, các máy con sẽ ngồi chơi luôn, vì họ không thể tiếp tục làm việc mà vẫn được quản lý phiên bản nữa, SVN là một ví dụ cho hệ thống dạng như thế.
Với bất cập to lớn trên, hệ thống dạng phân tán ra đời: với mô hình dạng phân tán, mỗi máy con sẽ có một repo dưới máy mình, gọi là local repo (khi clone dự án về, nó clone chính server repo về làm local repo của mình), hầu hết mọi thao tác quản lý phiên bản sẽ làm dưới local, khi xong xuôi, ta mới thực hiện push để đổng bộ local repo của mình lên server repo thôi. Nếu ngày đẹp trời kia lại xảy ra, client vẫn thoái mái làm việc tiếp bởi nó có một local repo rồi (việc này hệ tập trung không thể). Ngoài ra, một máy con bất kỳ có thể đứng ra để làm server, giúp các máy con khác vẫn có thể liên lạc được với nhau và mọi việc lại diễn ra bình thường, đến ngày server khôi phục, máy server tạm này chỉ việc push code lên thôi => xong (cái này hệ tập trung có làm được hay không thì mình không rõ).

Tôi muốn biết thêm một chút về câu lệnh: git remote add origin https://github.com/CQBinh/demo_git.git origin là gì thế, có thay đổi nó được không?

Để hiểu rõ về vấn đề này, mời bạn đọc bài viết Git remote và việc push source code lên nhiều nơi cùng lúc của mình.

Khi mới tạo repo, github đưa mặc định là link SSH, nhưng bạn lại dùng HTTPS, vậy tôi muốn dùng ssh được không?

Được. Và mình khuyến khích bạn dùng SSH, nhưng để bài viết đơn giản và dễ hiểu nhất có thể, mình đã dùng HTTPS.
SSH bảo mật hơn HTTPS, nhưng để dùng được thì bạn phải thực hiện thêm một số thao tác, cấu hình nữa. Để hiểu rõ hơn về SSH và cách sử dụng, vui lòng đọc bài viết Tạo ssh key và sử dụng ssh key trong git của mình.

Nãy bạn có nói về việc dùng git sẽ mở ra những ác mộng mới?

Chính xác luôn, làm gì cũng sẽ gặp khó khăn hết, và nếu có khó khăn thì mình tìm cách khắc phục thôi. Một trong những ác mộng lớn nhất khi làm git đó là xung đột code (conflict) và dự án quá nặng.
Conflict
Để tìm hiểu về conflict và cách xử lý, vui lòng đọc bài viết git conflict và cách giải quyết của tôi.
Dự án quá nặng
Mời bạn đọc bài viết Git ignore và làm việc với .gitignore

Lập trình và hơn thế nữa

Spread the love
  • 2
  •  
  •  
  •  
  •  
    2
    Shares

Leave a Reply

6 Comments on "Git cho người mới bắt đầu"

avatar
  Subscribe  
newest oldest most voted
Notify of
trackback

[…] Bài viết này dành cho lập trình viên Android, sử dụng Android Studio IDE, có kiến thức cơ bản về git. […]

trackback

[…] hồ, muốn tìm hiểu thêm về git hoặc hệ thống lại kiến thức, vui lòng đọc loạt bài viết về git của mình) Mặc dù mỗi người làm một nhánh riêng, rồi được hỗ trợ xử lý xung đột […]

trackback

[…] hồ, muốn tìm hiểu thêm về git hoặc hệ thống lại kiến thức, vui lòng đọc loạt bài viết về git của mình) Mặc dù mỗi người làm một nhánh riêng, rồi được hỗ trợ xử lý xung đột […]

Anonymous
Guest

các link bạn đưa chết hết rồi