常用的Git便捷操作合集
1.Fork出來的Git倉庫同步代碼
背景:有的時候從原倉庫fork出了一個新倉庫,這個新倉庫做了自己的修改。可是原倉庫也進(jìn)行了更新,比如修復(fù)了bug,增加了新特性之類的。這個時候想要把原倉庫代碼同步過來。
原理:把原倉庫的代碼拉到本地,然后通過git merge
把原倉庫分支代碼合到自己的分支代碼。
1.先拉取原倉庫代碼到本地
git remote add upstream (填寫你倉庫git地址) git fetch upstream
這樣就把原倉庫代碼拉到本地了,而且 upstream 跟原倉庫進(jìn)行了綁定。(類似origin的綁定,upstream 也可以命名為其它的名稱)
此時執(zhí)行git remote
,會看到有兩個:
origin
remote
2.合并分支
切換到fork倉庫的分支,可以新建一個合并分支。然后執(zhí)行命令:
# 分支名不一定得是master,也可以是其它的原倉庫分支。 git merge upstream/master
如果有沖突就要解決沖突,解決完執(zhí)行下命令即可:
git merge --continue
最后,如果完成了,可以執(zhí)行命令移除這個綁定。
git remote remove upstream
2.合并多個提交
完成一小部分功能進(jìn)行提交是一個良好的習(xí)慣,有利于我們隨時回溯代碼。然而整體功能沒完成是不能提交到主干的,而且也傾向于整體功能完成合并為一個提交。因此本地的多個小提交合并成一個提交就很有必要了。下面舉個栗子演示合并操作。
執(zhí)行git log
,查看歷史提交:
commit 03c72b6dfc24c6bf6f60e2c922552249cc3e5376 git test 3 commit 24276fbd0495c4b337f4058726a48e68118eac0a git test 2 commit 9f92d8624a3adf7cd6fb69268f99d864390838c4 git test 1
假設(shè)要將前兩筆提交合并,則記錄下第三筆的commitId:9f92d8624a3adf7cd6fb69268f99d864390838c4
。(第三筆提交不參與合并)
執(zhí)行以下命令:
git rebase -i 9f92d8624a3adf7cd6fb69268f99d864390838c4
執(zhí)行后會彈出以下:
pick 24276fbd git test 2 pick 03c72b6d git test 3 # 省略以下內(nèi)容
此時要將除第一個外的pick改為squash或者s。即改完后為:
pick 24276fbd git test 2 s 03c72b6d git test 3 # 省略以下內(nèi)容
改完保存退出,會彈出commit message修改界面,修改保存即可。
再執(zhí)行git log
發(fā)現(xiàn)提交已經(jīng)合并了。
commit 980d318f91f2faa1d748ae5a963b692162dd521c git test merge commit 9f92d8624a3adf7cd6fb69268f99d864390838c4 git test 1
3.代碼回退
1、在工作區(qū)的代碼
# 丟棄某個文件 git checkout -- 文件名 # 丟棄全部 git checkout -- .
2、git add
到了索引區(qū)
# 回退索引區(qū)所有文件 git reset HEAD . # 回退索引區(qū)指定文件夾 git reset HEAD 文件夾名
3、commit 到本地分支的代碼
# 回退最新一筆提交 git reset --hard HEAD^ # 回退到指定的版本 git reset --hard 版本號
這里說下reset時,指定--hard、--soft、--mixed的區(qū)別:
- hard: 回退時HEAD指針被回退,索引區(qū)、工作目錄都被重置了。
- soft: 只改變了歷史提交(HEAD指針),索引區(qū)和工作目錄沒有更改。
- mixed: 不指定時默認(rèn)為mixed,改變了歷史提交(HEAD指針),重置了索引區(qū)。
4.使用worktree
當(dāng)你的項目很大,而有多個特性需要開發(fā)時,為了避免頻繁切換分支,可以使用git worktree
。
git worktree
非常適合大型項目又需要維護(hù)多個分支,想要避免來回切換的場景。其有以下幾個優(yōu)點:
- 單獨(dú) clone 項目相比,節(jié)省了硬盤空間,又因為 git worktree 使用 hard link 實現(xiàn),要遠(yuǎn)遠(yuǎn)快于 clone
- 提交可以在同一個項目中共享
- 可以快速進(jìn)行并行開發(fā),同一個項目多個分支同時并行演進(jìn)
git worktree
使用非常簡單,掌握3個命令即可:
# 添加一個 worktree。 git worktree add filePath # 移除一個 worktree git worktree remove filePath # 查看目前所有的 worktree git worktree list
創(chuàng)建了worktree
后,只需要用IDE打開添加到filePath
的項目即可。
5.其它
#本地分支與遠(yuǎn)程進(jìn)行關(guān)聯(lián) git branch --set-upstream-to=origin/(要關(guān)聯(lián)的分支名) #推送本地新建分支到遠(yuǎn)端分支(遠(yuǎn)端會自動創(chuàng)建分支) git push origin newbranch:originbranch #刪除遠(yuǎn)端分支 git push origin --delete (branch_name) #查看本地分支關(guān)聯(lián)的遠(yuǎn)程分支 git branch -vv #分支重命名 git branch -m oldName newName #修改當(dāng)前項目的用戶名和郵箱 git config --local user.name “userName" git config --local user.email email@example.com #刪除本地版本庫上那些失效的遠(yuǎn)程追蹤分支: git remote prune origin --dry-run
以上就是常用的Git便捷操作合集的詳細(xì)內(nèi)容,更多關(guān)于Git便捷操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
HTTP協(xié)議詳解_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了HTTP協(xié)議詳解,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器2017-07-07Git pull(拉取)及push(上傳)相關(guān)命令介紹
這篇文章主要介紹了Git pull(拉取),push(上傳)相關(guān)命令,git是一個非常好用的分布式版本管理工具,Git是去中心化,每一個分支都是一個中心,并且支持本地倉庫存儲,像如今很多大公司都用git做版本控制。有興趣的話來學(xué)習(xí)一下2020-07-07textarea 在IE和FF下?lián)Q行無法正常顯示的解決方法
今天在做項目時用到textarea 用戶輸入信息后顯示不換行在IE下測試成功在FF沒反應(yīng)2010-07-07Imagenet2012數(shù)據(jù)集下載、介紹(推薦)
最近研究可能會用到該數(shù)據(jù)集,發(fā)現(xiàn)過去好多分享的官網(wǎng)下載鏈接已經(jīng)失效,找了很久才找到了網(wǎng)盤的數(shù)據(jù)集,對Imagenet數(shù)據(jù)集下載需要的朋友跟隨小編一起看看吧2022-09-09網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程
這篇文章主要介紹了網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程,需要的朋友可以參考下2016-10-10