Jimmy 的架站筆記

嗨~我是 Jimmy!我可能不是你認識的第 1 個 Jimmy,但一定是最帥的那個。


git 常用指令整理

By Jimmy 2021-08-24
發表於 開發工具
git 常用指令整理

雖然已經每天跟 git 為伍了,也有把常用指令整理整理在一個 markdown 檔,但還是放到網頁上在開發的時候比較容易看~

1. 將 Respository 加入 git

$ git init
$ git add .
$ git commit -m "[commit message]"
$ git remote add origin [github repository url]
# remove remote
# git remote remove origin
# 第一次 push
$ git push --setupstream origin [branch name]
# 以後 push
$ git push

2. git clone

# clone 別人的 repo 後 push 到自己的 new repo

$ git clone [someone's github repository url]
$ git remote rename origin upstream
$ git remote add origin [new repository url]
$ git push origin master

3. git branch

# 新增 branch
$ git branch [branch name]

# 如果有 [branch name] 就切換過去,沒有的話就建立該 branch 並切換到該 branch
$ git checkout -b [branch name]

# 將 branch apple 重新命名為 banana
$ git branch -m apple banana

# 刪除 local 的 branch
$ git branch -d [branch name]

# 強制刪除 local 的 branch
$ git branch -D [branch name]

# 刪除 remote 的 branch
$ git push origin --delete [remote branch name]

# 查看 local 的 branch
$ git branch -v

# 查看 remote 的 branch
$ git branch -rv

# 同時查看 local 和 remote 的 branch
$ git branch -av

# 在 feature branch 開出 sub branch
$ git checkout -b sub feature
# 或是
$ git branch sub feature

# 新增 local branch 並連結 remote repository 的 branch
$ git checkout --track origin/[remote branch name]
# 等同於
$ git checkout -b [remote branch name]
$ git branch --set-upstream-to=origin/[remote branch name] [remote branch name]

# 新增 local branch 並 push 到 remote 上
$ git checkout -b [branch name]
$ git push -u origin [branch name] 

# 設定目前 branch 的 upstream branch
$ git push --set-upstream origin master

4. git tag

# 在 local 端新增 tag
$ git tag [tag_name]

# push local 的 tag 到 remote
$ git push origin [tag_name]

# 刪除 local 端 tag
$ git tag -d [tag_name]

# 刪除 remote 端 tag
$ git push --delete origin [tag_name]

5. commit 相關

# 捨棄最後一次的 commit
$ git revert HEAD --no-edit

# 捨棄最近一次的 commit
$ git reset master^

# 捨棄目前 branch 上最近一次的 commit
$ git reset HEAD~1

# 恢復到某次 commit 的狀態,同時更新 remote 狀態
$ git reset SHA1 --hard
# 強制 push,忽略 remote 版本較新的問題
$ git push -f

# 捨棄某次的 commit
$ git revert SHA1

# 修改 commit message - 尚未 push 到遠端
$ git commit --amend -m "New message"

# 修改 commit message - 已經 push 到遠端,修改目前最新的 commit message
$ git commit --amend -m "New message"
$ git push --force origin <branchName>

# cherry-pick
$ git cherry-pick <commit-hash>

6. git merge

# merge branchA 到 branchB
$ git checkout branchB
$ git merge branchA

7. git stash

# 暫存修改過的檔案
$ git stash

# 暫存修改過的檔案(包含 untrack 的檔案)
$ git stash -u

# 查看目前有哪些暫存
$ git stash list

# 把最新一次的暫存拿出來用
$ git stash pop

8. git diff

# 比較目前檔案和上一個 commit 作的更動(如果目前沒有修改任何檔案並儲存,那 output 結果會是空的)
$ git diff

# 比較某個檔案和上一個 commit 作的更動
$ git diff [檔案的相對路徑]

# 比較兩個 branch 的更動
$ git diff [branch1] [branch2]

8. ignore 相關

# 暫時忽略已經 tracked 的檔案
git update-index --assume-unchanged path/to/file

# 解除忽略已經 tracked 的檔案
git update-index --no-assume-unchanged path/to/file

# 在 local 設定不要推上 remote 的檔案
#  -> 在 .git/info/exclude 新增檔案

9. rebase 相關

# rebase
# pull 目前 master 的進度
$ git pull origin master

# merge origin branch
$ git pull origin master --no-rebase

# merge 到一半,要捨棄目前的 merge
$ git reset --hard ORIG_HEAD

10. config 相關

# 依照 commit date 排序顯示 branch list
$ git config --global branch.sort -committerdate

# 依照版本號順序顯示 tag list
$ git config --global tag.sort -version:refname

你可能也會喜歡

你可能不懂 npx

你可能不懂 npx

好吧,也有可能只有我不懂 🤣 最近在深入研究一些前端的技術,才發現一直以來對 npx 的理解好像有一些誤解,於是花了點時間釐清一下錯誤的觀念。

Read More
Docker Desktop 殺手 - OrbStack 教學

Docker Desktop 殺手 - OrbStack 教學

對於一個開發者來說,docker 可以說是幾乎每個人都會接觸到的東西,一直以來,我都以為要在 local 上跑 docker 只有 docker 官方開發的 Docker Desktop 可以用,但目前工作上要跑的 container,不但滿耗資源,起 container 的速度也很慢,本來慢到都打算提辭呈了(誤,直到某天意外發現了一個拯救我職涯的好東西 — 1. 簡介 OrbStack 是個可以完全用來取代 Docker Desktop 的工具。

Read More
解決 npm command not found 問題

解決 npm command not found 問題

從某個時間點開始,我用 npm install -g [dependency] 在全域安裝套件後,卻無法執行該套件的 cli,ex:ts-node、ng(Angular cli)等等,雖然每次都有找到解法,就是去 export 目前 npm install -g 後存在的 path 位置,但每次用套件的 cli 都要重新 export 一次實在很麻煩,昨天終於意外找到解法了🤣

Read More