项目中使用 Git 高频场景
1. 拉取最新主干代碼,進行功能迭代或 bug 修復
- 首先切換到主干:
git checkout master
- 然后拉取最新代碼:
git pull
- 基于 master 創建本地分支 xxx:
git checkout -b feature/xxx
- 將本地分支 xxx push 到遠程 Git 庫:
git push --set-upstream origin feature/xxx
2. 如何重命名遠程分支
例如遠程分支為:feature/xxx。
- 首先切換到該遠程分支對應的本地分支:
git checkout feature/xxx
- 拉取下最新代碼:
git pull
- 進行重命名:
git blame -m feature/xxx feature/login
- 將 feature/login 推動遠程 Git 庫:
git push --set-upstream origin feature/login
- 刪除老舊遠程分支:
git push origin --delete feature/xxx
3. 功能開發一半,臨時修復線上緊急 bug
這個時候,新功能開發代碼可能還沒完成,我們需要把當前的工作進度保存下,等修復 bug 后再轉過頭來繼續開發。
- 保存當前的工作進度,并附上注釋:
git stash save "add login func"
- 獲取 stash list:
git stash list
- 修復完 bug 后,還原之前的工作進度:
git stash pop stash@{index}
4. 如何挑揀別人的 commit
對于同一功能的不同分支,可能其他開發對該功能進行 bugfix,這個時候我們也想用在自己的分支 fix 這個 bug,注意不要腦殘貼代碼呢,敲黑板!!!
- 獲取其他開發者修復的 commitId:
git log 或 git reflog
- 挑揀別人的 commitId 到自己的分支:
git cherry-pick commitId
5. 如何回退版本
對于某一錯誤操作致使項目無法正常運行,我們需要對某一點進行還原,有點類似電腦操作系統的備份點或還原點;這個操作會使 git 指針往后退,所以在 push 的時候需要強制 push 才能成功!
- 獲取還原點,還原點選擇很重要,需要選擇正確版本的最新:
commitId
- 回退版本:
git reset commitId
- 查看 reset 后的代碼更改項:
git status
- 忽略更改項,直接強制 push:
git checkout .
git push -f
6. 如何撤銷某一個 commit
撤銷操作和回退操作唯一不同的是,撤銷的操作指針是往前的,回退的操作指針是往后的;撤銷相當于相互抵消,等于白干!
- 獲取需要撤銷的 commitId。
- 進行撤銷:
git revert commitId
7. 如何合并分支
當功能分支測試完成,一切就緒后,需要同步下 master 分支,避免不必要的沖突;這個時候有兩個選擇:
git merge origin/master
git merge --no-ff origin/master
兩者有什么區別呢?
-ff
默認情況是快進式(即 fast-forward),當合并兩個分支時,如果順著一個分支走下去可以到達另一個分支的話,那么 Git 在合并兩者時,只會簡單地把指針右移,叫做“快進”(fast-forward);這種情況如果刪除分支,則會丟失 merge 分支信息。
--no-ff
關閉 fast-forward 模式,在提交的時候,會創建一個 merge 的 commit 信息,然后合并與 master 分支 merge 的不同行為,向后看,其實最終都會將代碼合并到 master 分支,而區別僅僅只是分支上的簡潔清晰的問題,然后,向前看,也就是我們使用 reset 的時候,就會發現,不同的行為就帶來了不同的影響。
--squash
把一些不必要 commit 進行壓縮,比如說,你的 feature 在開發的時候寫的 commit 很亂,那么我們合并的時候不希望把這些歷史 commit 帶過來,于是使用 --squash 進行合并,此時文件已經同合并后一樣了,但不移動 HEAD,不提交。需要進行一次額外的 commit 來“總結”一下,然后完成最終的合并。
這里筆者強烈推薦用 --on-ff 模式,這樣合并上來的分支 commit 一目了然,便于后期的版本更迭。
總結
以上是生活随笔為你收集整理的项目中使用 Git 高频场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git 错误提交后该如何回滚操作
- 下一篇: 2022-2028年中国内衣用热熔胶膜行