git gui 學習


目的

自己以前使用過3,4個月的SVN,因為公司使用的是git,git gui.所以打算自學git gui,並記錄一下學習心得.^_^

 

原因

為什么不是學命令行而是用git gui呢.我覺得首先因為公司用這個........另外GUI操作起來確實比命令行簡單直觀.我覺得有時間去記命令行,不如把時間花到學其他東西上面.並且git不是很重要.我只要會簡單實用即可.所以沒必要一開始就學習命令行(其實是因為我比較懶 0.0 ).

因為重來沒有使用過git.所以可能文章會有一些錯誤,望諒解.

 

其他廢話.......

另外這篇文章不是教程,只是記錄我學習心得.

我不太喜歡嚴肅的教程,並且大家學習的時候並不總是一次就成功吧.

所以更喜歡記錄我的學習過程.....和一些奇妙的探索研究過程(坑爹過程)...

 

創建本地倉庫

我在F:\git-test\test1下創建了一個test1.txt,並在里面輸入了文字first test!

 

我想把這個test1文件夾下的所有東西進行版本控制,只要在test1文件夾下右鍵點擊git gui here.

 

然后在彈出的窗口中選擇創建新的版本庫.

 

此時會彈出一個窗口

 

我一開始以為是詢問我要把test1文件夾的版本控制倉庫設置在哪里.

我隨便選擇了一個文件夾以后發現並沒有對test1文件夾進行版本控制.而是對我選擇的那個文件夾進行了版本控制.........Σ( ° △ °|||)︴

所以此時我選擇目錄為test1文件夾.

 

 

我選擇test1這個文件夾做為倉庫.然后點擊新建按鈕.

 

 

然后發現test1文件夾下多了一個.git文件夾(是隱藏的),我覺得這里是儲存了一些git版本控制文件吧.

此時git gui畫面變化了

 

這里git gui顯示當前分支是master.我想是因為還沒有創建其他分支,所以默認應該就是master分支吧.

 到這里倉庫就創建好啦 ^_^.

 

提交

創建好倉庫之后我已經等不及想要提交前面第一次修改的txt文檔啦.

因為git gui已經列出了未緩存的改動.所以我們不用點擊"重新掃描"按鈕.如果以后更新了文件,這里就需要用git gui重新掃描了.

然后應該點擊"緩存改動"按鈕,把文件放到臨時的緩存區里.

再點簽名並完成提交描述並提交就OK啦.

 

其實這里我想插一句,這個環節git和SVN貌似有點區別,點緩存改動的時候文件被放到了緩存區里,這時是可以再把文件從緩存區里刪除的.如果把文件放到緩存區里以后再更新文件再緩存的話會覆蓋緩存區里的東西.也就是說我覺得緩存區里並沒有版本控制.就是簡單的覆蓋.只有把緩存區里的東西提交到倉庫才能版本控制...但是SVN好像就沒有緩存區(SVN我用的時間也不多..一直沒發現有緩存區)..點提交就直接上傳到SVN的倉庫里去了...這里有點區別...至於為什么要多設計一個緩存區呢....我也不明白...我覺得一般人點了緩存改動以后肯定會再寫描述並提交吧....好像沒什么人會把文件緩存了不放到倉庫里就結束了.... 0.0

另外因為版本庫里的更新是從緩存區里來的,所以如果緩存文件以后再更新文件,不緩存直接提交的話那版本庫里的文件和最新的文件不一樣的.還是因為這個道理,所以可以選擇緩存部分文件並提交.

好處在於我本地的配置環境和服務器的環境可能不一樣.我可以只把程序更新到版本庫,不把配置文件更新上去...

 

上傳

雖然git是分布式的....但是大家還是會選擇一個中央倉來儲存文件(坑爹啊這是)...

雖然github很火...但是我還是喜歡國內速度更快的oschina作為倉庫.(其實是因為他能免費創建私有項目...雖然github我也通過了學生認證..但是過半年后可能就要作廢了...)

我在oschina上創建了一個私有項目.我准備進行上傳...

oschina提示我們有SSH和HTTPS兩種上傳方式...其他教程我看都是SSH的方式...要添加公鑰什么的...所以我就采用HTTPS吧....(我就是要作死....)

此時點擊git gui上面菜單的remote遠程..我好像沒有添加過遠程服務器地址....git gui肯定不知道我要傳到oschina上...所以我憑借着我的直覺應該選擇"Add"按鈕.

不明白名字這里應該寫什么.....further action又是啥東西捏 ?_?

雖然我覺得這里further action應該選擇第2個選項...但是我就是要作死...看看有發生什么...(笑)

然后就沒有然后了................設置完成了...我應該點擊"上傳"按鈕,在"提交"按鈕的下方.....

 

 

然后就出現了一個我看不懂的界面=.=

經過0.1秒思考后我果斷點了"上傳"按鈕........

然后輸入賬號密碼(oschina的)....

竟然上傳成功了!!!!!!!!!!!!!!!!!!!

我好興奮....又修改了幾次文件並上傳了多次....

然后我發現每次上傳竟然都需要提供賬號密碼

難道HTTPS每次都需要賬號密碼嗎.....我去試試SSH吧.....git gui的幫助菜單里有show SSH key....

經過2小時的研究....終於得出結論........那就是.......我TM就是SB.....

我整整試了2小時!!!!!!!!!!!!!!!!!.....最后發現SSH提交確實不需要輸入賬號密碼....然后我想說的是經過這2小時的研究大家一定要注意的一個問題.....

 

那就是要好好看說明.......

部署公鑰不是SSH公鑰...添加了的話只能用只讀方式訪問項目!!!!!!!!!!!!!!!

 

添加SSH公鑰應該在SSH公鑰里添加!!!!!!!!!!!!!!!

 

 我的2小時就浪費在這上面了!!!!!!!!!!

添加完SSH以后就能方便的提交啦!

 

 

從服務器獲取更新

現在我來試試如何從瀏覽器獲取更新的文件...首先我去oschina通過網頁修改了txt文件....

打開git gui點擊重新掃描,發現沒有任何變化...果然是還沒從服務器獲取更新的原因所致.

點擊遠程remote,從..獲取(fetch).....然后git gui顯示獲取成功啦!!!!!!!!!!^_^

不要吐槽我把遠程服務器設置名為hello2.....-_-|||

然后點擊重新掃描發現還是沒反應,查看歷史也沒發現有最近版本的跡象.

然后我點擊合並(merge),本地合並.

系統提示合並到master分支.我想是因為我當前就在master分支的原因吧....下面要合並的版本里有很多選項,默認選擇的是追蹤分支....我也不知道那是什么意思....先不管他吧...我點"合並"按鈕.

提示成功了...

然后我打開文件發現txt的文字確實是變化啦!

看來我能做到在家里和在學校同步git啦....可以和SVN說拜拜啦...哈哈哈哈哈!

 

小問題

不過我到現在還沒明白從服務器獲取更新以后怎么看哪些文件變化了呢? 服務器獲取更新以后更新文件又是儲存在了哪里呢?

 --后來研究了會我發現在本地合並里有個圖示按鈕,點擊可以查看合並的具體細節,比如哪個文件要合並,合並前后文字分別是怎樣的..

 

倉庫搬家

本來我倉庫和工作區是在test1目錄下...我想把它刪掉,放到test2文件夾下怎么辦呢.....

經過我嘗試發現貌似有2種辦法...

第一種就是clone.....把項目從oschina上完整克隆到test2文件夾下就可以啦..然后刪除test1就行...但是這樣比較慢...

第二種我目前還沒發現什么問題...很簡單粗暴...直接把test1下所有文件(千萬記得.git)復制到test2目錄下就OK啦!!....這樣速度絕對最快....不過有沒有什么后遺症我目前還沒發現...貌似是可以使用的...畢竟整個git都搬過去啦...

 

分支

呃.....其實我SVN也沒用過分支....自己只寫過一點小玩意兒....一直沒嘗試過分支....現在來嘗試一下git的分支....看看git的分支是怎么玩的呢 o(≧v≦)o~~

 

新建分支

 在git gui點擊分支,新建,然后我輸入了一個新的分支名字:newbranch1.

點擊新建以后就新建了這個分支並且切換到這個分支的頁面了.然后我點"上傳"就在oschina自動創建了這個newbranch1分支!

 

我在newbranch1里新建了一個文件newbranch1.txt...然后正常提交上傳(前面的步驟差不多),oschina上的newbranch1就多了newbranch1.txt.

在oschina查看master分支后發現文件沒有變化.

 

切換分支

現在test1文件夾下是newbranch1的狀態...我想嘗試下切換到master的狀態..

點擊git gui"分支"菜單....發現並沒有切換分支類似的選項...好神奇.............那怎么辦呢?(其實checkout就是)

我還是點了"新建"按鈕..

發現本地分支里多了newbranch1....我想根據字面意思這里大概就是列出了所有本地分支吧...那我在"名字"那一欄什么都不輸入....然后再本地分支選擇"master"再點新建試試.

結果提示錯誤....

那我選擇"匹配跟蹤分支名字"選項,再點"本地分支","master",再點新建試試.

依舊是提示錯誤,提示"請選擇某個追蹤分支".

我看到追蹤分支選項里列出的都是服務器上的分支....看來這樣操作的話只能從服務器上克隆一個分支的文件並在本地新建一個分支...這並不是我想要的結果...所以新建選項不對...

 

那就試試checkout吧...

仔細研究后我發現了,是點擊分支菜單里的"checkout"選項,然后在本地分支里選擇"master"就可以切換到master分支啦!

 

分支合並

假如我現在的master分支就一個master.txt這么一個文件。。。

然后我去創建一個新的分支,叫做bug好了。。。

創建bug.txt增加一行文字,再為master.txt增加一行文字。。然后提交。。

再切換回master修改master.txt並提交

現在我想把bug分支合並到master上!

點擊git gui菜單上的合並-本地合並

點擊合並(merge)

然后git gui會提示合並有沖突。。。這是意料之中的。。因為master.txt中的文字在2個分支里是不一樣的,git也不知道怎么幫我們合並。。所以只能靠我們自己來解決這沖突

在沖突正文(就是顯示具體哪些文字沖突那里)那里右鍵可以選擇是使用遠程版本還是本地版本再或者使用更基礎的版本(就是沖突的內容全刪了)。。這樣就把沖突解決了。。就可以提交啦。

然后我們來看看文件變化

嗯。確實是合並成功啦!

哈哈哈哈。。git gui還是很好用的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM