Download Git phù hợp với OS tại: https://git-scm.com/downloads
Cài đặt bình thường.
...
1. Cấu hình tài khoản, email
git config --global user.name "username"
git config --global user.email "email"
git config --global user.email "email"
git config --global user.email "email"
2. Tạo SSH key, khi được yêu cầu nhập pass SSH thì nhập 2 lần pass (pass sau này lấy code về hay đẩy code lên server sẽ dùng đến)
ssh-keygen -t rsa
3. Add SSH key
Đăng nhập Github.com -> Setting -> SSH and GPG keys -> New SSH key.
Nhập tiêu đề để nhận biết ở ô phía trên, ô key phía dưới paste SSH key copy được từ đường dẫn khi tạo key :
Đối với Windows c:/users/<computer_name>/.ssh/id_rsa.pub
Đối với Ubuntu /home/<user_name>/.ssh/id_rsa.pub
Sau đó nhấn vào Add SSH key.
4. Kết nối server và máy tính
Trên Terminal hoặc Git Bash nhập:
ssh -T git@github.com (hoặc không được thì bỏ -T) hoặc ssh -vT git@github.com
Thành công sẽ yêu cầu nhập pass SSH lúc trước đã tạo.
Nếu vẫn lỗi thì copy đoạn RSA key fingerprint bắt đầu từ "SHA256:..." paste xuống chỗ Are you sure you want to continue connecting (yes/no/[fingerprint])? và Enter. Lúc này hiện lên một của sổ nhập pass SSH, có thể tích vào ô phía dưới để lần sau không phải nhập lại pass.
Nó xuất hiện dòng chữ: Hi <user.name>! You've successfully authenticated, but GitHub does not provide shell access. là đã kết nối được server với máy tính.
5. Tạo repo trên local
Đến một thư mục rỗng, khởi tạo folder ẩn (.git) là những repo cần thiết giúp upload file lên server
git init
Kiểm tra trạng thái, file mới chưa thêm vào stage có màu đỏ :
git status
Đưa tất cả các files mới thay đổi vào stage
git add . (hoặc thêm từng file vào bằng git add <filename>)
Commit các file trong stage
git commit -m "Mô tả/chú giải"
Có thể gộp việc add file vào stage và comit luôn: git commit -am "Chú thích"
Đẩy lên server (mặc định nhánh chính master, nhánh khác thì ghi tên nhánh vào)
git push origin master
hoặc git push -u origin main
... or Create a new repository on the command line:
echo "# dir_name" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:username/dir_name.git
git push -u origin main
...Or push an existing repository from the command line:
git remote add origin git@github.com:username/dir_name.git
git branch -M main
git push -u origin main
6. Clone repo về máy local
git clone https://github.com/<username>/<repo_name>.git
git clone git@github.com:<username>/<repo_name>
7. Revert (khôi phục) về lần commit nào trước đó. Dùng "git log" để xem history và id commnit
git revert idCommit (Ctr+C Shift : Q)
8. Lấy code mới từ server về máy (nhánh chính master, nếu cần lấy từ nhánh khác thì ghi nhánh đó vào)
git pull origin master
9. Xem lại thông tin lịch sử commit
git log
10. Xem thông tin cụ thể của 1 commit
git show COMMIT_ID (COMMIT_ID lấy từ git log)
11. Xem thay đổi (chưa đc add) của những file hiện tại
git diff
12. Xóa sự thay đổi của file chưa lên staging (tựa undo)
git checkout -- <file>
13. Unstage các files (bỏ file ra khỏi staging chuyển xuống working dir)
git reset HEAD <file>
14. Xem các nhánh
git branch
15. Tạo nhánh (branch) và chuyển sang nhánh đó luôn
git checkout -b <tên nhánh mới>
16. Chuyển nhánh
git checkout <tên nhánh>
17. Merge branch B vào branch A
git checkout A
git merge B
18. Xóa branch
git branch -D <tên nhánh>
19. Revert đến thời điểm commit, các file sau commit này sẽ ở staging (đã add)
git reset --soft COMMIT_ID
20. Revert đến thời điểm commit, các file sau commit này sẽ ở working directory (chưa add)
git reset --soft COMMIT_ID
21. Revert đến thời điểm commit, các file sau commit này sẽ bị mất các thay đổi và trở về nguyên như lúc push của commit này
git reset --hard COMMIT_ID
22. Kiểm tra sự khác nhau:
git diff
để show toàn bộ những thảy đổi trong dự án.
Màu đỏ là dòng bị mất đi, và màu xanh là những dòng được thêm mới.
23. Tạo file diff để xem bên ngoài:
git diff >> tên file
Tên file đặt tùy ý. Sau khi tạo xong thì một file diff được tạo ra trong repo.
24. Kiểm tra lịch sử: git log
25. Undo việc sửa một file: git checkout [tên file] (có thể là đường dẫn đến file)
26. Undo toàn bộ project trong git: git checkout – – .
27. Tạo Nhánh trong git:
git branch [tên nhánh]
28. Chuyển sang nhánh đó:
git checkout [tên nhánh]
Nhưng nếu đang từ nhánh a chuyển sang nhánh b thì git yêu cầu bạn phải commit tất cả thay đổi đang có ở nhánh a.
Giải thích qua về nhánh:
Nhánh bạn hiểu là những căn phòng riêng lẻ trong một tòa nhà. Nhánh chủ là phòng khách.
Thường người ta sử dụng nhánh cho các version của sản phẩm (
version 1.0, version 2.0).
Hoặc sử dụng nhánh cho các loại hình project.
29. Đổi tên nhánh master thành main
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
...
Chú ý – Git cache (nguồn: topdev)
Giả dụ thế này! Bạn vừa join vào project và thấy project liên tục bị conflict vì mấy file rác. Nhưng may quá bạn đọc được bài viết này và bạn rất thông minh nên đã tạo luôn file .gitignore cho project và thêm luôn file rác đó vào .gitignore rồi bạn xóa file rác đi và commit lên.
Rồi sao! 1 ông khác lại pull code mới về lại tạo ra file rác đó và nó vẫn dính vào git bình thường. Đờ heo? “Em cho nó vào .gitignore rồi cơ mà?.
Vì sao à? Vì file đó đã được thằng git cache thu nạp thành của nó rồi nên thằng git nó vẫn có quyền quản lý file đó. Vậy cách giải quyết đơn giản nó phải giải thoát file đó ra khỏi git cache là xong, bằng 1 dòng lệnh:
git rm -r --cached /path/to/file_or_folder
Từ bây giờ file đó không còn là của git cache nữa nên nó không thuộc quyền quản lý của git nữa và bây giờ .gitignore mới có tác dụng. Theo lý thyết là vậy nhưng nếu bạn cần reset lại hết project để .gitignore hoạt động đúng thì mình thường xóa bỏ hết file của git cache luôn ?
git rm -r --cached .
Sau đó mình sẽ add tất cả các file lại vào project như lúc mới tạo project.
git add
Và bây giờ bạn lại commit và push như bình thường.
...
Một số lỗi:
1. Lỗi ! [rejected] master -> master (fetch first)
error: failed to push some refs to 'github.com:<username>/<repo_name>'
Khắc phục bằng cách sử dụng "git pull", sau đó "git fetch" và cuối cùng là "git merge" để hợp nhất.
2. Lỗi Permission denied (publickey)
Note: Sau khi cấu hình xong, clone báo permission denied như này:
\302\226\302\226git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Thì sửa như sau (Windows):
- Mở Windows Powershell với quyền Admin
- Xem trạng thái của ssh-agent: Get-Service ssh-agent
- Xem kiểu start của ssh-agent: Get-Service ssh-agent | Select StartType
- Đặt kiểu start thành Manual: Get-Service -Name ssh-agent | Set-Service -StartupType Manual
- Bật ssh: eval "$(ssh-agent -s)" hoặc eval $(ssh-agent -s)
- Xác minh đã tạo private key vào ssh: ssh-add -l -E sha256
nó hiện ra dòng có SHA là thành công:
> 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
- Bật ssh trong nền: ssh-agent -s
...

Không có nhận xét nào:
Đăng nhận xét