GitHub, GitLab là gì
Duy Luân
một tháng trướcBình luận: 110Lượt xem: 13.737
GitHub, GitLab là gì
Bài này mình viết dành cho các bạn sinh viên đang học các ngành công nghệ, thông tin, data, anh em thấy thiếu gì thì bổ sung giúp mình nhé. Về cơ bản, GitHubGitLab, hay Git nói chung, là một hệ thống để lưu trữ và theo dõi thay đổi với mã nguồn của bạn. Mã nguồn đó có thể thuộc bất kì ngôn ngữ lập trình nào cũng được. Ngoài Git còn có một số hệ thống tương tự nhưng mình sẽ tập trung Git và GitHub / GitLab vì đây là những thứ phổ biến nhất.

Trước tiên, chúng ta hãy tìm hiểu về Git trước. Với các loại file thông thường, khi bạn mở nó ra và chỉnh sửa, nội dung cũ của file chắc chắn sẽ mất đi và để khôi phục lại nó cực kì vất vả (không phải không làm được, nhưng tốn nhiều thời gian, công sức). Rồi giả sử bạn muốn tìm lại xem file đó như thế nào vào ngày 1/1/2019 thì sao, tức tận 1 năm về trước?

Chưa hết, bạn còn muốn biết rằng file này do ai chỉnh sửa, sửa dòng nào, sửa từ cái gì thành cái gì... Những thứ này thì tính năng sao lưu mặc định của macOS và Windows không làm được, vì đơn giản chúng không phải được xây dựng nên để dành cho mục đích phát triển phần mềm. Máy tính cá nhân của bạn thì chỉ 1 mình bạn dùng, nhưng 1 dự án phần mềm có nhiều người, thậm chí cả trăm người, cùng tham gia phát triển là chuyện bình thường. Chưa kể có nhiều thứ mà người này phải vào chỉnh sửa code của người kia nữa, mọi thứ sẽ rối rắm hơn khi có nhiều bên cùng tham gia.

github_pull.jpg

Để giải quyết vấn đề này, người ta dùng Git. Git sẽ thay dõi thay đổi của file trong dự án của bạn, bạn có thể biết được ai sửa dòng nào vào lúc nào, dòng code mới thêm vào là phục vụ cho chức năng gì. Git còn hỗ trợ tách nhánh (branch) để khi người ta phát triển các chức năng khác nhau thì không bị xung đột với nhau. Mấy cái chi tiết kĩ thuật này anh em tìm hiểu thêm ở các blog về Git nhé, ở Tinh tế mình chỉ giới thiệu chung chức năng thôi.

Ở tất cả các công ty mình từng dùng qua, người ta đều xài Git. Bạn có thể tự duy trì dịch vụ Git của riêng mình, khi đó bạn phải có server, ổ lưu trữ, phải tự làm nhiều thứ. Còn không thì bạn có thể dùng GitHub hoặc GitLab, hai dịch vụ Git online. Bạn có thể lưu trữ code của mình lên GitHub hoặc GitLab và không còn lo về chuyện mất code nữa (giống như việc bạn up file lên Google Drive hay iCloud thì lỡ máy tính có hỏng cũng không lo mất file). Server, ổ đĩa lưu trữ, vận hành, sao lưu... đều có GitHub và GitLab lo.

Hai dịch vụ này cũng cung cấp một giao diện web để bạn xem code hiện tại của mình, xem lại những chỉnh sửa với file, xem lại các lần chỉnh sửa để ra mắt phần mềm... Với các dự án mã nguồn mở, một người nào đấy ở bất kì nơi nào trên thế giới có thể đóng góp tính năng, giúp sửa lỗi vào dự án của bạn. Họ có thể upload code mới lên, bạn sẽ nhận được thông báo, bạn có thể kiểm tra xem code này chạy đúng hay không, rồi chấp nhận đưa code đó vào dự án chính... Những thứ này nếu xài chỉ dùng Git truyền thống thì cực hơn, nếu không có GitHub thì bạn phải tự download mã nguồn về, chỉnh sửa, gửi email qua lại cho chủ nhân của dự án, rồi sau đó lại trộn code với nhau. Cơ bản là cực lắm.

git_hub_app.jpg
Một project open source của mình để bắt đầu dev một web server bằng Python Flask, có sẵn docker để làm cho tiện

Hiện tại Tinh tế dùng GitLab, nhưng không phải dùng bản cloud do GitLab duy trì mà tự cài đặt GitLab lên server của tụi mình. Một số công ty khác mình từng hợp tác thì xài thẳng GitLab trên mây, hoặc GitHub nếu chịu chi. Tất nhiên các dự án khi upload lên đều được bảo mật, hoặc bạn có thể mở nó ra cho tất cả mọi người cùng xem cũng được luôn, tùy bản chất dự án.

Người ta thường dùng Git để lưu trữ code, nhưng nó có thể theo dõi thay đổi của rất nhiều loại file, ví dụ như file Word, file Final Cut... Chỉ là đây không phải cách tốt nhất để sao lưu file của bạn nhé. Git không sinh ra dành cho mục đích đó, nếu để sao lưu thì bạn có Google Drive, Dropbox, OneDrive... sẽ hiệu quả và dễ sử dụng hơn.

GitHub và GitLab sau này còn mở rộng thêm các chức năng giúp tự động triển khai code lên máy chủ, cho phép chia tách việc triển khai code bản test và bản chính thức... Những thứ này giúp tiết kiệm nhiều thời gian cho nhà phát triển phần mềm, và làm cho mọi việc trở nên dễ dàng hơn, hạnh phúc hơn.

Việc hiểu và biết sử dụng Git là một yêu cầu bắt buộc với bất kì bạn nào làm trong ngành công nghệ, dù bạn code nhiều hay ít thì cũng đều phải biết dùng Git, và đặc biệt là nên dùng quen GitHub hoặc GitLab. Khi bạn đi xin việc mà biết những thứ này thì bạn sẽ có lợi thế, khi bắt tay vào việc cũng thích nghi nhanh hơn và dễ dàng làm việc cùng các đồng nghiệp. Trường mình ngày xưa mình học đã bắt đầu dạy Git cho sinh viên từ năm 1 hoặc 2 rồi (tùy bạn đó chọn môn vào học kì nào).

Chúc anh em vui vẻ, rảnh rỗi ở nhà nghịch GitHub hoặc GitLab đi nha. Google cách dùng GitLab là ra cả đống bài hướng dẫn luôn.
110 Bình luận
có thể làm website tĩnh với Github pages đó các bạn. Mà Github pages sài Jekyll.
Ngoài ra bạn còn có thể dùng get Publii phần tạo website tĩnh cho Github pages.
@timmyboynhoc Không nhất thiết phải xài Jekyll, Jekyll chỉ là một engine để tạo ra web tĩnh (static page generator). Còn có gastby, nuxt, hugo,...
@satthuvdh GitHub chỉ hỗ trợ engine Jekyll thôi nhé
@satthuvdh Github hỗ trợ sẵn Jekyll. Không cần CI để build.
@viethoangrf Nói như bạn @robberviet thì đúng hơn, bạn có thể xài bất cứ static engine generator nào (mình đang xài Gastby) còn build thì đúng là Github chỉ hỗ trợ Jekyll.
Bài này viết sơ sài quá, với người chưa biết Git thì đảm bảo đọc xong cũng chẳng thể hiểu rõ cái Git là cái gì, còn với người nào biết Git thì thôi, miễn bàn..
@Galaxy..Star Chỉ cần nghe tới, biết sơ sơ và sau đó tự tìm hiểu thôi, mình không có ý muốn nói kĩ làm gì
@alakazam1994 Mấy này nghe qua sẽ sợ mà làm nhiều là quen á mà haha
@Galaxy..Star Mình cũng nghĩ đã code sẽ biết về git, còn ko code thì ko cần biết.
@A6_YoonA Có mấy cái kiểu cherry pick các thứ thì thằng này không có thì phải, lúc đấy lại phải thao tác trên command line
Anh @Duy Luân mở một chuyên mục coding cho anh em thảo luận cho rôm rã nào!
@An Don Vẽ ra làm gì bác, có mấy ai biết code đâu mà mở. Muốn thảo luận code lên stackoverflow ấy.
Em chỉ code được web mã php, html với css thôi, những thể loại code khác ko biết cái gì luôn 😁
Nhưng vậy cũng đủ dùng cho wordpress webmaster rồi :D
mình dùng github + markdown + vim để lưu trữ và đọc note 😁
@satthuvdh Mình thường dùng vim để đọc file log, xml tầm vài chục tới vài trăm mb, code shell script, JS các kiểu... mà vim mình có cài ctags để autocompletion nữa, nó cache php code xong ram ngốn tương đương với bọn ide
@Duy Luân Chắc chắn là mấy ông dev cũ rồi còn bây giờ gần như chả ai dùng nó làm main env nữa. Trên các IDE của Intellij đều support VIM mode nhưng dùng trên đó đỡ hơn trên server rất nhiều. Riêng về khoản code nhiều nền tảng 1 lúc mà dùng vim chắc oẳng não luôn trong khi các tools mới bây giờ suggest cực bá như Kite chẳng hạn.
@satthuvdh Mình giờ chỉ dùng Atom để làm thôi. Vì hệ thống suggest của Atom cực ngu lên việc mình cài thêm 1 engine ngoài làm suggest cho nó lại hóa thành combo imba vcl. Mà mình thấy dùng Atom cũng nhẹ mà, nó còn nhẹ hơn cả mình dùng chrome ms vl
@A6_YoonA em thấy Atom nặng vl. hàng từ electron chưa được cái nào nhẹ nhàng. Cài xong cái chạy thử rồi gỡ luôn :| :| Sublime thì cài thêm cả đống extension cho Lua/Love2d vẫn thấy nhanh mượt nhỏ gọn :v
Vậy tóm lại Github với Gitlab giống/khác nhau cái gì? Đọc từ đầu tới cuối không hiểu ý đồ tác giả
@NguyenHiepLuc Vậy bạn lên google sheets đi, hoặc excel online. Khi đó người ta chỉ được nhập thôi, không được xoá file
@Tu9a2 Github gitlab cơ bản giống nhau, github là dịch vụ lưu trữ online còn gitlab có cả online và offline (tự cài server git lưu trữ riêng của công ty). Gitlab giờ nổi lắm mình đang xài gitlab-ce và dùng gitlab-ci làm công cụ Ci-cd luôn
@vsphere Github cũng có bản enterprise self-hosted mà bạn
@Dustin Đỗ Mình thấy bản CE là đủ rồi nên không đề xuất mua.
Github thì ngon, nhanh hơn gitlab, nhưng giới hạn cái thằng collab private chỉ cho 3 người, lớn hơn thì phải trả $7/tháng, sau 4 năm xài github nay mình move luôn qua gitlab, chậm hơn tí cơ mà cách nó tổ chức website ổn hơn.
Cái này bổ ích này!
Git nó là hệ thống quản lý phiên bản phân tán do anh Linus Torvalds đẻ ra, mục đích ban đầu để quản lý source code nhân Linux.

Trước khi dùng Git thì Linux Foundation dùng BitKeeper vốn đắt và không đáp ứng đủ yêu cầu, còn các công cụ khác như CVS hay SVN nguồn mở nhưng quá yếu kém.

GitHub hay GitLab là 2 công ty cung cấp dịch vụ hosting cho người dùng git. Gitlab ngoài lưu trữ trên hệ thống cloud của họ, còn cung cấp phiên bản community edition nguồn mở, ae có thể dùng để tự cài đặt Gitlab server.

Một điểm khác biệt nữa của github và gitlab, ngoài từ hub và từ lab, đó là pull request và merge request 😁

Bên cạnh Gitlab, một công ty khác anh em nhẵn mặt là Google cũng tạo ra một open source git server, tên là Gerrit. Gerrit đang được dùng để quản lý source code Android và nhiều project khác của Google. Bên lề 1 chút là Google còn đẻ ra Repo, 1 công cụ để sync nhiều project git cho các dự án lớn.

1 thằng git hosting khác mà mình thích là Bit Bucket của Atlassian, tích hợp rất tốt với Jira và Confluence (vốn cũng do anh Atlassian đẻ ra)

// Update nhỏ: thực ra git không cũng đủ để chạy server, bằng lệnh git daemon. Tuy nhiên không quản lý được permission, pull request... như github, gitlab và bitbucket.
@anhtuannd Bên mình cũng đang dùng atlassian với jira, dùng luôn vả sourcetree của bọn này cho dễ quản lý sourcecode, từ hồi sang Ubuntu cái không có sourcetree nữa là thấy khổ hẳn … Mấy cái GUI của mấy thằng bên ubuntu không bằng được.
@anhtuannd Bộ Atlassian thì xịn rồi, có điều giá cũng chát 😆
@anhtuannd Bình luận của bác là thứ em tìm trong bài viết trên 😆
@hungpham.plh Cảm ơn bác, bài viết gãi đúng chỗ ngứa nên cứ thế tuôn trào 😁
@anhtuannd Thật sự nếu viết bài phổ biến kiến thức thì nên viết ntn.
Bác Luân viết bài trên kiểu nửa vời quá, những người biết thì họ thấy ko đủ, những người ko biết thì họ chả hiểu gì lại đâm hoang mang
Mình vẫn dùng teamfound vì quen rồi :v
GitHub GitLab quan tâm làm gì cho mệt, những người ko biết những thứ đấy sướng hơn
Nhìn screenshot toàn dùng "merge" nên history rối. Nếu dùng "rebase" thì sẽ gọn hơn nhiều 😃
@zoozoo88 Tùy, Rebase thì phải so sánh từng commit, và phải force push. Nhiều công ty sẽ setup rule cấm force push.
@Galaxy..Star Có phải cái nào cũng hay hơn đâu bác, mỗi cái có mạnh yếu riêng, chỗ mình cũng rebase nhiều hơn, việc merge code là có 1 người khác làm chứ mình không được làm, mình chỉ được rebase thôi.
@zoozoo88 Bản thân mình thì được chỉ về merge nên hay dùng merge, lợi ích như thế nào vậy bạn?
@Duy Luân In short: Dùng rebase thì history sẽ clean, trong khi merge sẽ tạo ra nhiều redundant commits (gọi là "merge commits") sẽ làm rối history của master,
Trong trường hợp feature branch của bro và master tồn tại độc lập trong 1 tg dài với rất nhiều commit được đưa lên master (từ những feature branch khác, do dev khác làm...) thì trước khi bro merge feature branch vào master thì sẽ phải merge latest change từ master về trước và solve conflicts rồi mới tạo PR để merge back changes từ feature branch của bro vào master, và khi được approved thì Tất cả changes từ feature branch sẽ được đưa lên master (bao gồm cả merge commit của phần "merge latest change từ master về trước" ở bên trên. Đây là redundant merge commits, vì bản thân master đã có những changes này trước rồi...)

Chi tiết hơn: https://www.atlassian.com/git/tutorials/merging-vs-rebasing

*Vì rebase có thể thay đổi history nên chỉ được dùng trong trường hợp chỉ 1 người làm việc trên feature branch (đa số ở các công ty mỗi người khi làm 1 task thì sẽ tạo branch riêng cho chính mình rồi làm trên đó, nên phù hợp dùng rebase)
Github nó mới đổi policy thành ra mấy ông xài bot để release file rồi host lên git kiểu opengapps ko xài đc nữa =)))
Nhiều lúc sử dụng mà mình không thể tin được ngần ấy tuyệt vời đó mà nó lại miễn phí. Trước thì còn thấy nó không cho để project private thì còn hiều được, nhưng bây giờ có thể để private cho phép người nào xem mới xem được thì không khác gì 1 trang lưu trữ source code cá nhân. Thật không thể hiểu nổi.

Bản thân mình cũng dùng git làm host lưu trữ nhạc lossless =)) Vì file nhạc chẳng có file nào mà trên 150mb cả nên không bị khó dễ bởi cái Git Large File Storage của thằng github nên cứ đẩy lên lưu trữ thôi =))
@nguyenhainguyen Vì nếu không làm thế người ta nhảy qua Gitlab hết =)) Đợt Microsoft mua lại github, số lượng project chuyển từ Github sang Gitlab tăng mấy chục nghìn lần =))
Hồi mới đi làm mấy ông ở phòng training dạy cho về git, học mất mấy hôm cũng chẳng hiểu nó hoạt động ra sao, next luôn, tới lúc lên làm dự án thực dc mấy ngày thì mới hiểu thực sự dc. Cái này tốt nhất cứ phải thực hành mới chuẩn, chứ nhiều lúc đọc mấy cái lí thuyết về nó thì như vịt nghe sấm thôi. Bác Luân viết bài này mục đích thì tốt nhưng cách diễn giải thì mình thấy ko quá hiệu quả cho các newbie, còn những ai biết sẵn rồi thì ko nói.
@KMIL307 chuẩn bác.
cái ngành IT này cứ phải làm thực tế nó mới thấm mà mới thấy hứng thú, chứ đọc lí thuyết suông chán lắm
chuẩn bác.
cái ngành IT này cứ phải làm thực tế nó mới thấm mà mới thấy hứng thú, chứ đọc lí thuyết suông chán lắm Mình ngoài ngành nhưng cũng thích học code. Hồi học python với js đọc sách với xem mấy khoá học không hiểu cái của nợ gì mấy. Nhưng lúc bắt đầu sờ vào project, mặc dù mình chỉ phải giám sát thôi (vì là CPO) nhưng hiểu hết luôn cái mớ lí thuyết kia. Sau này còn đọc hiểu được một số loại ngôn ngữ lập trình khác, chỉ cần xem xem qua lí thuyết rồi nhảy vào dự án luôn. Đúng là ngành IT cứ phải mó tay vào mới ra vấn đề được.
@KMIL307 Nghe qua biết sơ thôi 😁 còn muốn biết phải vọc vô, thứ gì cũng vậy mà.
@Duy Luân Nghe chỉ để biết concept, còn muốn giỏi phải hand-on
@anhtuannd Đúng rồi
mình vẫn dùng github nhiều hơn
các Bác cho em hỏi em dùng github để làm web, để chạy php, mysql, làm sao để demo cho khách xem bằng cái tên miền .io của github luôn, cho xem demo bằng html thì ok rồi mà up code php với liên kết thêm sql thì làm thế nào.
@ngokimphuc không được nhé, Github chỉ support chạy static sites thôi, PHP + MySQL thì phải có đủ môi trường, bắt buộc phải mua host riêng.
@ngokimphuc Thử heroku xem. Mình trước có deploy mấy cái project lên hồi làm đồ án cũng xịn xò, mà lâu lắm rồi nên không nhớ nữa. Giờ có DevOp trong lo mấy việc đấy rồi nên không rành nữa.
@ngokimphuc Để demo thì bạn làm 1 con server Digital Ocean, 5 đô / tháng, rẻ bèo, dễ quản lý. Dùng thêm docker nữa thì bạn dễ dàng chạy được nhiều service / web cũng lúc mà vẫn dễ quản lý
@Duy Luân Vultr ngon hơn DO bác Luân ơi, về VN ổn hơn nhiều. Cũng 5$/tháng.
Có điều hình như bác thớt muốn free thì phải 😁
viết bài kiểu này cho dummy chứ trong ngành thì version control làm dev phải biết, PM thì bắt buộc
Mình thích Pornhub hơn ^^
đọc xong không hiểu gì luôn :v ai giải thích giùm mình với
@quangtd95 đơn giản hệ thống quản lý source và giúp cho quá trình làm việc trên source code của dự án được hiệu quả đơn giản hơn thế thôi

Tải app Tinh tế

Tải app Tinhte - Theo dõi thông tin mà bạn yêu thích

Tải app TinhteTải app Tinhte
Tải app Tinh tế cho Android trên Google PlayTải app Tinh tế cho iPhone, iPad trên App Store
  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2020 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019