主頁 > 移動端開發 > Git 便捷操作

Git 便捷操作

2022-09-27 09:08:37 移動端開發

雖然現在有很多圖形化的 Git 工具,但是命令列依然 yyds,本文記錄了作業中很有用的一些 Git 操作,

目錄
  • 1.Fork出來的Git倉庫同步代碼
  • 2.合并多個提交
  • 3.代碼回退
  • 4.使用worktree
  • 5.其它

1.Fork出來的Git倉庫同步代碼

背景:有的時候從原倉庫fork出了一個新倉庫,這個新倉庫做了自己的修改,可是原倉庫也進行了更新,比如修復了bug,增加了新特性之類的,這個時候想要把原倉庫代碼同步過來,

原理:把原倉庫的代碼拉到本地,然后通過git merge把原倉庫分支代碼合到自己的分支代碼,

  1. 先拉取原倉庫代碼到本地
git remote add upstream (填寫你倉庫git地址)

git fetch upstream

這樣就把原倉庫代碼拉到本地了,而且 upstream 跟原倉庫進行了系結,(類似origin的系結,upstream 也可以命名為其它的名稱)

此時執行git remote,會看到有兩個:

origin
remote
  1. 合并分支

切換到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

上一篇:華為帳號自擬形象上線 打造手機里的另一個你

下一篇:返回列表

標籤雲
其他(145340) Python(37296) JavaScript(24909) Java(16484) C(14967) 區塊鏈(8236) C#(7957) AI(7469) 爪哇(7405) html(6776) MySQL(6729) 基礎類(6313) sql(6084) 熊猫(6051) PHP(5787) 数组(5741) R(5307) 反应(5188) Linux(5185) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4417) 数据框(4310) css(4249) 节点.js(4029) C語言(3288) json(3241) 列表(3120) C++語言(3117) 扑(3085) 安卓(2997) 打字稿(2957) VBA(2784) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2401) ASP.NET(2364) MongoDB(2317) 麻木的(2285) 正则表达式(2232) 字典(2211) 循环(2197) 迅速(2174) 擅长(2159) 镖(2150) 功能(1967) Web開發(1951) python-3.x(1918) 弹簧靴(1911) xml(1884) for循环(1841) 谷歌表格(1837) Unity3D(1824) PostgreSQL(1808) .NET技术(1800) 網絡通信(1793) .NETCore(1792) 蟒蛇-3.x(1774)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • Git 便捷操作

    雖然現在有很多圖形化的 Git 工具,但是命令列依然 yyds。本文記錄了作業中很有用的一些 Git 操作。 1.Fork出來的Git倉庫同步代碼 **背景:**有的時候從原倉庫fork出了一個新倉庫,這個新倉庫做了自己的修改。可是原倉庫也進行了更新,比如修復了bug,增加了新特性之類的。這個時候想 ......

    uj5u.com 2022-09-27 09:08:37 more
  • 華為帳號自擬形象上線 打造手機里的另一個你

    華為帳號自擬形象上線啦!用戶只需一張照片,即可輕松創建屬于自己的華為帳號自擬形象,還能對形象進行個性化裝扮,DIY發型、服裝、配飾等。點擊“手機設定 > 華為帳號 > 自擬形象 ”即刻擁有手機中的另一個你。 華為帳號自擬形象提供數個預置虛擬形象供用戶直接使用,用戶也能夠通過拍攝/上傳照片,一鍵生成照 ......

    uj5u.com 2022-09-27 09:08:19 more
  • 國際聾人周 | 聾健人群無界融合,看見手語的力量

    聽不見、聽不清、聽不懂,這是全國上千萬聽障群體的真實寫照。由于聽力的局限,他們在求學、作業、就醫、出行等方面都面臨巨大挑戰。AI時代,全行業為資訊無障礙建設形成強大合力,但聽障群體依然面臨著冷冰冰的現實:專業語言服務人員的稀缺、溝通輔助器具的不完備,甚至來自社會的偏見及誤解…… “聾人只要通過助聽設 ......

    uj5u.com 2022-09-26 07:32:31 more
  • 國際聾人周 | 聾健人群無界融合,看見手語的力量

    聽不見、聽不清、聽不懂,這是全國上千萬聽障群體的真實寫照。由于聽力的局限,他們在求學、作業、就醫、出行等方面都面臨巨大挑戰。AI時代,全行業為資訊無障礙建設形成強大合力,但聽障群體依然面臨著冷冰冰的現實:專業語言服務人員的稀缺、溝通輔助器具的不完備,甚至來自社會的偏見及誤解…… “聾人只要通過助聽設 ......

    uj5u.com 2022-09-26 07:31:56 more
  • 關愛2700多萬聽障者,手語服務助力無聲交流

    如果有一天,周遭的世界突然變得很安靜,動聽美妙的音樂,在你看來只是沉寂;振奮人心的演講,對你而言只是默劇;大自然的千里鶯啼,于你來說也只是畫卷。你會不會感到害怕? 而有這么一群人,每天都在與這世界無聲交流著,他們就是聽力障礙人士。據2006年第二次全國殘疾人抽樣調查顯示,我國的聽力殘疾人約2780萬 ......

    uj5u.com 2022-09-25 08:06:58 more
  • C C++指標面試題零碎整理

    最基礎的指標如下: int a; int* p = &a; 答:p指向a的地址,&是取a的地址。*指的是指標中取內容的符號。 2.str[]和str*的區別: char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; c ......

    uj5u.com 2022-09-25 08:06:53 more
  • C C++指標面試題零碎整理

    最基礎的指標如下: int a; int* p = &a; 答:p指向a的地址,&是取a的地址。*指的是指標中取內容的符號。 2.str[]和str*的區別: char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; c ......

    uj5u.com 2022-09-25 08:06:41 more
  • 關愛2700多萬聽障者,手語服務助力無聲交流

    如果有一天,周遭的世界突然變得很安靜,動聽美妙的音樂,在你看來只是沉寂;振奮人心的演講,對你而言只是默劇;大自然的千里鶯啼,于你來說也只是畫卷。你會不會感到害怕? 而有這么一群人,每天都在與這世界無聲交流著,他們就是聽力障礙人士。據2006年第二次全國殘疾人抽樣調查顯示,我國的聽力殘疾人約2780萬 ......

    uj5u.com 2022-09-25 08:06:30 more
  • 本文相關主要記錄一下使用Hbuilder打包成蘋果IOS-App的詳細步驟

    ?介紹一下個人開發者賬號: 再說下什么是免費的蘋果開發者賬號,就是你沒交688年費的就是免費賬號,如果你想變成付費開發者賬號,提交申請付費就行,賬號都是一樣的賬號。 沒有賬號的點擊鏈接申請: 蘋果開發者賬號申請 登錄開發者中心developer.apple.com/account這個界面就是免費開發 ......

    uj5u.com 2022-09-24 10:28:11 more
  • 本文相關主要記錄一下使用Hbuilder打包成蘋果IOS-App的詳細步驟

    ?介紹一下個人開發者賬號: 再說下什么是免費的蘋果開發者賬號,就是你沒交688年費的就是免費賬號,如果你想變成付費開發者賬號,提交申請付費就行,賬號都是一樣的賬號。 沒有賬號的點擊鏈接申請: 蘋果開發者賬號申請 登錄開發者中心developer.apple.com/account這個界面就是免費開發 ......

    uj5u.com 2022-09-24 10:21:55 more