Tạo một kho lưu trữ mới từ dòng lệnh
echo "#dungthu" >> README.md
git init
git add README.md
git commit -m"lần commit đầu tiên"
git remote add origin git@github.com:nguyendinh/dungthu.git
git push -u origin master
Đẩy một kho lưu trữ hiện có từ dòng lệnh
git remote add origin git@github.com:nguyendinh/dungthu.git
git push -u origin master
Ghi đè các tệp cục bộ
git fetch --all && git reset --hard origin/master && git pull
Xóa bộ nhớ cache cục bộ
git rm -r --cache .
Commit thay đổi
git add .
git commit -m"nội dung commit"
git push origin master
Cảnh báo:
warning: LF sẽ được thay thế bằng CRLF trong ......
Tệp sẽ có các dấu ngắt dòng gốc trong thư mục làm việc của bạn.
Giải pháp: Tắt thông báo tự động
git config --global core.autocrlf false
Phương án 1: Tạo một kho lưu trữ mới bằng dòng lệnh
Nếu bạn đã lấy về một kho lưu trít git, bạn chỉ cần thực hiện các thao tác tạo dự án trong thư mục đó
git clone git@gitee.com:nguyendinh/JavaQuickStart.git //Lấy dự án về máy<br></br>git init //Khởi tạo git cục bộ
git add README.md //Thêm tệp README.md vừa tạo vào khu vực tạm
git commit -m"lần commit đầu tiên" //Commit nội dung từ khu vực tạm, các thao tác trên để khởi tạo kho từ xa
git remote add origin git@gitee.com:nguyendinh/JavaQuickStart.git //Thêm kho từ xa
git push -u origin master //Lần đầu đẩy lên kho từ xa cần -u, đẩy master cục bộ lên master từ xa, lần sau chỉ cần git push
Phương án 2: Đẩy kho lưu trữ cục bộ lên kho từ xa bằng dòng lệnh
Nếu bạn đã có dự án nhưng chưa quản lý bằng git, hãy thực hiện các bước sau:
- Đầu tiên tạo một kho lưu trữ từ xa, như hình trên
- Khởi tạo quản lý phiên bản git cục bộ trong thư mục dự án
git init //Trong thư mục dự án sẽ xuất hiện thư mục .git, nhưng các dự án như vue-cli đã có sẵn file khởi tạo git
git add . //Thêm tất cả nội dung trong thư mục dự án vào khu vực tạm, nếu có tệp hoặc thư mục không cần quản lý phiên bản, hãy thêm vào .gitignore, nếu chưa có file thì tạo mới
git commit -m"lần commit đầu tiên" //Ghi chú commit
git remote add origin git@gitee.com:nguyendinh/JavaQuickStart.git //Thêm kho từ xa
git push -u origin master //Lần đầu đẩy lên kho từ xa cần -u, đẩy master cục bộ lên master từ xa, lần sau chỉ cần git push
Một số tệp hoặc thư mục chưa được commit
Hai trường hợp
-
Trong thư mục chưa commit đã tồn tại .git, hãy xóa nó rồi commit lại
-
Trong Git Bash Here, nhập touch .gitignore, sau đó kiểm tra nội dung tệp .gitignore trong thư mục
Có thể có tên tệp hoặc thư mục chưa được commit, hãy xóa chúng và commit lại
Tệp .gitignore
Git lọc tệp, dùng để cấu hình những gì sẽ commit và những gì không
# Bỏ qua tất cả tệp có tên foo.txt
foo.txt
# Bỏ qua tất cả tệp html được tạo ra,
*.html
# foo.html được bảo quản thủ công, nên ngoại lệ.
!foo.html
# Bỏ qua tất cả tệp .o và .a.
*.[oa]
Cú pháp cấu hình:
Dấu gạch chéo "/" ở đầu biểu thị thư mục;
Dấu sao "*" dùng để thay thế nhiều ký tự;
Dấu hỏi "?" thay thế một ký tự duy nhất;
Dấu ngo vuông "[]" chứa danh sách các ký tự khớp;
Dấu chấm than "!" biểu thị không bỏ qua (theo dõi) tệp hoặc thư mục khớp;<br></br><br></br>#Ví dụ:<br></br>1)/thư_mục/ Lọc toàn bộ thư mục<br></br>2)*.zip Lọc tất cả tệp .zip<br></br>3)/thư_mục/tệp.c Lọc một tệp cụ thể<br></br>4)!/thư_mục/*.log Đẩy tất cả tệp .log trong thư mục mtk<br></br><br></br>Cập nhật tệp<br></br>git rm -r --cache .<br></br>git add .<br></br>git commit -m ‘cập nhật .gitignore’
Nhánh
Xem nhánh
//Xem nhánh cục bộ<br></br>git branch<br></br><br></br>//Xem nhánh từ xa<br></br>git branch -r<br></br><br></br>//Xem tất cả nhánh<br></br>git branch -a<br></br><br></br>//Xem tất cả nhánh chưa hợp nhất<br></br>git branch --no-merged
Tạo nhánh
git checkout -b nhánh_mới<br></br><br></br>//Câu trên là viết tắt của hai câu sau<br></br>git branch nhánh_mới //Tạo nhánh cục bộ<br></br>git checkout nhánh_mới //Chuyển đến nhánh cục bộ
Chuyển nhánh
git checkout master
Đồng bộ nhánh
git fetch origin --prune
Đẩy nhánh
//Commit nhánh
git add .
git commit -m"thêm nhánh nhánh_mới"
git push origin nhánh_mới //Đẩy lên nhánh kho từ xa
Hợp nhất nhánh
git merge nhánh_phát_triển
Xóa nhánh
<em>//Không thể xóa nhánh chưa hợp nhất<br></br>git branch -d nhánh_phát_triển<br></br><br></br>//Xóa nhánh bằng vũ lực<br></br>git branch -D nhánh_phát_triển<br></br><br></br>//Xóa nhánh từ xa<br></br>git push origin --delete <Tên_Nhánh><br></br></em>
Quản lý phiên bản
Xem thông tin phiên bản
git log<br></br><br></br>//Thông tin tóm tắt<br></br>git log <em>--pretty=oneline</em>
Quay lại phiên bản trước
git reset --hard mã_phiên_bản
Đẩy phiên bản
git push origin HEAD --force
Dọn dẹp tệp cũ (khi .git quá lớn)
(Lưu ý: thao tác này sẽ khiến kho Git không thể hoàn tác!)
- Chạy gc, cắt tỉm tất cả các commit trước đó
git gc --prune=now
- Xem các tệp quá lớn
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
- Xóa lịch sử tệp
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '*'" --prune-empty --tag-name-filter cat -- --all
- Repack lại
// git for-each-ref xuất tất cả các mục reflog tại vị trí chỉ định, --format định dạng các Object với ký tự cụ thể<br></br>// git update-ref cập nhật các mục reflog<br></br><br></br>git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
- Xóa các mục reflog quá cũ
git reflog expire --expire=now --all
- Chạy gc, cắt tỉm tất cả các commit trước đó
git gc --prune=now