Git遠程協作開發通用操作

很多版本控制器眼花繚亂,Snv,Git 等,我們下面來說一下Git的遠程協作開發的常用步驟

 

1、先說一下Git我們如何切換分支,首先切換分支時候要保證我們的代碼是最新的,要先更新我們本地代碼git remote update(也就是把遠程的分支上別人提交的新代碼下載到你的本地,當然你運行完可以看到你的工作空間的目錄文件或許已經改變),運行git  rebase orign/遠程本身,然後運行Git checkout 分支名稱

     總結一下就是三部,git remote update    -- >  git  rebase orign/遠程本身  -- >   git checkout 分支名稱 

     (值得注意的,這兩個詞命令有很多用法,這裏只說這兩種,若不夠自己的需求可以去深入研究版本控制的邏輯與原理,雖然你並不一定能搞明白)

 

2、在說一下提交代碼,當我們有些功能在本地編輯完成了,我們需要提交到遠端,要進行一下幾部的操作

      git remote update

      git add . (注意這個點,. 是提交你所有修改的文件《包括了你修改的地方與新建的文件,當然還有另外兩種用法,這裏只說一種》)

      git commit -m "提交的說明信息" (這一步可以和上一步合併,add是把你的改動放到暫存區,commit是把你的修改提交到本地倉庫,具體概念這裏不深究)

      git rebase origin/分支號  (注意斜槓這是和遠程的分支合併,把你本地倉庫的代碼與遠程分支合併,當然這一步有時候會產生衝突,衝突需要一行一行來解決,eclipse與idea會有自己的圖形界面來操作《左邊是你的代碼。中間是上一個版本的代碼,右邊是別人提交的與你衝突的代碼》,用到了merge等操作。具體,rebase這一步是否和remote update冗餘。這裏可以思考一下)

       git push origin 分支號   當然如果在上一步產生了衝突在解決完衝突後需要運行 git rebase --continue,之後再進行此步驟。

3、如果我們在操作過程中遇到了一些錯誤,Git會給出解決命令,按照操作一般可以解決問題,當然在新手的情況下可能盲人按摩,瞎摸一通而錯。

4、如果我們在修改時不知修改了那些文件,可以運行git  status 來查看,標紅的即是所改文件。

5、當然上面的一切我們需要申請賬號,並且clone項目,見下端:

     

第五步:git授權與clone工程

5.1、首先需要向公司申請git賬號

5.2、在你想要存放工程的目錄下打開git命令窗口(右鍵,Git Bash Here)

      賬號申請完成後需要在本地執行git相關命令,如下

        git config --global user.name "wb-*****"

git config --global user.email "*****@163.com"

ssh-keygen -t rsa -C "*****@163.com"

如圖:

 

5.3、執行完以上命令後會生成如下兩個文件,打開XXX.pub文件。將內容拷貝一下。粘貼到下圖中指定位置(看不清楚的話可以放大圖片)

 

 

5.4、將生成的祕鑰粘貼應用後,在本地執行如下命令

git clone http路徑

如果ssh克隆不好使,就是用http克隆

 

 

6、如果辦公電腦不可抗力出現損壞。更換電腦時

你可能會發現新的git如論什麼操作都需要輸入用戶名密碼,這時候需要打開cmd命令(注意不是git命令), 設置用戶名與密碼,

$ git config --global user.name "Your Name" ,$ git config --global user.email "[email protected]" ,

設置完後可以查看一下git的配置,會發現已經持久化賬號和密碼,再重新再項目文件打開git窗口,發現已經不需要輸入username與email了

 

7、有時候用戶名密碼在更新代碼或提交代碼時需要頻繁合併,我們需要持久化一下用戶名密碼,命令如下:

   git config --global credential.helper store

-(如果本地的修改沒有add到緩存,而且像還原回之前的樣子,那麼只需要 git checkout .  可以將本地代碼還原到上個版本)

 

8、我們可以將多次提交commit合併成一次,我們在提交代碼時,一個需求有可能提交了N多次,而且都是比較小的改動,

這時候可以用git rebase -i HEAD^^^^^命令來融合多個提交(^代表了有多少個commit),進入編輯模式,我們要改的第一行我們用pick命令,

相鄰下面幾行用s命令,保存退出後再次進入編輯模式,保留第一行的提交說明,下面幾行去掉就OK(爲了美化git提交記錄不擇手段)

 

      當然這些操作班組最基本的需求是沒問題,但是大家有時候可能會苦惱一個版本控制器爲何如此錯綜,但是事實就是這樣,可能國內的情況很一下掌握版本控制的本質細節原理,但是其確實值得深究,畢竟廣大碼農現在不可能離開它。

 

下面是git目錄接口及作用:

.git文件夾目錄結構

1 、hooks文件夾:

    這個目錄存放一些shell腳本,可以設置特定的git命令後觸發相應的腳本;

    在搭建gitweb系統或其他git託管系統會經常用到hook script。
2、info文件夾:

     包含git倉庫的一些信息
3 、logs文件夾:

     保存所有更改的引用記錄,繼續打開logs文件夾,有refs文件夾和HEAD文件

    請看下圖中
(1)HEAD文件

        主要記錄每次的變更操作,所有類型的變更都會記錄的哦,

         git reflog命令查詢出的列表就是HEAD中存儲的列表

(2)繼續打開refs文件夾,可以看到heads文件夾、remotes文件夾和stash文件

    I : stash文件存儲的是所有你使用git stash命令暫存的記錄,是一個列表。使用git stash list時,查詢出的列表就是從stash中取出來的。

    II:heads文件裏面存儲的是一系列的本地分支的對象,每個對象的文件名就是本地的一個分支名,使用git branch查看本地分支命令時,查詢出的所有本地分支就是取的heads文件夾下所有文件的名稱。

    III:remotes文件夾裏存儲的是遠端的一系列分支的對象,每個對象的文件名稱就是遠端的一個分支名稱,使用git branch -a查看遠端分支命令時,查詢出的所有本地分支就是取的remotes文件夾下所有文件的名稱。

4、objects文件夾

該目錄存放所有的Git對象,對象的SHA1哈希值(一共40位)的前兩位是文件夾名稱,後38位作爲存在相應文件夾下對象的文件名。

比如0b這個文件夾,它裏面有一系列git對象(也就是文件),裏面所有文件的38位的名稱加上0b,就組成原來的40位的哈希值了。

更近一步說,我們每次提交新文件到git上時,這時會根據該文件內容計算生成一個40位的哈希值,假如生成的是0c7bcc3f8f1c5311d06e3067f7f7dddecb8668fe,這個文件的存儲方式就是先截取0c作爲文件夾名稱,然後後面的38位7bcc3f8f1c5311d06e3067f7f7dddecb8668fe作爲文件名稱,存儲在0c文件夾下。

如果這時你又提交了一個文件或者修改了一個文件碰巧又生成一個以0c開通的哈希值,那麼這個時候就會直接截取該哈希值的後38位作爲該次生成的git對象的文件名,存儲在原來已經存在的0c文件夾下。

5、refs文件夾

(1)heads文件夾

        該文件夾存儲的是所有的本地分支文件,每一個本地分支文件中,存儲的是一個哈希值,每一次commit都是生成一個對應的哈希值,然後用這次新生成的哈希值,替換掉原來這個分支文件中的哈希值。

如下三張圖,紅色的代表新提交的三個文件,然後

    
(2)stash文件

        該文件夾是使用git stash命令時,會將生成的git對象的哈希值存儲到stash文件裏,更進一步說stash文件中,就存了一個40位的哈希值。對應的git對象在objects文件夾裏。使用git stash pop時,會先去stash文件中,找到該哈希值(或者也可以認爲是指針),然後到對應的objects文件夾下,查找對應的git對象,將其中的數據取出來,轉換成我們能看懂的代碼

        I、繼續打開tags文件夾

            當使用git tag v1.0給當前分支,打上標籤時,就會在tags文件夾下,生成對應文件,文件裏存儲的是當前分支所對應的哈希值,以後就可以使用v1.0這個標籤來代替分支名稱,通常發佈穩定的線上版本時,使用這種做法。方便以後查詢,因爲使用標籤容易記,更簡潔。

6、COMMIT_EDITMSG文件提交的是最近一次提交的描述信息
7、 config:這個是GIt倉庫的配置文件
8、 description:倉庫的描述信息,主要給gitweb等git託管系統使用
9、 index:這個文件就是我們前面提到的暫存區(stage),是一個二進制文件
10、HEAD文件裏面只存儲了當前分支的關聯

11、記住賬號密碼 git config --local credential.helper store

12、比如說交接工作時候換了電腦,同事的git賬號信息和你的信息會有衝突,需要切換成你的信息,可以用以下命令,git config --global user.name "YOURUSERNAME" git config --global user.email "YOUREMAIL",(查看git config user.name git config user.email),有時候保存了用戶名與郵箱,生成了私鑰,還是無法操作項目

那麼重新克隆項目 git clone https://用戶名@rdc.hand-china.com/gitlab/項目.git

克隆時候加上自己的用戶名就OK了,注意此操作相當於將代碼fork了一份(切了個分支,拷貝了一份),在更新代碼時候會發現更不下來,應爲這個克隆下來的分支與主幹沒有關係,可以用下面方法解決,刪除電腦中原用戶的憑證

 

 

發佈了26 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章