Giới thiệu
hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !
Liên hệ quảng cáo: trienkhaiweb@gmail.com
Mục lục
Trong công việc lập trình, các lập trình viên luôn phải trau dồi kỹ năng làm việc nhóm, một dự án có thể có rất nhiều người code khác nhau, vậy làm thế nào có thể quản lý toàn bộ mã nguồn hiệu quả khi mỗi người tham gia code một thành phần trong dự án ? Github và SVN được sinh ra để giải quyết vấn đề này cho lập trình viên. Ở bài viết này, chúng ta cùng thảo luận về cách tiếp cận github từ cơ bản tới nâng cao cho NEWBIE nhé !
GitHub là một hệ thống quản lý dự án và phiên bản mã nguồn, hoạt động giống như một mạng xã hội cho lập trình viên. Các lập trình viên có thể lấy (clone) mã nguồn từ kho (repository) và Github chính là một dịch vụ máy chủ repository công cộng, mỗi người có thể tạo tài khoản trên đó để tạo ra các kho chứa của riêng mình để có thể lưu trữ mã nguồn phục vụ công việc. Ngoài mục đích phục vụ lưu trữ, github cung cấp những phương thức mạnh mẽ giúp lập trình viên có thể dễ dàng làm việc nhóm, quản lý/ kiểm tra lịch sử sửa đổi code, chia nhỏ đầu việc dự án mà không gặp nhiều vấn đề xung đột như việc lưu trữ mã nguồn truyền thống.
Để dễ tiếp cận với Github nhất, bạn nên thử với gitHub Desktop, là phần mềm quản lý mã nguồn có giao diện cài đặt được tren máy tính được github phát triển và cung cấp sẵn, dễ dàng sử dụng cho người mới, chạy được trên macOs và Windows (không thấy ubuntu, thật là thiệt thòi, nhưng anh em nào mà dùng ubuntu hoặc anh em code lâu thì chắc sẽ đam mê xài dòng lệnh hoặc git tích hợp trên IDE chứ ko sử dụng github desktop đâu nhỉ 😅).
Các bước cài đặt:
RRepository chúng ta có thể hiểu nó là một cái kho, nơi sẽ lưu trữ các files và ghi lại toàn bộ trạng thái, lịch sử của thư mục và file trong mã nguồn dự án. Trạng thái được lưu lại đang được chứa như là lịch sử thay đổi của nội dung. Bằng việc đặt thư mục muốn quản lý lịch sử thay đổi dưới sự quản lý của repository, có thể ghi chép lại lịch sử thay đổi của thư mục và file trong thư mục đó, và cập nhật ghi chú cho các phiên bản thay đổi để giúp quá trình maintain hiệu quả hơn.
Branch là thứ sử dụng phân nhánh mã nguồn và ghi lại lịch sử cập nhật code. Branch đã phân nhánh sẽ không ảnh hưởng đến branch khác nên có thể tiến hành nhiều thay đổi đồng thời trong cùng 1 repository. Có thể liên tưởng giống việc chung một mã nguồn gốc, copy ra 5 bản để 5 lập trình viên cùng code trên một dự án và lưu lại lịch sử, mặc dù 5 người đã cùng làm và mã nguồn thay đổi rất nhiều, nhưng mỗi một dev là một phiên bản khác nhau, bao gồm cả phiên bản gốc sẽ không thay đổi gì, giúp cho việc quản lý chất lượng mã nguồn hiệu quả hơn, thông thờng lead sẽ review lại code của các nhánh, nếu đáp ứng chất lượng sẽ cập nhật (merge code) lên nhánh main ( bản chính thức của mã nguồn). Trong mỗi nhánh, vẫn có thể nhiều người cùng làm việc và cập nhật code, tất nhiên các thao tác cần nhịp nhàng để tránh conflict ( xung đột) khi 2 hoặc nhiều lập trình viên cập nhật chung files, hoặc sau khi đã sửa các hàm mà có hàm khác gọi tới gây ra lỗi không mong muốn …
Pull: khi thực hiện pull, sẽ lấy được mã nguồn mới nhất từ Repository.
Commit: ( xác nhận dữ liệu được thay đổi)
Push: Đưa dữ liệu đã xác nhận lên nhánh sau khi đã xác nhận
Fetch: nạp lại ( hình dung giống việc 2 lập trình viên A,B cùng đưa code mới lên một nhánh, lập trình viên C fetch để làm mới nhánh xem có sự thay đổi gì trong nhánh không, và sau đó sẽ thực hiện công tác pull để kéo code mới cập nhật của 2 LTV A và B về.
Nếu bạn đã hiểu rõ các khái niệm của GIT, muốn tìm giải pháp tốt hơn để tăng hiệu năng khi code, hãy xem video ngắn này.
Bước 1:
Đăng nhập tài khoản, Bấm nút new trên sidebar menu github.com để tạo repository mới
Bước 2: nhập thông tin cho repo
Bước 3: làm theo hướng dẫn sau khi repo được tạo trên github.com
Chạy lần lượt các lệnh sau:
echo "# quickcap" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/toan10921/quickcap.git
git push -u origin main
Xem thêm:
https://docs.github.com/en/get-started/quickstart/create-a-repo
git clone git_url /path
B1: truy cập thư mục cần tạo git, mở command line
B2: Tạo nhánh và commit đầu tiên
git init -b main
git init && git symbolic-ref HEAD refs/heads/main
git add .
git commit -m "First commit"
B3: Tạo Repository trên github.com:
B4: thêm URL remote vào local repository hiện tại đã tạo ở môi trường local:
git remote add origin REMOTE-URL
// nếu trong trường hợp add origin chưa đúng, có thể set lại url bằng lệnh:
git remote set-url origin REMOTE-URL
git remote -v
git push origin main
LƯU Ý: Khi bạn hợp nhất, có thể xảy ra xung đột. Tham khảo merge conflich để tìm hiểu giải pháp.
Sau khi tạo file và push code, github không nhận diện chữ hoa và chữ thường gây ra tình huống khi thay đổi môi trường chạy mã nguồn, một số file sẽ không nhận diện được và gây lỗi
Giải pháp: sử dụng câu lệnh trên git bash để thay đổi tên file từ chữ thường sang chữ hoa hoặc ngược lại, ví dụ dưới đây mình đang cần thay đổi tên file từ solutionCategoryController sang SolutionCategoryController trong dự án laravel
git mv app/Http/Controllers/solutionCategoryController.php app/Http/Controllers/SolutionCategoryController.php
Link tham khảo: https://stackoverflow.com/questions/10523849/changing-capitalization-of-filenames-in-git
Chi tiết lỗi:
fatal: detected dubious ownership in repository at '/home/yourdomain/public_html'
To add an exception for this directory, call:
Trong một số tình huống deploy trên server, chúng ta sẽ gặp vấn đề này khi thao tác với git, giải pháp xử lý là chạy dòng lệnh sau:
git config --global --add safe.directory '*'
Thao khảm thêm bài viết cộng đồng: https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor
Chi tiết lỗi:
root@vultr:/home/yourdomain/public_html# git pull
Username for 'https://github.com': yourusername
Password for 'https://yourusername@github.com':
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/yourusername/yourrepo.git/'
root@vultr:/home/yourdomain/public_html#
Khi gặp lỗi này, cách giải quyết như sau:
Truy cập github.com và đăng nhập, thao tác trên giao diện web các bước lần lượt theo hình:
Sau khi có token, chúng ta đền token thay password khi github yêu cầu nhập mật khẩu:
Để không phải nhập lại username và mật khẩu sau khi thay đổi khi thay token password, chúng ta chạy các lệnh sau:
git config --global user.name "yourusername"
git config --global credential.helper cache
git config --global credential.helper store
Tham khảo thêm bài viết cộng đồng: https://stackoverflow.com/questions/68775869/message-support-for-password-authentication-was-removed-please-use-a-personal
Fix:
git config --global --unset credential.helper
git config credential.helper store
Tham khảo: https://stackoverflow.com/questions/17659206/git-push-results-in-authentication-failed
hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !
Liên hệ quảng cáo: trienkhaiweb@gmail.com