Hướng dẫn đẩy code lên github Informational
0 là một phần mềm dùng để quản lý phiên bản của mã nguồn tương tự như
Show
1 nhưng có nhiều ưu điểm hơn,
0 đang được sủ dụng rộng rãi hiện nay. Tuy nhiên trong bài viết này, tôi sẽ nói về git một cách "cá nhân" hơn, mang tính chia sẻ những cái tôi hay làm và hướng tới những người là sysadmin. Mong nhận được ý kiến đóng góp của các bạn. Một số khái niệm cần làm rõ
0 và
4 khác nhau như thế nào? Lấy ví dụ, bạn có một đoạn script dài 20 dòng, hôm sau bạn tối ưu nó đi, chỉ còn 15 dòng, một ngày khác bạn sửa ở script đó một vài chỗ. Git ghi lại những thời điểm thay đổi đó của bạn và source code của bạn tại thời điểm đó. Github là một trang web, cho phép bạn lưu source code của mình lên đó. Sự kết hợp hoàn hảo giữa Git và Github mang lại một sự thuận tiện không hề nhỏ cho người dùng. Bạn có thể thay đổi đoạn code của mình mọi lúc mọi nơi mà không sợ bị ghi đè lên hay bị mất dữ liệu do hỏng hóc vì dữ liệu của bạn được lưu cả trên trang web Github và máy cá nhân. Bạn cũng có thể khôi phục được code của mình về một thời điểm bất kỳ nào đó. Github có bản free và mất phí. Với Github free thì source code của bạn sẽ công khai, có nghĩa là ai cũng có thể xem code của bạn. Nó phù hợp với các phần mềm nguồn mở, và cũng có thể trở thành một blog cá nhân của chính các bạn như các trang blogspot, wordpress,... Muốn có thể tạo một kho code bí mật của riêng mình thì bạn phải trả phí. Đối với cá nhân tôi thì github free là quá đủ cho mục đích lưu trữ và chia sẻ thông tin. Cần phải làm gì để có thể sử dụng
4?
Tôi chắc chắn rằng một khi bạn đã đọc đến đây thì bạn đã biết thực hiện bước trên như thế nào :)
Bạn có thể bỏ qua bước này nếu bạn đã biết hoặc các bạn xác định không sử dụng nó để viết. Theo cá nhân tôi thì các bạn nên viết bằng Markdown trong Github vì nó sẽ mang lại sự tường minh cho bài viết của bạn. Bạn chỉ cần bỏ ra khoảng 2h là đã có thể sử dụng ngôn ngữ này như ý muốn.
Sau đó tạo các repo tùy mục đích, clone nó về client và code. Bước này tôi sẽ hướng dẫn chi tiết hơn ở phần sau. II. Ngôn ngữ MarkdownNgôn ngữ này khá đơn giản, bạn có thể đọc tại đây để biết cách sử dụng. Nhưng với tôi, tôi không dùng hết từng ấy thứ cho nên tôi chỉ nhớ một số cái tôi hay dùng, cách tôi dùng như sau: Tạo một file có tên bất kỳ với đuôi .md. Có thể dùng
7,
8,
9, undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 0,... hay bất cứ thứ gì mà bạn muốn. Một số phương pháp tôi hay sử dụng để viết: 1. Thẻ tiêu đềMarkdown sử dụng kí tự # để bắt đầu cho các thẻ tiêu đề, có thể dùng từ 1 đến 6 ký tự # liên tiếp. Mức độ riêu đề giảm dần từ 1 đến 6 Tùy mục đích và ý thích bạn có thể sử dụng cách này để thể hiện các chỉ mục khác nhau. Ví dụ: 1.Tiêu đề cấp 12.Tiêu đề cấp 26.Tiêu đề cấp 6 2. Chèn link, chèn ảnhĐể chèn hyperlink bạn chỉ cần paste luôn linh đó vào file .md https://github.com Hoặc bạn cũng có thể sử dụng cú pháp sau để thu ngắn đường dẫn của link
Kết quả là: Github Để chèn ảnh thì bạn hãy sử dụng cú pháp sau:
Tôi thường sử dụng công cụ Lightshot để chụp ảnh màn hình và up hình đó lên trang http://i.imgur.com/ để lấy đường dẫn ảnh đưa vào Github Hai công cụ này khá dễ sử dụng, bạn chỉ cần chụp màn hình bằng Lightshot ấn Ctrl + C để copy và Ctrl + V để paste vào trình duyệt tại trang web http://i.imgur.com/ 3. Ký tự in đậm, in nghiêng
từ cần in đậm
từ cần in nghiêng 4. Trích dẫn, bo chữĐể bo một đoạn text thì bạn chỉ cần sử dụng cú pháp sau: Kết quả là: undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 1 Để làm nổi bật một đoạn, chẳng hạn như một đoạn shell hay file cấu hình bạn có thể sử dụng cú pháp như ví dụ sau: undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined Kết quả như sau: auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 5. Gạch đầu dòngĐể sử dụng gạch đầu dòng bạn chỉ cần sử dụng cú pháp sau:
6. Tạo bảngBạn có thể sử dụng cú pháp sau để tạo bảng:
Kết quả: Cột 1 Hàng 1 Cột 2 Cột 3 Cột 4 Hàng 2 2 x 1 2 x 2 2 x 3 Hàng 3 3 x 1 3 x 2 3 x 3 Hàng 4 4 x 1 4 x 2 4 x 3 Mẹo:
Như vậy bạn đã có thể trình bày github của mình một cách sáng sủa bằng markdown. III. Các thao tác với Git và Github0. RepoGit là một công cụ để quản lý mã nguồn, nhưng tôi không phải là một coder nên tôi sẽ không sử dụng Git theo cách mà các coder hay sử dụng. Tôi sử dụng git và github để lưu trữ các file cấu hình của mình, các script, viết các bài hướng dẫn, các bản nháp,... Các repo là những nơi tôi phân loại, lưu trữ những thứ bên trên và nó được lưu cả ở máy trạm và ở server github. Để làm việc với repo thì bạn phải hiểu về nó. Một số điều bạn cần biết là: Ba trạng thái của một repo: Như hình trên bạn có thể thấy có 3 điểm cần lưu ý:
Tương ứng với 3 vị trí này ta có các hành động:
1. Cài đặt1.1. LinuxVới OS là Ubuntu: apt-get install git Với OS là Fedora, Centos yum instal git Các thiết lập ban đầu:
Liên kết với tài khoản github bằng SSH ssh-keygen -t rsa Enter file in which to save the key (/root/.ssh/id_rsa): [Press enter] Enter passphrase (empty for no passphrase): [Press enter] Enter same passphrase again: [Press enter] Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. Nếu bạn nhập passphrase thì hãy nhớ pass này! Kết quả: ls ~/.ssh/ id_rsa id_rsa.pub known_hosts ssh-agent -s ssh-add ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub copy đoạn mã này Truy cập đường dẫn sau https://github.com/settings/ssh (đảm bảo bạn đã đăng nhập vào github), chọn Add SSH key, đặt tên cho key này tại undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 6 và paste nội dung vừa copy vào ô undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 7 Lúc này bạn đã có thể commit lên github tại máy local mà không cần nhập username và password. 1.2. WindowsDownload tại địa chỉ: https://windows.github.com/ Cài đặt bình thường, yêu cầu phải có .NET 4.5 Giao diện của chương trình: Thêm tài khoản Github:
Click Update 2. Thao tác với Repo2.1. Trên Linux2.1.1. Tạo mớiTạo một repo mới trên trang github.com 2.1.2. CloneClone repo đó về bằng một trong các cách sau: Linux SSH: undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 8 hoặc: undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 9 để clone vào thư mục /opt/demo đối với phương pháp này các bạn cần nhập passphrase của ~/.ssh/id_rsa (có thể không cần nếu bạn không đặt passphrase) HTTPS: auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 0 hoặc: auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 1 để clone vào thư mục /opt/demo Để lấy các link SSH, HTTPS này ta làm như sau: Click vào các hyperlink HTTPS hoặc SSH rồi click Copy to clipboard. Ở đây tôi sử dụng lệnh undefinedsh auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8undefined 8 Lúc này trong thư mục hiện tại sẽ có thêm thư mục demo1 chứa các file trong repo trên github. Chuyển vào thư mục này: cd demo1/ ls Lúc này sẽ thấy trong thư mục này có file auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 3. Để sửa file này ta có thể sử dụng bất cứ trình soạn thảo nào, chẳng hạn vi, nano, gedit,... vi README.md Thêm vào nội dung như sau: Tạo một thư mục mới, chẳng hạn tên là script để chứa các script của tôi. mkdir script Tạo một script mới trong thư mục đó. vi script/script1.sh #!/bin/sh echo "Hello Python Vietnam" sleep 10 bằng cách tương tự các bạn có thể tạo thêm nhiều thư mục, file hướng dẫn, cấu hình, script,... tùy ý 2.1.3. Add, commit, pushĐể thực hiện hành động auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 4 ta sử dụng lệnh sau git add README.md để hoặc auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 6 để add tất cả các file hiện có. Để thự hiện hành động commit file README.md ta thực hiện lệnh git commit README.md hoặc auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 7 để commit tất cả. ta nên thêm tham số -m để ghi lại một comment cho hành động đó git commit README.md -m "ducnc sua doi" Lúc này các thay đổi của bạn đã được lưu lại trên máy cục bộ. Để đồng bộ lên server Github ta thực hiện lệnh: git push origin master \=> nhập passphrase (nếu bạn đặt passphrase ở mục 1.1.) với phương pháp clone ssh hoặc nhập username, password nếu clone bằng https Lúc này trở lại trang github.com và xem auto eth0 iface eth0 inet static ipaddress 10.10.10.10 netmask 255.255.255.0 gateway 10.10.10.1 dns-nameservers 8.8.8.8 8 lúc đầu sẽ thấy các commit của ta đã được đẩy lên. Một cách khác nếu bạn không muốn thực hiện clone về máy như bước trên thì bạn có thể làm như sau:
hoặc
0 git remote add origin [email protected]:ducnc92/demo2.git git push origin master Sau đó nhập passphrase(nếu cần) hoặc username + password (nếu sử dụng SSH) 2.1.4. PullGiả sử trên server github của bạn có những thay đổi mà máy local chưa cập nhật những thay đổi đó. Bạn thực hiện lệnh sau: cd cd /opt/demo1/ git pull 2.2. Trên Windows2.2.1. Tạo một repo mớiTạo repo trên github.com tự như mục 2.1.1. Tạo repo bằng phần mềm Github
2.2.2. CloneClick vào dấu cộng, chọn tab Clone, lựa chọn tổ chức mong muốn và chọn repo cần clone Để chỉnh sửa nội dung của repo này ta chọn chuột phải vào nó và chọn
2 Lúc đó chương trình Windows Explorer sẽ mở ra thư mục chứa repo của github, bạn có thể chỉnh sửa các file trong này, tạo xóa thư mục,... một cách bình thường. 2.2.3. Add, commit, push, pullTrở lại với chương trình Github ta sẽ thấy dòng
5 tại repo ta vừa sửa. Bạn hãy điền vào đó comment và ấn
6 Lúc này sự thay đổi của bạn với mã nguồn đã được ghi lại trên máy local, để đồng bộ nó lên server github bạn hãy ấn vào biểu tượng
7 ở góc trên cùng bên phải. Sau khi đồng bộ xong, quay trở lại repo trên trang github.com. Để đồng bộ những thay đổi trên github.com về máy local (pull) ta cũng click vào biểu tượng
7 như bên trên. 3. Thao tác với tổ chức trong GithubĐể tạo một nhóm cho nhiều người cùng làm việc ta làm như sau:
Tại mục
9 chọn Open Source để miễn phí, nhưng lúc này các Repo trong tổ chức sẽ là public.
Lúc này vào trang cá nhân của bạn sẽ thấy tại mục Organizations có tổ chức mới vừa tạo. Để cấu hình tổ chức này ta click thẳng vào nó. Ở đây tôi sẽ tạo một team mới như hình sau: Các member của team này có quyền write với các repo của team. Với 3 mức: Read Access, Write Access, Admin Access Github cho phép chúng ta phân quyền tới các thành viên của nhóm. Để mời một người dùng khác vào team, ta click vào team đó và search tên của người dùng cần tìm Sau đó hệ thống sẽ yêu cầu bạn nhập password để xác thực, nếu thành công, một email xác nhận sẽ được gửi đến người được mời và người này sẽ xác nhận có tham gia vào tổ chức hay không. Để tạo một repo cho tổ chức, ta chỉ cần click vào tổ chức đó, sau đó chọn
0. Các hành động clone, add, commit,... làm như bình thường. 4. Thao tác với nhánh (branch)
5. IssuesGiả sử bạn đang theo dõi repo của tôi và thấy có một số chỗ cần sửa đổi, bạn có thể comment ý kiến của mình vào Repo đó. Sau đó người quản trị sẽ xem xét, thay đổi và trả lời bạn. Để làm việc này bạn cần vào repo đó, click vào
1. Ví dụ như hình sau: Sau đó chọn
2 (màu xanh) để tạo một issue mới. Lúc này tại Repo của người quản trị sẽ thấy một Issue mới, người quản trị có thể click vào Issue này để xem, sau đó xem xét sửa đổi, comment lại. Khi sửa đổi hoàn tất thì sẽ đóng issue đó lại. Bằng cách tạo issue, bạn có thể đăng các câu hỏi, thắc mắc của mình cho chủ của repo đó. Tổng kếtBài viết trên tôi tổng hợp lại những kiến thức thu được khi sử dụng git và github cho công việc của tôi (sys admin), hi vọng nó giúp các bạn một phần nào đó. Chắc chắn bài viết còn có nhiều thiếu sót, mong các bạn thông cảm và gửi feedback cho tôi để hoàn thiện thêm. |