Header Ads Widget

Thao tác cơ bản khi làm việc với Git

GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web cho các dự án phát triển phần mềm. GitHub cung cấp cả phiên bản trả tiền lẫn miễn phí cho các tài khoản

Tạo mới folder và Push lên Repository


Config

Để kiểm tra tên và kiểu email trong cấu hình dùng 
Để set email hoặc tên mới 
git config --global user.name "Vu Lien"
và 
git config --global user.email "vanlien129@gmail.com"

Init

Khởi tạo Git Repo mới
git init

Clone

Copy 1 git repository từ remote source.

git clone <:clone git url:> 

Add

Để đưa một tập tin vào Staging Area
git add tên_file 
hoặc muốn thêm hết file của thư mục thì 
git add all

Reset

Bạn đã đưa một tập tin nào đó vào Staging Area nhưng bây giờ bạn muốn loại bỏ nó ra khỏi đây để không phải bị commit theo.
git reset tên_file

hoặc lệnh

git reset
git rm --cached


Commit

Lưu lại một snapshot của các sự thay đổi trong thư mục làm việc được thay đổi đã phải nằm trong Staging Area.
Mỗi lần commit nó sẽ được lưu lại lịch sử chỉnh sửa của code kèm theo tên và địa chỉ email của người commit. Ngoài ra trong Git bạn cũng có thể khôi phục lại tập tin trong lịch sử commit của nó để chia cho một branch khác, vì vậy bạn sẽ dễ dàng khôi phục lại các thay đổi trước đó.
git commit -m "first commit"

Branch

Liệt kê tất cả các branch (nhánh)
git branch a

Checkout

Chuyển sang branch khác

git checkout <: branch:>

Fetch

Nếu bạn muốn lấy dữ liệu từ origin về sử dụng lệnh
git fetch origin

Merge

Merge 2 branch lại

Chuyển tới branch bạn muốn merge

git merge <:branch_merge:>

Remote

Để hiển thị danh sách remote remote
git remote
Thêm một Remote
git remote add TEN_GIT <: remote_url:>

Đổi tên Remote 

Nếu bạn không thích tên origin thì có thể đổi tên nó lại nó bằng tên khác cho dễ quản lý nếu như bạn có nhiều remote trong một dự án với lệnh 
git remote rename origin lienvu

Hoặc lệnh sau khi đổi từ local đã SW sang branch

git branch -m <oldname> <newname>

Sau đó push nhánh mới lên

git push origin -u <newname> 

Xóa nhánh local & push lên Git

git branch -D <branchname>

git push origin --delete <branchname>

Push

Cập nhật dữ liệu lên nhánh, VD: nhánh master
git push -u origin master

Pull 

Requests thể hiện các đề xuất thay đổi cho nhánh chính. Nếu bạn làm việc với một nhóm, bạn có thể tạo các pull request để yêu cầu người bảo trì kho lưu trữ xem xét các thay đổi và hợp nhất chúng.
git pull <:remote:> <:branch:>

Ví dụ: pull code từ nhánh main

git pull origin main 

Hệ thống sẽ yêu cầu nhập Username và password (sử dụng token git của tài khoản) 

Để lần sau không cần nhập lại username và password nữa thì ta chạy lệnh sau để lưu thông tin

git config --global credential.helper store

Rebase

Lệnh cho phép bạn phân tách, di chuyển hoặc thoát khỏi các commit. Nó cũng có thể được sử dụng để kết hợp hai nhánh khác nhau. 

git rebase

Merge

Lệnh kết hợp với các yêu cầu kéo (pull requests) để thêm các thay đổi từ nhánh này sang nhánh khác.

git merge

Status

Để check trạng thái của những file bạn đã thay đổi từ lần commit cuối

git status

Restore

Khôi phục nội dung đã thay đổi trong file đã chỉnh sửa trước đó
git restore abc.txt

Stash

Được sử dụng khi muốn lưu lại các thay đổi chưa commit, thường rất hữu dụng khi bạn muốn đổi sang 1 branch khác mà lại đang làm dở ở branch hiện tại.

git stash save

Xem lại danh sách các lần lưu thay đổi

git stash list

Nếu muốn xem cả nội dung của từng thay đổi thì thêm option -p

git stash list -p

hoặc xem nội dung cụ thể hơn nữa của lần thay đổi thứ 1:

git stash show stash@{1}

Khi muốn apply lại thay đổi từ stash lần 1 bạn có thể

git stash apply stash@{1} 

Xóa 1 Stash

git stash pop stash@{1}

Xoá toàn bộ stack

git stash clear

Gitignore 

Gitignore là file có tên là .gitignore do Git quy định. Nhiệm vụ của nó là sẽ bỏ qua những file đó đi. 
Git quản lý các file mà chúng ta muốn “ignore” bằng file .gitignore được đặt ở trong thư mục root project.
  • Sử dụng # để comment và có thể để cách dòng cho dễ đọc.
  • Đơn giản nhất là tên file cần ignore: example.exe
  • Hay cả thư mục: example_folder/
  • Khi ignore thư mục nên có dấu / ở sau tên thư mục để nhận biết đó là thư mục, nếu không nó có thể là coi là thư mục hoặc file hay symbolic link.
  • Dấu ! phía trước có ý nghĩa phủ định: !abc/example.exe
  • Sử dụng 1 * để tìm các file có cùng định dạng. Ví dụ như bạn muốn ignore tất cả các file .xml trong project: *.xml
  • Trường hợp khác của 1 * nếu bạn chỉ rõ đường dẫn ví dụ: config/*.xml thì nó chỉ có hiệu lực cho các file config/abc.xml mà không có hiệu lực cho các file config/sub/abc.xml.
  • Sử dụng ** để có hiệu lực cho các thư mục không cần định rõ tên. Ví dụ: **/foo nó sẽ có hiệu lực cho tất cả file hoặc thư mục có tên là foo ở mọi nơi trong project.
  • Hay sử dụng kiểu folder/** để có hiệu lực cho tất cả các file bên trong thư mục.

Untrack

Untrack tất cả các file để add lại từ đầu giống như lần commit đầu tiên, ta có thể làm như sau:
git rm -r --cached .

hoặc chỉ Untrack 1 file

git rm --cached /path/to/file_or_folder

  • -r là viết tắt của recursive, nếu muốn xóa toàn bộ index thì cần có lần có lệnh đệ quy này
  • . nghĩa là tất cả các file đều bị untrack
Lệnh test trước khi Untrack để hiển thị các file bị ảnh hưởng
git rm -r -n --cached .


 Gitlab

Khởi tạo:
git init

Remote vào git 

git remote add origin https://gitlab.com/vanlien129/php.git
Chuyển sang nhánh main
git branch -M main
Add code và staging
git add file_name

 Commit

git commit -m "Update"

Đưa code lên nhánh main
git push -uf origin main

Bỏ theo dõi file khi commit

Bạn có thể sử dụng tệp .gitignore để loại trừ tệp cấu hình của mình khỏi việc bị theo dõi bởi git. Cách thực hiện như sau:

Mở tệp .gitignore trong thư mục gốc của dự án của bạn. Nếu tệp này chưa tồn tại, bạn có thể tạo mới một tệp với tên .gitignore.

Thêm tên hoặc đường dẫn tương ứng với tệp cấu hình mà bạn muốn loại trừ khỏi git. Ví dụ, nếu tệp cấu hình của bạn tên là config.json, bạn chỉ cần thêm dòng sau vào tệp .gitignore:

Lưu lại tệp .gitignore. Sau đó, git sẽ không theo dõi tệp cấu hình đó nữa mỗi khi bạn thực hiện commit. 

Lưu ý rằng nếu tệp đã được git theo dõi trước đó, bạn sẽ cần phải xóa nó khỏi bộ theo dõi của git bằng lệnh sau:

git rm --cached config.json

Reset Commit 

Xóa các commit mới nhất mà chưa được đẩy lên remote repository có thể sử dụng git reset.
Xóa commit cuối cùng:
git reset --hard HEAD~1
Xóa nhiều commit cuối cùng (ví dụ: 3 commit):
git reset --hard HEAD~3
Xóa commit và giữ lại các thay đổi trong working directory (không xóa các thay đổi):
git reset --soft HEAD~1

 

Nhận xét