日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Goland使用Git的這個幾個高級技巧,效率提升10倍

來源: 責編: 時間:2023-12-01 17:12:41 225觀看
導讀簡介Git作為一個版本控制(version control)的工具,已經有近20年的歷史。2005年的時候,Linux Torvalds和其他linux開發者在使用另一款版本控制工具BitKepper,但是這款軟件是收費的,其中一個開發者逆向破解了BitKeeper,與BitKe

簡介

5SE28資訊網——每日最新資訊28at.com

Git作為一個版本控制(version control)的工具,已經有近20年的歷史。2005年的時候,Linux Torvalds和其他linux開發者在使用另一款版本控制工具BitKepper,但是這款軟件是收費的,其中一個開發者逆向破解了BitKeeper,與BitKeeper公司發生了利益沖突,導致他們不能再使用BitKeeper。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

于是Linux Torvalds很快開始開發Git。很快很多的志愿者加入了Git的開發,正式由于Git的出現,后面才出現了諸如Github這樣的開源社區。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

如今,Github和Gitlab是企業中使用最多的項目管理工具。它們的共同點都是基于Git。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

Git工具雖然強大,但是只有你對它有更多的使用和了解,才會真正感知到它的強大之處。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

為了能夠更好的理解和使用Git,我們通過下面的故事來感受。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

在一個很普通的早上,A同學騎著單車,準備去公司上班。A同學是一名女生,職業是go開發者。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

9點左右的時候,A同學到了公司,稍微休息了幾分鐘,就開始投入到今天的工作。今天她要開發一個新的項目,所以她第一件事情就是拉取這個新項目到自己的goland里面。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

下面是她得到的git地址5SE28資訊網——每日最新資訊28at.com

https://github.com/xxd/go-git.git

然后她到goland,點擊File->New->Project from version control->Git,然后把這個地址復制到如下輸入框5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

在Directory 后面輸入項目要保存的位置,點擊Clone。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

如果你覺得需要點很多次,才會出現 Clone 的窗口,你可以在goland的 keymap 里面搜索 Clone ,選擇 Repository 里面的Clone,然后給他一個快捷鍵,比如 alt+g5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

很快項目就拉了下來。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

A同學接著以Debug方式啟動了項目。發現項目運行正常。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

然后她準備開發用戶管理模塊的功能,比如注冊用戶,查詢用戶,禁用用戶。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

于是A同學按住 alt+n 創建了一個 user 包,接著再按 alt+n ,在user包里面創建了 user.go 文件,在A同學輸入完user之后,goland會提示她是否把這個文件加入到這個項目的 Git 倉庫,選擇Add ,當然要把自己寫的文件加入到項目的 Git 倉庫,因為后面我們要提交這個文件到項目的遠程倉庫。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

此時,我們已經見到了Git的3個概念。5SE28資訊網——每日最新資訊28at.com

第一個是遠程倉庫(Repository),也就是項目代碼在Github上被管理的地方。5SE28資訊網——每日最新資訊28at.com

第二個是工作區(working dir),就是我們本地存放代碼的位置。在Github上的Repository和我們本地的項目代碼位置形成了一對remote和local的關系。我們一般把Github上的倉庫叫做遠程倉庫,本地的就叫做本地倉庫。5SE28資訊網——每日最新資訊28at.com

第三個就是分支(branch),我們默認拉的是master分支。對于分支的名字,最出名的除了master(主分支),develop(開發分支),release(發布分支),staging(預發布分支)。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

分支是Git的主角,后面的很多操作都會出現他的身影。我們也可以新增自定義的分支,比如feature-2023-11-11 表示2023-11-11要發布的特性的開發分支。有時候在分支上也會帶上自己的名字,比如feature-swk表示是孫悟空的開發分支。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

目前對于Github來說,默認的分支已經是main,而不是之前的master5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

由此,我們知道一個Repository可以有多個分支,那么同時對于本地來說,也可以有多個對應的分支,區別是一個是remote的,一個是local的。5SE28資訊網——每日最新資訊28at.com

剛才A同學點擊Add的操作,實際上對應了如下Git命令5SE28資訊網——每日最新資訊28at.com

git add user.go

add的文件和沒有add的文件goland是給了不同的顏色來區分的。就像是被add的文件在城墻里面,沒有被add的文件在城墻外面是完全不同的世界了。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

上面只是一個可以被看到的區別,那么本質是什么呢?5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

這里就需要上一張表達本質的圖5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

上面的圖說明了 git add 命令的本質效果是工作區的文件被放入到了staging area,可以理解為一個預備的文件區域。就比如你去商場買東西,會拿一個購物車,把自己喜歡的商品先放入到購物車的過程。5SE28資訊網——每日最新資訊28at.com

git add 也被解釋為 staging the changes。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

既然是購物車,到了后面我們也可以將購物車的某個商品拿出去,然后到收銀臺進行支付。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

大概過了一個小時,A同學把用戶注冊的功能基本上寫好了,于是她開始自己用postman測試下自己的代碼,過了一會,她發現沒有問題,于是她開始按ctrl+k(k音同commit的c的發音)5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

在這個窗口,Default Changelist 列出了你已經 git add之后的文件,哪些是被修改過的,當然第一次 git add的文件都是修改過的。5SE28資訊網——每日最新資訊28at.com

然后是填寫提交信息的 Commit Message 框,比如這里A同學寫的是注冊用戶,注意 Commit Message 是commit之前必須要填的,不填的不讓commit。5SE28資訊網——每日最新資訊28at.com

如前圖,commit的內容就是我們之前staging area里面的內容5SE28資訊網——每日最新資訊28at.com

我們一般是直接點擊Commit右邊的倒立三角形,選擇Commit and Push。然后就會彈出一個push框,最后點擊push,你寫的代碼就會在Github上對應的分支看到了。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

如果你是點擊的commit,后面push的時候也可以按ctrl+shift+k來push代碼。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

commit 和 push的區別:commit 是把變更放到本地的repository,push 是把前面commit的變更全部放到remote的Repository5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

到此,一個企業里面的提交代碼的git過程就結束了。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

實際上,隨著業務的發展,我們會不斷的重復上面這個基本的過程,也就形成了一次次的提交歷史。我們可以到如下圖的地方查看提交歷史5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

如上圖,goland提供了Log列,讓我們查看提交歷史,同時可以看到branch,user,date 3個下拉框來過濾我們想要看的歷史記錄。5SE28資訊網——每日最新資訊28at.com

當我們點擊某一次提交,右邊會出現這次提交的文件,同時我們選中一個文件,按ctrl+d可以對比2次提交的這個文件的差異。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

如何快速丟棄本地的改變(在staging之前)

5SE28資訊網——每日最新資訊28at.com

注意:Git是基于改變的而不是基于文件來staging的。5SE28資訊網——每日最新資訊28at.com

比如A同學剛才已經提交了user.go文件,第二天,她又改了這個文件1個小時,發現需求變了(需要從開始的地方寫),但是自己在user.go里面已經寫了很多的代碼,雖然可以按ctrl+z回退,但是想到需要按很多次ctrl+z就很麻煩。5SE28資訊網——每日最新資訊28at.com

package usertype User struct{  Name string  Age int  //下面是很多新加的代碼  //new  //舊的代碼  //old  //新的代碼+舊的代碼  //new+old}

這類情況可以使用如下命令5SE28資訊網——每日最新資訊28at.com

git checkout user.go

執行這個命令,可以讓user.go回到Repository的狀態,也就是上次提交后的狀態。這樣就不需要重復按ctrl+z(按多了,自己也不知道該到什么時候的代碼了)5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

恢復已經staging的改變

5SE28資訊網——每日最新資訊28at.com

可以使用reset命令5SE28資訊網——每日最新資訊28at.com

git reset HEAD user.go

5SE28資訊網——每日最新資訊28at.com

這樣會清除剛才staged的改變(基于改變而不是文件),但是工作區的代碼仍然是不變的5SE28資訊網——每日最新資訊28at.com

package usertype User struct{  //新加的注釋  Name string  Age int}

5SE28資訊網——每日最新資訊28at.com

要讓工作區的代碼回到如下5SE28資訊網——每日最新資訊28at.com

package usertype User struct{   Name string  Age int}

5SE28資訊網——每日最新資訊28at.com

還需要執行如下命令5SE28資訊網——每日最新資訊28at.com

git chekout user.go

5SE28資訊網——每日最新資訊28at.com

如何快速取消某一次commit

5SE28資訊網——每日最新資訊28at.com

有時候,你commit 才發現這次提交時有問題的,你想取消這次提交的變更。5SE28資訊網——每日最新資訊28at.com

使用如下命令5SE28資訊網——每日最新資訊28at.com

git revert HEAD

5SE28資訊網——每日最新資訊28at.com

HEAD 表示是最新一次提交,如果你想取消更久之前的commit,可以帶上每次提交的hash值5SE28資訊網——每日最新資訊28at.com

git revert  47944b4b9273d756e382c20e259bbdbedd1a6d98

5SE28資訊網——每日最新資訊28at.com

如何查看每次commit的hash值呢?5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

在Log里面,選中某次commit,然后右擊,點擊 Copy revision number5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

注意:上面的git revert只是取消commit,在git log里面取消的commit仍然是存在的,并沒有被刪除5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

如何刪除一次commit

5SE28資訊網——每日最新資訊28at.com

當我們發現某次提交是錯誤的,我們想刪除這次提交(在提交歷史里面看不到這個提交),使用如下命令5SE28資訊網——每日最新資訊28at.com

git reset --hard  47944b4b9273d756e382c20e259bbdbedd1a6d98

5SE28資訊網——每日最新資訊28at.com

這個命令會做3個事情:5SE28資訊網——每日最新資訊28at.com

把HEAD(最新的一次提交)設置為指定的那次提交,比如目前提交了3次,分別為A->B->C,執行 git reset B,就會把HEAD從C變為B5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

  • 把staging area 設置到指定的那次提交的staging area 的時候

5SE28資訊網——每日最新資訊28at.com

  • --hard則表示會把工作區的代碼設置到指定的那次提交的代碼

5SE28資訊網——每日最新資訊28at.com

在goland里面,可以通過選中某一次提交,右擊選擇 Reset Current branch to here。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

注意:對本地的分支進行 git reset 是沒有風險的,因為即使操作錯了,仍然可以使用 git checkout 回到最新的代碼。5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

什么時候用rebase,什么時候用merge

5SE28資訊網——每日最新資訊28at.com

簡單來說,當你需要把remote的Repository的更改應用到本地的分支,使用rebase;但是如果你的本地分支是和別人共享的,那么不要使用rebase,因為rebase會重寫commit的歷史。5SE28資訊網——每日最新資訊28at.com

merge 示意圖

圖片圖片5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

現在A同學和B同學在同時開發這個項目,在第一個白色圓圈到第二個白色圓圈這個階段你們都是使用main分支開發的;這時候A同學需要開發一個feature,因此從第二2圓圈開始checkout出一個分支叫feature;B同學仍然在main分支7開發。5SE28資訊網——每日最新資訊28at.com

過了幾天,A同學提交了3次代碼(3個綠色圓圈),B同學提交了2次代碼(2個藍色圓圈)。5SE28資訊網——每日最新資訊28at.com

這時候A同學需要使用到B同學開發的內容,A同學使用merge,會產生一個新的commit(第四個綠色圓圈)5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

rebase示意圖

圖片圖片5SE28資訊網——每日最新資訊28at.com

如果A同學使用rebase,那么會把自己的提交放在B同學之前2次提交的前面。但是不會產生新的commit(commit個數和rebase之前是一樣的)。這樣當我們查看歷史記錄的時候提交節點之間的關系更加線性。5SE28資訊網——每日最新資訊28at.com

在goland如何合并代碼呢?5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

圖片圖片5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

第一步:點擊右下角當前的分支5SE28資訊網——每日最新資訊28at.com

第二步:選擇其中一個遠程的分支5SE28資訊網——每日最新資訊28at.com

第三步:點擊 Merge into Current5SE28資訊網——每日最新資訊28at.com

結果:會把選擇的分支的更改合并到當前分支5SE28資訊網——每日最新資訊28at.com

Rebase Current onto selected:會把當前分支的更改合并到選擇的分支5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

A into B 表示B會有新的變化 ;A onto B 表示A會有新的變化5SE28資訊網——每日最新資訊28at.com

5SE28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35852-0.htmlGoland使用Git的這個幾個高級技巧,效率提升10倍

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 系統調用:計算機中的“服務員”

下一篇: 信息系統大模型助手小分隊-基于好采項目推進大模型應用在之家的快速落地

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • Windows 11發布,微軟一改往常對老機型開放的態度

    距離 Windows 11 發布已經過去一周,在過去一周里,很多數碼愛好者圍繞其對 Android 應用的支持、對老機型的升級問題展開了激烈討論。與以往不同的是,在這次大
  • onebot M24巧系列一體機采用輕薄機身設計,現已在各平臺開售

    onebot M24 巧系列一體機目前已在線上線下各平臺同步開售。onebot M24 巧系列采用一體化輕薄機身設計,最薄處為 10.15mm,擁有寶石紅、午夜藍、石墨綠、雅致
Top 主站蜘蛛池模板: 博湖县| 兴安县| 商南县| 缙云县| 筠连县| 张家界市| 蓝山县| 康平县| 房山区| 丁青县| 宾川县| 微山县| 鄂伦春自治旗| 塔城市| 邵东县| 铅山县| 宕昌县| 宁海县| 共和县| 大田县| 岐山县| 广平县| 贺兰县| 定襄县| 民县| 漳平市| 邓州市| 三穗县| 铜川市| 庆阳市| 普兰县| 广河县| 体育| 大厂| 平安县| 灵山县| 南皮县| 北票市| 南陵县| 额尔古纳市| 绥芬河市|