Các câu lệnh git cực cần thiết cho developer

Các câu lệnh git cực cần thiết cho developer
5 (100%) 1 Hài lòng

Bạn có thể dùng nhiều tool để thao tác với git nhưng theo thói quen thì mình đang dùng command line là chủ yếu, mấy tool như git UI, TortoiseGit mình chỉ dùng để compare code khi conflict hay review code thôi. Bạn có thể dùng bất cứ cái nào mà thấy quen thuộc, và tuyệt vời nhất là biết kết hợp cả hai để mang lai hiệu quả cao nhất cho công việc của bạn.

Thay đổi chủ sở hữu 1 repo

Một url trong ssh nó có dạng [email protected]:username/tenduan.git vậy khi thay đổi chủ sở hữu cái url này cũng thay đổi vậy nên ta cần làm 2 việc:

1. Thay đổi owner trên giao diện web
Setting của repo > chọn Transfer repository > Nhập tên người dùng mới sẽ sở hữu repo, ở bước này họ cũng cảnh báo mình luôn.

2. Cập nhật lại url cho dự án
Bạn cập nhật lại url cho dự án như thế này:
git remote set-url origin [email protected]:username/tenduan.git
Nếu ngại như tên mập thì bạn có thể clone mới cũng được, nhưng mà các nhánh đang tạo ở local sẽ mất.
Tham khảo thêm https://confluence.atlassian.com/bitbucket/change-the-remote-url-to-your-repository-794212774.html

Kết nối tới bitbucket hoặc github

Tạo ssh key với mail của bạn:

ssh-keygen -t rsa -C “[email protected]

Thêm ssh key bằng agent

ssh-agent

ssh-add ~/.ssh/id_rsa

Thêm ssh key vào tài khoản bitbucket hoặc github thông qua Web UI

Các câu lệnh git cơ bản và hay dùng

1. Thêm một file vào để chuẩn bị commit: git add đường_dẫn_đến_file
2. Hoặc thêm tất cả file vào để commit: git add .
3. Commit lên: git commit -m “comment”
4. Đẩy tất cả thay đổi lên repo: git push

Các bước đẩy source có sẵn lên repo

1. Vào thư mục source: cd /path/to/your/repo
2. Tạo thư mục .git: git init
3. Xác định đích cho thư mục hiện tại: git remote add origin [email protected]:dotrinh_use/tenrepo.git
4. Đẩy file này lên trước đã git add .gitignore
5. Commit lên: git commit -m “them .gitignore”
6. Đẩy .gitignore lên repo: git push –set-upstream origin master
7. Thêm toàn bộ source git add .
8. Commit lên: git commit -m “comment”
9. Đẩy tất cả thay đổi lên repo: git push

Các câu lệnh git thao tác với nhánh

0. Lấy toàn bộ các nhánh trên repo về local:
git fetch –all
1. Xem tất cả branch đang có cả ở local và remote
Lệnh này không chỉ rõ nhánh nào ở local và nhánh nào ở remote: git branch

2. Xem tất cả branch đang có cả ở local và remote

Lệnh này chỉ rõ nhánh nào ở local và nhánh nào ở remote: git branch -a

3. Xem tất cả branch đang có cả ở remote: 
git branch -r
4. Tạo nhánh mới và checkout luôn sang nhánh mới đó: 
git checkout -b temp_improvement
5. Tạo nhánh mới và đứng im ở nhánh hiện tại:
git branch tên_nhánh
6. Đẩy nhánh mới lên repo:
git push origin tên_nhánh
7. Xoá nhánh ở local: 
git branch -d tên_nhánh
8. Xoá nhánh trên repo:
git push origin :<branch_name>

9. Reset nhánh 

Khi muốn reset toàn bộ source của nhánh về trạng thái lúc tạo nhánh (lúc copy source từ master hay nhánh bất kỳ, trường hợp này mình copy từ master)

10. thay đổi tên nhánh

Thay đổi tên nhánh từ feature-2 thành feature/feature-2 (mục đích việc thêm cái feature vào đằng trước nhằm gom các chức năng nhỏ thành 1 thư mục)

11. Khôi phục nhánh đã xoá

Thôi lỡ tay xoá mất nhánh trên remote thì làm thế nào? Yên tâm chưa mất hẳn đâu, có thể lấy lại được bằng cách tìm mã sha của thao tác xoá đó và tạo ra nhánh mới từ cái thao tác ấy.

git reflog chạy câu lệnh này để lấy mã sha cần khôi phục về

git checkout -b <tên_nhánh_sẽđược_tạo_mới_từ_nhánhđã_xoá> <mã_sha>

đây rồi từ đây cuộc đời sẽ nở hoa

Xem danh sách nhánh xem đã có nhánh mới vừa tạo chưa:

git branch a

Sau khi tạo ra nhánh mới nếu cần phải đẩy lên remote thì chạy câu lệnh:

git push -u origin <tên_nhánh>

12. Luôn luôn nghe ngóng và cập nhật source từ nhánh mẹ

Hãy dùng git rebase khi muốn lấy source mới nhất từ nhánh mà mình đã tách ra.

Cái này thì cực kỳ hữu ích rồi. Chú ý xem trên repo nó sửa những file nào rồi backup file của mình lại sau đó mới rebase không thì conflict vỡ mặt (thời gian backup mình cho là nhanh hơn ngồi resolve conflict). Khi rebase thành công xong thì copy ngược lại cái mà mình đã backup nếu cần thiết.

Cú pháp:

git rebase <nhánh_hiện_tại> <nhánh_mẹ>

HOẶC

git rebase <nhánh_mẹ>

Sau khi chạy câu lệnh trên thì cần phải đẩy những cái thay đổi lên trên kho hay gọi là remote với lệnh git push (Không cần add/commit vì mình đã thay đổi nội dung của nhánh mà)

Đây là ví dụ:

Nhìn thấy những msg này là thấy hạnh phúc rồi.

13. Giải quyết khi bị conflict

Khi làm việc nhóm chúng ta hay tạo nhiều nhành để phát triển các chức năng khác nhau và khi merge hay rebase lại với nhau thì thuường xuyên xảy ra conflict. Vậy để giải quyết thì chúng ta cần phải mở cái file mà nó báo là conflict ra và chọn đoạn code mà bạn muốn giữ, sau đó lại đẩy lên repo. Như vậy là xong.

Ví dụ cụ thể:

Ở đây ta pull source về thì xảy ra lỗi conflict như thế này:

file thứ nhất bị conflict:
Auto-merging /Controllers/NavigationController.m
CONFLICT (content): Merge conflict in /Controllers/NavigationController.m

file thứ hai bị conflict:
Auto-merging Controllers/Menu/Version/NewUpdate/NewVersionViewController.h
CONFLICT (add/add): Merge conflict in /Controllers/Menu/Version/NewUpdate/ZRNewVersionViewController.h

Giải quyết xong thì commit lên.
Automatic merge failed; fix conflicts and then commit the result.

B1: Mở 2 files trên ra và tìm đoạn có conflict, thường thì bắt đầu bằng >>>>>

B2: Xoá code hoặc giữ lại cả 2 đoạn code. Xong thì commit lên như bc 3.

B3: git add -> git commit như bình thường.

B4: Done

Cách sử dụng stash – khi lỗi chuyển nhánh

Mình gặp vấn đề khi chuyển qua lại giữa cách nhánh. Vấn đề đó là khi nhánh hiện tại có thay đổi thì chưa commit hay chưa stash thì nó không cho mình chuyển sang nhánh khác. Vậy giải quyết thế nào?

Trường hợp này chúng ta sử dụng stash (nghĩa giấu đi). Khi dùng cấu lệnh này nó sẽ cất tạm thời các đoạn code thay đổi vào 1 chỗ và cho ta chuyển qua lại thoải mái các nhánh khác. Khi trở lại chỉ việc lấy ra và làm tiếp.

Các câu lệnh cần thiết:

git stash  // Cất/giấu đi
git stash pop // khi trở lại nhánh thì pop lấy ra và code tiếp
git stash list  // Xem mình đã giấu gì
git stash clear // Xoá luôn cái đã giấu đi

Các câu lệnh git thao tác với file và commit

Revert 1 file bất kỳ khi chưa commit

git checkout file_path

Revert 1 file bất kỳ khi đã commit và push

Khi bạn lỡ commit và push 1 vài file không mong muốn thì bận cần revert cái commit mà đã push lên bằng cách
git revert mã_commit
sau đó lại đẩy lên repo là ok

Tham khảo thêm: https://stackoverflow.com/questions/927358/how-to-undo-the-most-recent-commits-in-git

Khi gặp lỗi với SSL

SSL certificate problem: self signed certificate :
*File này còn được cập nhật thường xuyên

Các bài viết không xem thì tiếc:

Chia sẻ là sexy

Đô Trịnh

Một lập trình viên vui vẻ, hòa đồng, luôn sống tích cực và anh ấy quay tay khỏe và khéo trong môn bi lắc :) Xem thêm thông tin tại trang -> Giới thiệu

Thảo luận