Git
參考資料
Learn-Git-in-30-days:
https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/zh-tw/24.md
不是每種檔案版本控制都適合使用 GIT (e.g. 簡報製作)
空的資料夾無法被 git 感應到,慣例上會在資料夾內加入 .keep 或 .gitkeep 檔案
$ which git
確認此工具
$ git log --oneline
Simplify git log, make log easily to read.
$ git blame <filename>
查找每一行程式碼是誰寫的
$ git commit --amend
進入編輯器修改 commit 的訊息
$ git reset ORIG_HEAD --hard
可回復到 rebase 前的狀態
- rebase interactively 可以修改歷史,也可能改爛專案
指令筆記:
- 設定使用者
git config --global user.name "username"
設定email
git config --global user.email "[email protected]"
確認設定值,可使用
git config --list
命令列出所有Git能找到的設定值初始化資料夾,加入 git 版本控制監視:
git init
開新的分支
git branch 分支名字
檢查狀態
git status
加入檔案到stage
好用的互動模式:
git add -i
加入全部:
git add .
加入特定檔案
git add file
遞交變更(存擋)
git commit -m "message"
復原、撤銷修改:取消對文件的修改。還原到最近的版本,放棄本地做的修改。尚未add:
git checkout <file>
把檔案救回來git checkout .
救回當下資料夾內所有檔案 (透過 checkout 到版本編號指令也可以回到過去或任何版本)git reset HEAD <file> # 還原 "指定" 的檔案狀態(工作狀態) git reset HEAD # 還原 "全部" 的檔案狀態
只要有狀態點的編號(SHA-1 number) 即可利用
reset <SHA-1> --hard
回到那個點移出 stage 狀態:撤銷先前"git add"的操作
git reset HEAD <file>
把檔案從Repository中幹掉(解除 staged 狀態、變為 untracked)
git rm –cached <file>
回退所有內容到上一個版本 (預設 --mixed 模式,檔案丟到工作區 untracked 狀態)
git reset HEAD^
git reset HEAD^^
倒退兩步git reset HEAD~10
倒退10個版本將本地的狀態回退到和遠程的一樣
git reset -hard origin/master
移除 git 管理:刪除目錄下隱藏的 .git 資料夾
find ./ -name .git -exec rm -rf {} \;
建立 Github 資料庫:
本節指令
git remote
git remote -v
git remote add origin
git remote rm origin # 刪除節點
git remote set-url --add origin
git push
git push -u
(參數 -u 等同於 --set-upstream,
設定 upstream 可以使分支開始追蹤指定的遠端分支)
git push --all
git push --tags
git branch --unset-upstream master # 可以不用先切換到 master 分支
(取消追蹤遠端分支)
git branch -a # 查看所有分支
開一個同名的無狀態 repository
不要勾選建立 README
不要加入任何檔案
在 code 標籤頁內 複製網址(https or ssh)
在本地位置輸入
git remote add origin '複製的網址'
git push origin
將當前分支推送到 origin 主機的對應分支
git push -u origin master
此命令將本地的 master 分支推送到 origin 主機,同時指定 origin 為預設主機,以後就可以不加任何參數使用 `git push` 了
這段指令的原型為:git push origin master:master
push 本地 master 到遠端 master
所以如果要刪除遠端 cat 分支:
git push origin :cat
由於這是一個 「沒有版本」的空白 Git 儲存庫,在 GitHub 上的遠端儲存庫是完全空的,連預設的
master
分支都沒有,所以在下達git push
指令時必須加上-u
參數,才能成功地把本地儲存庫上傳到 GitHub 上的遠端儲存庫以後的版本更新只需要
git push
即可(預設只會推送當前的分支)