└── README.md /README.md: -------------------------------------------------------------------------------- 1 |  2 | ## Git và Github cho sysadmin 3 | 4 | ### Mục lục 5 | 6 | [I. Mở đầu](#Modau) 7 | 8 | [II. Ngôn ngữ Markdown](#ngonngumarkdown) 9 | - [1. Thẻ tiêu đề](#thetieude) 10 | - [2. Chèn link, chèn ảnh](#chenlinkchenanh) 11 | - [3. Ký tự in đậm, in nghiêng](#kytuindaminnghieng) 12 | - [4. Trích dẫn, bo chữ](#trichdanbochu) 13 | - [5. Gạch đầu dòng](#gachdaudong) 14 | - [6. Tạo bảng](#taobang) 15 | - [Mẹo](#meo) 16 | 17 | [III. Các thao tác với git và github](#cacthaotacvoigitvagithub) 18 | - [0. Repo](#repo) 19 | - [1. Cài đặt](#caidat) 20 | 21 | - [1.1. Linux](#linux) 22 | - [1.2. Windows](#windows) 23 | 24 | - [2. Thao tác với Repo](#thaotacvoirepo) 25 | 26 | - [2.1. Trên Linux](#21trenlinux) 27 | - [2.1.1. Tạo mới](#211taomoi) 28 | - [2.1.2. Clone](#212clone) 29 | - [2.1.3. Add, commit, push](#213addcommitpush) 30 | - [2.1.4. Pull](#214pull) 31 | - [2.2. Trên Windows](#22trenwindows) 32 | - [2.2.1. Tạo một repo mới](#221taomotrepomoi) 33 | - [2.2.2. Clone](#222clone) 34 | - [2.2.3. Add, commit, push, pull ](#223) 35 | 36 | - [3. Thao tác với tổ chức trong Github](#3) 37 | - [4. Thao tác với nhánh (branch)](#4) 38 | - [5. Issues](#5) 39 | 40 | [Tổng kết](#Tongket) 41 | 42 | =========================== 43 | 44 | 45 | ## I. Mở đầu 46 | 47 | `Git` 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ư `SVN` nhưng có nhiều ưu điểm hơn, `Git` đang được sủ dụng rộng rãi hiện nay. 48 | 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. 49 | 50 | #### Một số khái niệm cần làm rõ 51 | 52 | **`Git` và `Github` khác nhau như thế nào?** 53 | 54 | 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 đó. 55 | 56 | 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 đó. 57 | 58 | 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,... 59 | 60 | 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í. 61 | 62 | Đố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. 63 | 64 | **Cần phải làm gì để có thể sử dụng `Github`?** 65 | 66 | - B1: Đăng ký một tài khoản tại [github](https://github.com) và đăng nhập 67 | 68 | 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 :) 69 | 70 | - B2: Học cách sử dụng ngôn ngữ `Markdown` 71 | 72 | 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. 73 | 74 | 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. 75 | 76 | Bạn chỉ cần bỏ ra khoảng 2h là đã có thể sử dụng ngôn ngữ này như ý muốn. 77 | 78 | - B3: Tạo một repo đầu tiên và gõ Hello world bằng Markdown 79 | 80 | Sau đó tạo các repo tùy mục đích, clone nó về client và code. 81 | 82 | Bước này tôi sẽ hướng dẫn chi tiết hơn ở phần sau. 83 | 84 | 85 | ## II. Ngôn ngữ Markdown 86 | 87 | Ngôn ngữ này khá đơn giản, bạn có thể đọc tại [đây](http://daringfireball.net/projects/markdown/syntax) để biết cách sử dụng. 88 | 89 | 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: 90 | 91 | Tạo một file có tên bất kỳ với đuôi .md. Có thể dùng `notepad`, `notepad++`, `vi`, `nano`,... hay bất cứ thứ gì mà bạn muốn. 92 | 93 | Một số phương pháp tôi hay sử dụng để viết: 94 | 95 | 96 | ### 1. Thẻ tiêu đề 97 | 98 | 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 99 | 100 | 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. 101 | 102 | Ví dụ: 103 | 104 | ``` 105 | # 1.Tiêu đề cấp 1 106 | ``` 107 | 108 | # 1.Tiêu đề cấp 1 109 | 110 | ``` 111 | ## 2.Tiêu đề cấp 2 112 | ``` 113 | 114 | ## 2.Tiêu đề cấp 2 115 | 116 | ``` 117 | ###### 6.Tiêu đề cấp 6 118 | ``` 119 | 120 | ###### 6.Tiêu đề cấp 6 121 | 122 | 123 | ### 2. Chèn link, chèn ảnh 124 | 125 | Để chèn hyperlink bạn chỉ cần paste luôn linh đó vào file .md 126 | 127 | ``` 128 | https://github.com 129 | ``` 130 | 131 | https://github.com 132 | 133 | Hoặc bạn cũng có thể sử dụng cú pháp sau để thu ngắn đường dẫn của link 134 | 135 | ``` 136 | [Github](https://github.com) 137 | ``` 138 | 139 | Kết quả là: 140 | 141 | [Github](https://github.com) 142 | 143 | Để chèn ảnh thì bạn hãy sử dụng cú pháp sau: 144 | 145 | ``` 146 | 147 | ``` 148 | 149 | Tôi thường sử dụng công cụ [Lightshot](https://app.prntscr.com/en/index.html) để 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 150 | 151 | 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/ 152 | 153 | 154 | ### 3. Ký tự in đậm, in nghiêng 155 | 156 | - Để in đậm một đoạn text bạn chỉ cần làm như sau: 157 | 158 | ``` 159 | **từ cần in đậm** 160 | ``` 161 | 162 | **từ cần in đậm** 163 | 164 | - Để in nghiên một đoạn text bạn chỉ cần làm như sau: 165 | 166 | ``` 167 | *từ cần in nghiêng* 168 | ``` 169 | 170 | *từ cần in nghiêng* 171 | 172 | 173 | ### 4. Trích dẫn, bo chữ 174 | 175 | Để bo một đoạn text thì bạn chỉ cần sử dụng cú pháp sau: 176 | 177 | ``` 178 | `đoạn cần bo` 179 | ``` 180 | 181 | Kết quả là: `đoạn cần bo` 182 | 183 | Để 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: 184 | 185 | ```sh 186 | auto eth0 187 | iface eth0 inet static 188 | ipaddress 10.10.10.10 189 | netmask 255.255.255.0 190 | gateway 10.10.10.1 191 | dns-nameservers 8.8.8.8 192 | ``` 193 | 194 | Kết quả như sau: 195 | 196 | ```sh 197 | auto eth0 198 | iface eth0 inet static 199 | ipaddress 10.10.10.10 200 | netmask 255.255.255.0 201 | gateway 10.10.10.1 202 | dns-nameservers 8.8.8.8 203 | ``` 204 | 205 | 206 | ### 5. Gạch đầu dòng 207 | 208 | Để sử dụng gạch đầu dòng bạn chỉ cần sử dụng cú pháp sau: 209 | 210 | ``` 211 | - Gạch đầu dòng thứ nhất 212 | 213 | - Thụt với đầu dòng 1 214 | 215 | - Thụt với đầu dòng 1 216 | 217 | - Gạch đầu dòng thứ hai 218 | 219 | - Thụt với đầu dòng 2 220 | 221 | - Thụt với đầu dòng 2 222 | 223 | ``` 224 | 225 | - Gạch đầu dòng thứ nhất 226 | 227 | - Thụt với đầu dòng 1 228 | 229 | - Thụt với đầu dòng 1 230 | 231 | - Gạch đầu dòng thứ hai 232 | 233 | - Thụt với đầu dòng 2 234 | 235 | - Thụt với đầu dòng 2 236 | 237 | 238 | 239 | ### 6. Tạo bảng 240 | 241 | Bạn có thể sử dụng cú pháp sau để tạo bảng: 242 | 243 | ``` 244 | | Cột 1 Hàng 1 | Cột 2 | Cột 3| Cột 4 | 245 | |--------------|-------|------|-------| 246 | | Hàng 2 | 2 x 1 | 2 x 2 | 2 x 3 | 2 x 4 | 247 | | Hàng 3 | 3 x 1 | 3 x 2 | 3 x 3 | 3 x 4 | 248 | | Hàng 4 | 4 x 1 | 4 x 2 | 4 x 3 | 4 x 4 | 249 | ``` 250 | 251 | Kết quả: 252 | 253 | | Cột 1 Hàng 1 | Cột 2 | Cột 3| Cột 4 | 254 | |--------------|-------|------|-------| 255 | | Hàng 2 | 2 x 1 | 2 x 2 | 2 x 3 | 2 x 4 | 256 | | Hàng 3 | 3 x 1 | 3 x 2 | 3 x 3 | 3 x 4 | 257 | | Hàng 4 | 4 x 1 | 4 x 2 | 4 x 3 | 4 x 4 | 258 | 259 | 260 | ###*Mẹo:* 261 | 262 | - Sử dụng trang http://markdownlivepreview.com/ paste vào đó đoạn markdown bạn viết và xem trước để chỉnh sửa cho phù hợp. 263 | 264 | - Bạn cũng có thể sử dụng những đoạn markdown của người khác đã viết trước để tham khảo. 265 | 266 | 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. 267 | 268 | 269 | ## III. Các thao tác với Git và Github 270 | 271 | 272 | ### 0. Repo 273 | 274 | Git 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. 275 | 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,... 276 | 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. 277 | Để 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à: 278 | 279 | **Ba trạng thái của một repo:** 280 | 281 | 282 | 283 | Như hình trên bạn có thể thấy có 3 điểm cần lưu ý: 284 | 285 | - Working dir: đây là nơi bạn thực hiện các thao tác chỉnh sửa với file mã nguồn của mình, nó có thể là eclipse, netbean, notepad++,... 286 | 287 | - Stagging area: những sự thay đổi của bạn với file mã nguồn được lưu lại, giống như bạn ấn Save trong một file notepad. 288 | 289 | - Git directory: nơi lưu trữ mã nguồn của bạn (ở đây là github) 290 | 291 | Tương ứng với 3 vị trí này ta có các hành động: 292 | 293 | - Add: lưu file thay đổi (mang tính cục bộ) - tương ứng với câu lệnh `git add` 294 | 295 | - Commit: Ghi lại trạng thái thay đổi tại máy local (ví dụ như bạn có thể ấn Save nhiều lần với file README.md nhưng chỉ khi commit thì trạng thái của lần ấn Save cuối cùng trước đó mới được lưu lại) - tương ứng với câu lệnh `git commit` 296 | 297 | - Push: Đẩy những thay đổi từ máy trạm lên server - tương đương lệnh `git push` 298 | 299 | - Pull: đồng bộ trạng thái từ server về máy trạm - tương đương lệnh `git pull` 300 | 301 | 302 | ### 1. Cài đặt 303 | 304 | 305 | #### 1.1. Linux 306 | 307 | Với OS là Ubuntu: 308 | 309 | > apt-get install git 310 | 311 | Với OS là Fedora, Centos 312 | 313 | > yum instal git 314 | 315 | Các thiết lập ban đầu: 316 | 317 | - Bạn cần thiết lập tên và email của mình để mỗi khi commit lên server sẽ nhận biết được ai commit lên vì một repo có thể có nhiều người tham gia. 318 | 319 | > git config --global user.name "Duc NC" 320 | 321 | > git config --global user.email nguyencongduc3112@gmail.com 322 | 323 | - Lựa chọn trình soạn thảo mặc định, có thể là vi, vim, nano,... 324 | 325 | > git config --global core.editor vi 326 | 327 | - Liệt kê các thiết lập: 328 | 329 | > git config --list 330 | 331 | **Liên kết với tài khoản github bằng SSH** 332 | 333 | > ssh-keygen -t rsa 334 | 335 | ```sh 336 | Enter file in which to save the key (/root/.ssh/id_rsa): [Press enter] 337 | Enter passphrase (empty for no passphrase): [Press enter] 338 | Enter same passphrase again: [Press enter] 339 | Your identification has been saved in /root/.ssh/id_rsa. 340 | Your public key has been saved in /root/.ssh/id_rsa.pub. 341 | ``` 342 | 343 | Nếu bạn nhập passphrase thì hãy nhớ pass này! 344 | 345 | Kết quả: 346 | > ls ~/.ssh/ 347 | 348 | ```sh 349 | id_rsa id_rsa.pub known_hosts 350 | ``` 351 | 352 | > ssh-agent -s 353 | 354 | > ssh-add ~/.ssh/id_rsa 355 | 356 | > cat ~/.ssh/id_rsa.pub 357 | 358 | copy đoạn mã này 359 | 360 | 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 `Title` và paste nội dung vừa copy vào ô `Key` 361 | 362 | 363 | 364 | 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. 365 | 366 | 367 | #### 1.2. Windows 368 | 369 | Download tại địa chỉ: https://windows.github.com/ 370 | 371 | Cài đặt bình thường, yêu cầu phải có .NET 4.5 372 | 373 | Giao diện của chương trình: 374 | 375 | 376 | 377 | Thêm tài khoản Github: 378 | 379 | - Click vào tool and options (hình bánh răng cạnh biểu tượng Sync) chọn options, Add account. Khai báo username và password trên github. 380 | 381 | - Tại mục Configure git thêm Tên và email của mình 382 | 383 | 384 | 385 | Click Update 386 | 387 | 388 | 389 | ### 2. Thao tác với Repo 390 | 391 | 392 | #### 2.1. Trên Linux 393 | 394 | 395 | ##### 2.1.1. Tạo mới 396 | 397 | Tạo một repo mới trên trang github.com 398 | 399 | 400 | 401 | 402 | 403 | 404 | ##### 2.1.2. Clone 405 | 406 | Clone repo đó về bằng một trong các cách sau: 407 | 408 | **Linux** 409 | 410 | ***SSH:*** 411 | `git clone git@github.com:ducnc92/demo1.git` 412 | 413 | hoặc: `git clone git@github.com:ducnc92/demo1.git /opt/demo` để clone vào thư mục /opt/demo 414 | 415 | đố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) 416 | 417 | ***HTTPS:*** 418 | `git clone https://github.com/ducnc92/demo1.git` 419 | 420 | hoặc: `git clone https://github.com/ducnc92/demo1.git /opt/demo` để clone vào thư mục /opt/demo 421 | 422 | Để 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. 423 | 424 | 425 | 426 | Ở đây tôi sử dụng lệnh `git clone git@github.com:ducnc92/demo1.git` 427 | 428 | 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. 429 | 430 | Chuyển vào thư mục này: 431 | 432 | > cd demo1/ 433 | 434 | > ls 435 | 436 | Lúc này sẽ thấy trong thư mục này có file `README.md`. Để 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,... 437 | 438 | > vi README.md 439 | 440 | Thêm vào nội dung như sau: 441 | 442 | ``` 443 | Xin chao! 444 | Toi la Ducnc. 445 | ``` 446 | 447 | 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. 448 | 449 | > mkdir script 450 | 451 | Tạo một script mới trong thư mục đó. 452 | 453 | > vi script/script1.sh 454 | 455 | ```sh 456 | #!/bin/sh 457 | echo "Hello Python Vietnam" 458 | sleep 10 459 | ``` 460 | 461 | 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 ý 462 | 463 | 464 | ##### 2.1.3. Add, commit, push 465 | 466 | Để thực hiện hành động `add` ta sử dụng lệnh sau 467 | 468 | > git add README.md 469 | để `add` file README.md 470 | 471 | hoặc `git add *` để add tất cả các file hiện có. 472 | 473 | Để thự hiện hành động commit file README.md ta thực hiện lệnh 474 | > git commit README.md 475 | 476 | hoặc `git commit *` để commit tất cả. 477 | 478 | ta nên thêm tham số -m để ghi lại một comment cho hành động đó 479 | 480 | > git commit README.md -m "ducnc sua doi" 481 | 482 | 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: 483 | 484 | > git push origin master 485 | 486 | => 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 487 | 488 | 489 | 490 | Lúc này trở lại trang github.com và xem `repo script` lúc đầu sẽ thấy các commit của ta đã được đẩy lên. 491 | 492 | 493 | 494 | 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: 495 | 496 | - Tạo một repo mới trên github.com mà không tạo file README.md (giả sử ở đây là repo demo2) 497 | 498 | - Tại máy local tạo một thư mục để chứa repo mới này. Ví dụ: 499 | 500 | > mkdir /opt/demo2 501 | 502 | > cd /opt/demo2 503 | 504 | - Thực hiện tạo các file, thư mục như ý muốn. Sau đó thực hiện add, commit, push tương tự như trên 505 | Nhưng ở đây cần thêm lệnh `git remote add origin $git-url` trước khi push. Tham khảo ví dụ sau: 506 | 507 | > vi README.md 508 | 509 | > git add README.md 510 | 511 | > git commit README.md 512 | 513 | hoặc `git commit README.md -m noi dung` 514 | 515 | > git remote add origin git@github.com:ducnc92/demo2.git 516 | 517 | > git push origin master 518 | 519 | Sau đó nhập passphrase(nếu cần) hoặc username + password (nếu sử dụng SSH) 520 | 521 | 522 | ##### 2.1.4. Pull 523 | 524 | Giả 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: 525 | 526 | > cd cd /opt/demo1/ 527 | 528 | > git pull 529 | 530 | 531 | #### 2.2. Trên Windows 532 | 533 | 534 | ##### 2.2.1. Tạo một repo mới 535 | 536 | Tạo repo trên github.com tự như mục 2.1.1. 537 | 538 | Tạo repo bằng phần mềm Github 539 | 540 | - Click vào dấu cộng, chọn tab Create, đặt tên và chọn đường dẫn cho repo mới 541 | 542 | 543 | 544 | - Tuy nhiên repo mới sinh ra mới chỉ có ở máy trạm, tại mục `Other`. Chọn chuột phải vào repo đó và chọn `Open in Explorer` để sửa nội dung của repo này. 545 | 546 | 547 | 548 | - Sau khi chỉnh sửa xong, để đẩy repo đó lên github.com ta click vào `Publish this repository` và thực hiện như hình sau. Chú ý cần chọn Organization đặt repo này. 549 | 550 | 551 | 552 | 553 | ##### 2.2.2. Clone 554 | 555 | Click 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 556 | 557 | 558 | 559 | Để 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 `Open in Explorer` 560 | 561 | 562 | 563 | 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. 564 | 565 | 566 | ##### 2.2.3. Add, commit, push, pull 567 | 568 | Trở lại với chương trình Github ta sẽ thấy dòng `uncommited changes` tại repo ta vừa sửa. Bạn hãy điền vào đó comment và ấn `commit to master` 569 | 570 | 571 | 572 | 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 `Sync` ở góc trên cùng bên phải. 573 | 574 | Sau khi đồng bộ xong, quay trở lại repo trên trang github.com. 575 | 576 | 577 | 578 | Để đồ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 `Sync` như bên trên. 579 | 580 | 581 | 582 | ### 3. Thao tác với tổ chức trong Github 583 | 584 | Để tạo một nhóm cho nhiều người cùng làm việc ta làm như sau: 585 | 586 | - Truy cập URL: https://github.com/settings/organizations, chọn New Organizations 587 | 588 | - Đặt tên và email cho tổ chức 589 | 590 | 591 | 592 | Tại mục `Choose the organization’s plan` chọn Open Source để miễn phí, nhưng lúc này các Repo trong tổ chức sẽ là public. 593 | 594 | - Mời các thành viên cho tổ chức 595 | 596 | 597 | 598 | 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ó. 599 | 600 | 601 | 602 | Ở đây tôi sẽ tạo một team mới như hình sau: 603 | 604 | 605 | 606 | 607 | 608 | Các member của team này có quyền write với các repo của team. 609 | 610 | 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. 611 | 612 | Để 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 613 | 614 | 615 | 616 | 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. 617 | 618 | Để tạo một repo cho tổ chức, ta chỉ cần click vào tổ chức đó, sau đó chọn `Create new Repostory`. Các hành động clone, add, commit,... làm như bình thường. 619 | 620 | 621 | ### 4. Thao tác với nhánh (branch) 622 | 623 | ``` 624 | Sẽ cập nhật và bổ sung sau 625 | ``` 626 | 627 | 628 | ### 5. Issues 629 | 630 | 631 | Giả 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. 632 | 633 | Để làm việc này bạn cần vào repo đó, click vào `Issue`. Ví dụ như hình sau: 634 | 635 | 636 | 637 | Sau đó chọn `New issue` (màu xanh) để tạo một issue mới. 638 | 639 | 640 | 641 | 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. 642 | 643 | 644 | 645 | 646 | 647 | 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 đó. 648 | 649 | 650 | ## Tổng kết 651 | 652 | Bà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 đó. 653 | 654 | 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. 655 | 656 | Liên lạc của tôi: 657 | 658 | - Email: nguyencongduc3112@gmail.com 659 | 660 | - Skype: khong_giong_ai 661 | 662 | Xin chân thành cảm ơn! 663 | --------------------------------------------------------------------------------