本地倉庫操作
概念理解
- 不跟蹤 ignored (工作區(qū)可自行保留或編碼, 但 git 不會去跟綜)
- 未暫存 unstaged (未被忽略、且相比暫存區(qū)發(fā)生了變化, 包括以下三種)
- 未追蹤 untracked
- 已修改 modified
- 已刪除 deleted
- 已暫存 staged (準備提交)
- 已提交 committed (保存在了本地的數(shù)據庫)
常用指令
一、狀態(tài)修改類
1. 忽略跟蹤 ignored
根據規(guī)則(根目錄下的 .gitignore 文件)忽略對指定內容的跟蹤
# 忽略全部 todo 文件夾
todo
# 忽略根目錄下的 node_module 文件夾, 及全部子內容
/node_module
# 忽略文件夾全部子目錄下的指定內容
/doc/**/*.js
# 忽略文件夾直接子目錄下的指定內容
/build/*.js
# 對指定內容 排除忽略
# !build/main.js
2. 暫存 unstaged => staged
加入下次提交隊伍; 包括內容的 新增 / 修改 / 刪除 等;
# 指定文件
git add ./index.js
# 指定文件夾全部子內容
git add ./src/**/*
# 全部修改
git add .
git add *
3. 重命名 / 移動位置
# 相當于三步操作 1.刪除 prev ; 2.新增 target ; 3. 暫存這兩步修改
git mv [prev-file] [target-file]
4. 從暫存區(qū)撤回 staged => modified
git reset HEAD index.js
5. 移除
# 從已提交中移除并從磁盤中刪除 committed => deleted
git rm ./index.js
# 當暫存區(qū)有修改時, 強制刪除 committed => deleted
git rm -f ./index.js
# 僅從暫存區(qū)移除;committed / staged => untracked
git rm --cached readme.txt
6. 提交 staged => committed
git commit -m "commit msg"
7. 暫存+提交 modified => committed
git commit -a -m "commit msg"
8. 修改提交
- 修改 commit 內容,通過
--amend補充進去; 不增加 commit 數(shù)量; - 修改 commit 的備注信息; 通過
-m
git commit -m 'initial commit'
git add forgotten_file
git commit --amend -m "modify commit"
9. 撤銷提交
// Todo:待補充
二、狀態(tài)查看類
1. 當前 整體狀態(tài)
# 新建未跟蹤 / 修改未暫存 / 暫存未提交 / 領先的提交數(shù)量
git status
2. 當前 未暫存內容
git diff
3. 當前 已暫存未提交的內容
git diff --cached
4. 已提交信息(包括全部提交歷史)
# 全部信息
git log
# 查看最近2次提交的差異
git log -p -2
# 指定信息;表格化
git log --pretty=format:"%h - %an, %ar : %s"
# 數(shù)據化: 增、刪、改的代碼行數(shù)
git log --stat
二、本地倉庫 <==> 遠程倉庫操作
連接
- 設置用戶
git config --global user.name [user name]
git config --global user.email [user email]
- 生成 sshKey, 授權操作
# 生成公鑰
ssh-keygen -t rsa -b 4096 -C [user_email]
cat ~/.ssh/id_rsa.pub
# 復制后, 粘貼到 github網站個人設置頁 => setting => SSH and GPG keys
- 新建遠程倉庫
- 在 github 網站操作
- 新建本地倉庫
git init
- 連接本地倉庫和遠程倉庫 (如果提示無權限, 檢查第 1、2 步)
# short-name 默認是 origin
git remote add [short-name] [github-repo-url]
常用操作
拷貝 遠程 => 本地
git clone [github-repo-url]
拉取代碼
git pull [short-name] [branch-name]
推送代碼
git push [short-name] [branch-name]
分支管理
// Todo:待補充