目錄雖然現在有很多圖形化的 Git 工具,但是命令列依然 yyds,本文記錄了作業中很有用的一些 Git 操作,
- 1.Fork出來的Git倉庫同步代碼
- 2.合并多個提交
- 3.代碼回退
- 4.使用worktree
- 5.其它
1.Fork出來的Git倉庫同步代碼
背景:有的時候從原倉庫fork出了一個新倉庫,這個新倉庫做了自己的修改,可是原倉庫也進行了更新,比如修復了bug,增加了新特性之類的,這個時候想要把原倉庫代碼同步過來,
原理:把原倉庫的代碼拉到本地,然后通過git merge
把原倉庫分支代碼合到自己的分支代碼,
- 先拉取原倉庫代碼到本地
git remote add upstream (填寫你倉庫git地址)
git fetch upstream
這樣就把原倉庫代碼拉到本地了,而且 upstream 跟原倉庫進行了系結,(類似origin的系結,upstream 也可以命名為其它的名稱)
此時執行git remote
,會看到有兩個:
origin
remote
- 合并分支
切換到fork倉庫的分支,可以新建一個合并分支,然后執行命令:
# 分支名不一定得是master,也可以是其它的原倉庫分支,
git merge upstream/master
如果有沖突就要解決沖突,解決完執行下命令即可:
git merge --continue
最后,如果完成了,可以執行命令移除這個系結,
git remote remove upstream
2.合并多個提交
完成一小部分功能進行提交是一個良好的習慣,有利于我們隨時回溯代碼,然而整體功能沒完成是不能提交到主干的,而且也傾向于整體功能完成合并為一個提交,因此本地的多個小提交合并成一個提交就很有必要了,下面舉個栗子演示合并操作,
執行git log
,查看歷史提交:
commit 03c72b6dfc24c6bf6f60e2c922552249cc3e5376
git test 3
commit 24276fbd0495c4b337f4058726a48e68118eac0a
git test 2
commit 9f92d8624a3adf7cd6fb69268f99d864390838c4
git test 1
假設要將前兩筆提交合并,則記錄下第三筆的commitId:9f92d8624a3adf7cd6fb69268f99d864390838c4
,(第三筆提交不參與合并)
執行以下命令:
git rebase -i 9f92d8624a3adf7cd6fb69268f99d864390838c4
執行后會彈出以下:
pick 24276fbd git test 2
pick 03c72b6d git test 3
# 省略以下內容
此時要將除第一個外的pick改為squash或者s,即改完后為:
pick 24276fbd git test 2
s 03c72b6d git test 3
# 省略以下內容
改完保存退出,會彈出commit message修改界面,修改保存即可,
再執行git log
發現提交已經合并了,
commit 980d318f91f2faa1d748ae5a963b692162dd521c
git test merge
commit 9f92d8624a3adf7cd6fb69268f99d864390838c4
git test 1
3.代碼回退
1、在作業區的代碼
# 丟棄某個檔案
git checkout -- 檔案名
# 丟棄全部
git checkout -- .
2、git add
到了索引區
# 回退索引區所有檔案
git reset HEAD .
# 回退索引區指定檔案夾
git reset HEAD 檔案夾名
3、commit 到本地分支的代碼
# 回退最新一筆提交
git reset --hard HEAD^
# 回退到指定的版本
git reset --hard 版本號
這里說下reset時,指定--hard、--soft、--mixed的區別:
-
hard: 回退時HEAD指標被回退,索引區、作業目錄都被重置了,
-
soft: 只改變了歷史提交(HEAD指標),索引區和作業目錄沒有更改,
-
mixed: 不指定時默認為mixed,改變了歷史提交(HEAD指標),重置了索引區,
4.使用worktree
當你的專案很大,而有多個特性需要開發時,為了避免頻繁切換分支,可以使用git worktree
,
git worktree
非常適合大型專案又需要維護多個分支,想要避免來回切換的場景,其有以下幾個優點:
-
單獨 clone 專案相比,節省了硬碟空間,又因為 git worktree 使用 hard link 實作,要遠遠快于 clone
-
提交可以在同一個專案中共享
-
可以快速進行并行開發,同一個專案多個分支同時并行演進
git worktree
使用非常簡單,掌握3個命令即可:
# 添加一個 worktree,
git worktree add filePath
# 移除一個 worktree
git worktree remove filePath
# 查看目前所有的 worktree
git worktree list
創建了worktree
后,只需要用IDE打開添加到filePath
的專案即可,
5.其它
#本地分支與遠程進行關聯
git branch --set-upstream-to=origin/(要關聯的分支名)
#推送本地新建分支到遠端分支(遠端會自動創建分支)
git push origin newbranch:originbranch
#洗掉遠端分支
git push origin --delete (branch_name)
#查看本地分支關聯的遠程分支
git branch -vv
#分支重命名
git branch -m oldName newName
#修改當前專案的用戶名和郵箱
git config --local user.name “userName"
git config --local user.email [email protected]
#洗掉本地版本庫上那些失效的遠程追蹤分支:
git remote prune origin --dry-run
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/509656.html
標籤:Android
下一篇:中心化決議管理——云端分析