+1

Thành thạo git và 1 số command line

What is Git?
Git is the world’s most popular version control system (VCS) - tracks and manages changes (theo dõi và quản lý các thay đổi)
GIT - Global Information Tracker
GIT # Github
GIT is the version control software that runs locally on your machine.
Github is a service that hosts Git repositories in the cloud and makes it easier to collaborate with other people.
How to install?
Install through Homebrew: brew install git
Check after installing: git --version
Configure the name and password global
Config username: git config --global user.name “yourName”
Check username: git config user.name
Config email: git config --global user.email yourEmail
Check email: git config user.email
Some useful command line
ls: Hiện list các thư mục (current) / nếu muốn hiện list 1 thư mục bất kỳ thì thêm thư mục vào sau câu lệnh vd ls Documents
ls -a : list các file bao gồm cả thư mục hoặc file ẩn
cd ‘location’: di chuyển giữa các ổ, thư mục
touch ‘fileName’: tạo file mới
cd .. : trở lại thư mục trước đấy
pwd: In ra path của thư mục đang làm việc
mkdir (make directory): tạo 1 folder
rm (remove): xoá 1 hoặc nhiều file
rm -rf folderName: xoá 1 hoặc nhiều folder
open . : Mở ra Finder (Windows sẽ là start . ) trong trường hợp muốn mở 1 folder bất kỳ thì thay chấm thành folder vd open Documents
clear: clear lịch sử trước đấy
git status: hiện các thay đổi
git add . : thêm tất cả các thay đổi
git commit -m ‘the summary of changes’ : commit changes
git log: show log (các commit trước đấy)
git init: tạo mới 1 git repository
What is a Git Repo?
A Git repo is a workspace which tracks and manages files within a folder
<Anytime we want to use Git with a project, app, etc we need to create a new git repository>

Edit with vim
For example with you commit code with git commit
Khi vào màn hình VIM

  1. nhấn I (Insert) để tạo commit
  2. Thêm comment
  3. Nhấn esc để thoát mode insert
  4. Nhập :wq để thoát (write quit)

Git Log
git log --abbrev-commit: dùng để rút ngắn gọn commit id
git log --oneline: dùng để show log 1 dòng (id + comment)

Config code.editor trên terminal
Vào trang https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config để chọn câu lệnh tương ứng với IDE mà cần dùng
Đối với VS code tham khảo thao tác setting dưới:
To open a file or directory use the command:
code /path/to/file/or/directory/you/want/to/open
For macOS users, it needs to be installed manually:

  1. Launch VS Code.
  2. Command + Shift + P to open the Command Palette.
  3. Type shell command, to find the Shell Command: Install 'code' command in PATH and select to install it.
  4. Restart your terminal.

Thao tác khi commit thiếu file
Giả sử khi đã commit 1 lần nhưng có chỉnh sửa lại mà ko muốn thêm 1 commit nữa bị đánh dấu (vd đã dùng git add file1.txt/ git commit -m ‘fix comment’ sau đấy lại chỉnh sửa thêm 1 file) thì vẫn git add như bình thường nhưng phải dùng git commit --amend để có thể gộp 2 lần commit lại (chỉ gộp đc lần gần nhất)

.gitignore
https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files

  1. .DS_Store will ignore files named .DS_Store
  2. folderName/ will ignore an entire directory
  3. *.log will ignore any files with the .log extension

Tạo file gitignore => touch .gitignore
git add ., git commit -m ….

HEAD đơn giản là 1 con trỏ refer đến location hiện tại trên repository(nơi bạn view hoặc check). Nó trỏ đến 1 brach cụ thể, thông thường HEAD luôn trỏ đến commit gần nhất bạn tạo trên nhánh master tuy nhiên chúng ta có thể di chuyển xung quang và lúc đố HEAD sẽ thay đổi. (Giống như 1 bookmark tuy nhiên HEAD giống như phần mở ra của quyến sách)

Work with branch

git branch: show list branch + current branch (đánh dấu bằng * )
git branch <branch-name> : tạo mới 1 branch
git switch <branch-name> : Chuyển nhánh
git commit -a -m “comment”: gồm 2 lệnh git add và git commit gộp vào
git switch -c <branch-name> : Create nhánh mới và chuyển nhánh
git checkout -b <branch-name>: Giống trên nhưg hay đc sử dụng hơn
git checkout - : switch tới nhánh làm việc gần nhất
git branch -d <branch-name> : Xoá 1 branch (có thể dùng --delete)
git branch -D <branch-name> : Xoá trong 1 branch ko clean (có thể dùng --delete --force)
git branch -m <new-branch-name> : thay đổi tên của branch hiện tại
cat <fileName> : đọc file tại cmd
code . : mở file bằng IDE
open . : để mở file trên Finder
git merge <branch-name>: sử dụng để merge branch-name vào branch đích
git diff: xem các thay đổi trên các file
git diff --staged or --cached: hiện list các thay đổi giữa mt làm việc và commit cuối
git diff branchName..branchName: hiện list thay đổi giữa 2 branch
git diff commit1..commit2: hiện list thay đổi giữa 2 commit

How to fix conflict
Trường hợp conflict khi có sự ko thống nhất giữa các file ở local và trên remote lúc merge, khi đó cần vào xem file conflict để xem hướng resolve có nhiều cách resolve như (chọn thay đổi trước, thay đổi hiện tại hoặc giữ cả 2 hoặc một phần) tuy nhiên khi fix conflict xong thì sẽ add và commit như bình thường (note commit là resolve conflict rõ ràng)

Stash
git stash/git stash save: dùng để lưu các tiến trình đang làm việc đồng thời clear nhánh đang làm
git stash pop: đẩy các tiến trình đã lưu vào nhánh đang làm việc (Clear các bản stash trước)
git stash apply: đẩy các tiến trình đã lưu vào nhánh đang làm việc (ko clear các bản stash trước)
git stash list: show list stash đã lưu theo dạng stash@{1}
git stash apply stash@{1}: để đẩy các tiến trình đã lưu của stash 1 về nhánh đang làm việc
git stash drop stash@{1}: để xoá stash cụ thế ko cần dùng nữa
git stash clear: để xoá tất cả các stash
git stash list -p: xem nội dung từng thay đổi
git stash show stash@{1}: nội dung cụ thể hơn nữa của lần thay đổi thứ 1
git stash branch <name> stash@{1}: Nếu bạn cần một stash cụ thể bạn có thể chỉ định stash id.Điều này thật sự hữu ích khi bạn gặp rắc rối sau khi đã áp dụng stash vào phiên bản mới nhất của chi nhánh

Detached HEAD
git checkout <commit-hash>
khi gặp trường hợp này HEAD ko trỏ tới branch nữa mà trỏ tới commit, để giải quyết trường hợp này có 2 cách : 1. Switch back về master hoặc bất kỳ branch nào muốn/ 2. tạo 1 branch mới và add commit sau đấy switch về master
git checkout HEAD~1 refer tới commit trước HEAD (parent)
git checkout HEAD~2 refer tới commits trước HEAD (grantparent)
git checkout HEAD <file> : revert lại file về commit gần nhất khi viết sai
git checkout – <file>: cách viết ngắn gọn của git checkout HEAD <file>
git restore --source HEAD~2 dog.txt: restore file dog.txt về lần trạng thái của 2 lần trước đó
git restore : restore file về trạng thái commit lần gần nhất
git restore --staged <file-name>: nếu bạn lỡ thêm 1 file vào staging area vs git add và bạn ko muốn nó bao gồm trong commit tiếp theo, sử dụng câu này để remove nó ra khỏi staging
git reset <commit>: xoá commit bị commit nhầm (chỉ xoá commit trên tree ko xoá đi các thay đổi trên file)
git reset --hard <commit> : xoá commit và cả những thay đổi theo commit đấy
get revert <commit-hash>: thay vì xoá commit thì revert tạo 1 branch mới


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí