修改了某些檔案,一次只 commit 其中某幾個檔案
假設我們在開發的過程當中,做了某些檔案的修改。
git status
# 看到以下的狀態
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be commited)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: document.json
modified: package-lock.json
modified: package.json
modified: src/app/app.component.html
modified: src/app/app.component.ts
modified: src/app/app.module.ts
modified: src/index.html
modified: src/styles.css
no changes added to commit (use "git add" and/or "git commit -a")
可是我只希望部分檔案加入 staging area
,比如寫 component 時很好用,現在只希望加入 src/app/app.component 開頭的兩個檔案: src/app/app.component.html
、src/app/app.component.ts
。
# 原本要這樣加入
git add src/app/app.component.html src/app/app.component.ts
# 現在只要這樣寫
git add src/app/app.component-*
想加入相同檔案類型的語法就是反過來,比如加入 .html
檔案:
git add *.html
下 git log 時,提高可讀性,顯示時間、下 commit 的人
在使用 GIT 的時候,常常需要檢視我們的 commit 紀錄,而查看紀錄的語法是 git log
。
一般來說,我們在 terminal
下 git log
會看到以下訊息:
commit 9a7f06bd416decd8ec8463248d159cde67c48c82
Author: Askie <youremail@gmail.com>
Date: Fri Oct 12 13:05:45
內建呈現的格式提供的資訊並不符合每天查閱的需求,所以接下來會教你會加入一個 alias
,指向新的設定。
# 在專案底下查看 git 設定檔
vim ~/.gitconfig
# .gitconfig 檔案
[alias]
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --branches
git lg
可以看到有顯示以下資訊(請忽略新手還亂亂的 commit 的訊息,以及把顏色改掉了看不出來這件事>//<):
- SHA1
- HEAD 指向哪個 commit
- 分支名稱
- Commit message
- 合併分支的流程以圖形介面呈現
- 多久以前 commit
- 誰做了這個 commit
更多設定 alias
的內容可以參考為你自己學 Git-其它方便的設定。
本文章內容是參考 egghead.io
的 Juri Strumpflohner 所開的 Productive Git for Developers
課程內容包含下面的情境,想學習的可以去訂閱唷!
- 修改了某些檔案,一次只 commit 其中某幾個檔案
- 下 git log 時,提高可讀性,顯示時間、commit 的人
- 不小心把 commit 下在 Master,如何移動某些 commits 到另一個新分支?
- 取 master 最新的 commit 內容,搬到現在正在開發中的 feature branch
- 將本地端有 rebase 過的分支 push 到遠端(使用 --force-with-lease)
- 在提交要給夥伴 review、merge 前,怎樣整理好我們的 git branch
- 利用 Git Autosquash 自動清理我們的 feature branch(有時候開發途中會發現其他小問題,會產生一些 fix 這種可讀性低的 commits)
- 整合數個 commits 成一個 commit,並且 merge 到 master
- message 打錯了!只修改最後一次 commit 的 message
- 少 commit 一個要的檔案!補到最後一次 commit 當中
- 取消最後一次 commit 並且將它切成兩個
- 從 branch 當中永遠移除某個 commit(使用 git reset)
- 將不小心 push 到遠端 Repository 的 commit 取消
- 暫存一些正在做的事情,因為我現在需要跳到其他分支
留言