黃芝晴 / Hedi Huang

git

alex宅幹嘛
git init 將folder設定為git repo(倉庫)
git add 檔名 加進指定變更檔案到git repo
git add. 加進全部變更檔案到git repo
git commit -m(message) 根據剛剛add的變更下一個註記
git branch -b 再下完commit後在這個變更處給一個較有規模性的標籤,並切換到這個標籤做開發
git merge
save both
git rebase 建議打指令 因為vscode的rebase怪怪的⇒複製1號branch的所有changes到2號branch
git checkout HEAD^
git checkout HEAD~1
git check master~2
git check 34c4
git branch -f master bugfix
git branch -f bugfix f816
以下這兩種適用於branch
git reset (soft/mixed/hard)回到過去
git revert 減去某個commit所記錄的change

Style Guide


版本控制系統VCS 又稱SCM源代碼管理器
working directory(目錄)工作區: 在atom(coder editor)中編輯file 其實是在working directory使用file
branch分支 新的開發流程 從主線分支出來 在working directory裡

staging area暫存區/ staging index暫存索引/ index索引: Files on the Staging Index are poised(準備) to be added to the repository
repo(repository)倉庫: 由commit構成 與git通訊
commit提交: 由snapshot快取組成
checkout檢出: 將repo裡的files複製到working directory下的動作
SHA: commit的ID number EX.e2adf8ae3e2e4ed40add75cc44cf9d0a869afeb6

mv 原檔名 欲更改檔名
git init(initialize) 在本地端創造新的repo
在git bash裡建立project name
進到想要新增project的directory
cd是進入資料夾 cd..是回到上層資料夾
輸入mkdir 資料夾名來新增資料夾
然後用cd指令進到新建的資料夾裡
輸入git init在該資料夾裡新增空的(初始)一個repo
資料夾名為.git 這是一個隱藏的資料夾
可能需要確認"檢視"裡是否設定顯示"隱藏的項目"
Untitled.png

git clone 複製任何地方的repo到本地端
進到想安置要複製的repo的directory裡
按右鍵選擇
Untitled 1.png
在git bash裡輸入git clone 要複製的repo的https 重新命名(選擇性)
Untitled 2.png


git status 查看repo狀態
一樣進到想查看的repo的資料夾裡
打開git bash
輸入git status

git log 顯示已完成的commit/ tag / branch
:(less分頁)處按可以看到更早以前的commit 同樣可以按檢視較新的commit
到最早的commit就會看到"END"
要離開:就按Q 就會從目前最底下的commit跳出
u2FWjiJEfq.gif
※指令補充※
j 一次向下移动一行
d 按照一半的屏幕幅面移动
f 按照整个屏幕幅面移动
向上滚动,按上
k 一次向上移动一行
u 按照一半的屏幕幅面移动
b 按照整个屏幕幅面移动
按下 q 可以退出日志(返回普通的命令提示符)

查找commit

by message
git log --all --grep='message裡的內容'

簡短呈現
git log --oneline

統計呈現
git log --stat

補丁呈現
git log -p

同時呈現統計和補丁
git log --stat -p

顯示補丁且不顯示空白更改
git log -p -w
git show 輸入SHA 顯示補丁
git show SHA

git add 將files從working directory加到staging index
stage特定檔案
git add 所在資料夾/要stage的檔案(含副檔名) 資料夾/其他要加入的檔名
.代表目前資料夾的所有檔案
stage該資料夾裡所有檔案:
git add .

git rm --cached 移除staging index裡的檔案快取
git rm--cached 要從staging index移除的檔案(含副檔名)

git commit 將files從staging index儲存到repo
透過atom添加commit message和description
git commit

不透過atom來新增commit message但無法添加description
git commit -m commit信息

git diff 呈現file新舊版本的差異(尚未stage, commit)
git diff

.gitignore(不含附檔名)
用txt建立.gitignore
在.gitignore中標記要ignore的檔案
Untitled 3.png
Untitled 4.png
※注意※
.gitignore裡
附檔名大小寫不分 *.png = *.PNG
但檔名分大小寫! be?rs ≠ Be?rS

git tag 幫commit加tag
列出現有tag
git tag

在最新commit的位置添加tag
git tag -a v要新增的版本號
會透過atom 編輯tag message

在特定commit位置添加tag
git tag -a v要新增的版本號 SHA

刪減
git tag -d v要刪除的版本號

git branch 協助研發以功能來新增branch
列出現有branch
git branch

新增branch
git branch 要新增的branch名

刪除branch
git branch -d 要刪除的branch名

git checkout 將head切換至其他branch 或專注於某個file
git checkout 要轉換到的branch
git checkout -b 要新增並轉換至的branch 根據哪個branch的起點
git checkout --file名

git log (--oneline) --graph --all 看到所有分支的所有commit
--graph 顯示分支歷程 --all 顯示所有分支的commit
Untitled 5.png

git merge 融合branch
先git checkout到想要進行合併的branch
然後git merge 要合併進來的branch
未合併前 目前 branch為master
Untitled 6.png
fast-forward merge (快進合併)
master向前合併到footer master和footer指向同一commit
Untitled 7.png
merge(普通合併) siderbar合併到master 此合併會生成一個新commit
Untitled 8.png

git commit --amend 修改最新的commit
※前提※欲更改的commit是最新的commit
commit message改錯字
git commit --amend
在atom修改

補充commit內容
完成任何想補充的內容後
git add 編輯過的文件
git commit --amend

git revert 依據SHA還原commit
git revert 要取消動作的SHA
會新增一個commit 說明這個revert
並且保留此commit的紀錄

Relative commit reference(HEAD)
當前的HEAD是ee7c426 HEAD^ 0eb2986 HEAD~ 也是0eb2986 HEAD^^ acf153d HEAD~2 也是acf153d HEAD^^^ 61ca221 HEAD~3 也是61ca221 HEAD^^^2 abbf495 HEAD~4^2 81cdb98


Untitled 9.png
git reset 依據HEAD重置commit(小心使用!)
重置先前備份
重置前 在當前的HEAD 新增一個branch(例如: backup)
若想要某檔案恢復備份時的狀態的話
git checkout --file名
git merge backup的branch名
讓master的該檔案快進合併到backup裡

將commit退回working directory
git reset 要重置的commit的前面committ的HEAD
git reset --mixed 要重置的commit的前面committ的HEAD
會更新SHA

將commit退回staging index
git reset --soft 要重置的commit的前面committ的HEAD
會更新SHA

將commit丟到trash(隱藏版工作區)
git reset --hard 要重置的commit的前面committ的HEAD

github
※每次修改都要在遠端更新※

一律在開始專案前上傳到github
echo "# javascript-basic" >> README.md
git init
git add README.md
git commit -m "init commit"
git remote add github帳戶名 hub-repo的https
git push github帳戶名 要傳的分支

專案
git remote add github帳戶名 hub-repo的https
git push github帳戶名 要傳的分支

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.