github小記

NO IMAGE

初次接觸git,這是一個新鮮玩意兒。展示一下我的成果吧。

  • ssh免密碼操作

首先在coding.net上面註冊了帳號以後,需要配置ssh免密碼操作。網上搜羅了一系列教程,配置完成後。在遠端部署了公鑰,但每次拉取程式碼或者上傳更新時還是需要輸入密碼。這使我煩惱不已,按照極客上面的教程來也是只能在git bash 一直開著的情況下可用。 一旦關掉就只能夠繼續輸密碼才能操作。然後我就想起了以前配置hadoop免密碼操作的步驟。
步驟如下:

 ssh-keygen -t rsa -C "email"

email填寫自己能使用的郵箱名稱
接下來是四個回車
使用ssh檢查

ssh -T [email protected] 

當執行完成這條命令時,會提示你成功的連線到了遠端倉庫
圖片描述

上面這個命令是通過ssh免密碼操作遠端倉庫的,若沒有這條命令就不能有相應的許可權,例如:在本地刪除專案後發現不能拉取遠端倉庫裡的專案。

  • 克隆專案到本地

這個操作的目的在於把遠端倉庫的專案克隆帶本地磁碟。

git clone   專案地址

圖片描述

這裡順便說一下,可能有的朋友不清楚遠端倉庫的專案地址。只要在遠端開啟相應的專案,選擇“程式碼”就會看到了,直接上圖:
圖片描述

  • 關於分支的:
    首先自己在使用 “git –help” 命令以後,檢視了git的大概使用方法找到branch的使用方法。
    branch_help

根據 git branch –create branchname 的方式建立了我的第一個分支“developer”。
不過隨著瞭解的加深通用的建立方式為:

git checkout -b developer master

即基於master分支建立developer分支,這樣的話個人也感覺這樣的建立方式更明瞭一些。

每次開發前需要做的是與遠端倉庫同步,從倉庫拉取程式碼到本地:

git pull或者git pull --rebase 
git pull = git fetch   git merge
git pull --rebase  = git fetch   git rebase

這裡的區別可以檢視這篇文章
由於開發的任務不允許在master上面進行的,所以就會涉及到合併分支的問題。在開發分支完成開發以後,提交到開發分支,再與主分支進行合併。

git add .  //提交到暫緩區;add後面的點前面必須有一個空格
git status  //此命令可在任意時候使用,它的作用在於檢視暫緩區的檔案及狀態
git commit -m "對本次提交做出更改註釋"  //提交到當前分支
git checkout master //切換回主分支
git merge --no-ff developer
/*合併開發分支,--no-ff引數的作用是執行正常的合併,若是沒有這個引數,是一種快進
式的合併,對於版本的演進不清晰。因為在使用--no-ff引數以後master合併developer分
支時會新建立一個節點,developer和master都指向它,而不是直接由master指向
developer*/
git push origin master //上傳更新到遠端倉庫
  • 衝突解決

但是有時候難免會發生衝突,有人在遠端提交了更新,而自己的本地對應檔案也作了一些修改,這時上傳(push)就會失敗,而且拉取(pull)也會失敗。這時候檢查循著錯誤提示本地的檔案,就會發現和自己儲存時的不一樣了:
push失敗

圖片描述

pull 衝突

圖片描述

衝突檔案內容

圖片描述

開啟衝突的檔案刪除點不需要的錯誤資訊,重新上傳就可以了。

  • 回滾操作

一些時候如果發現了重大的錯誤或者無法解決的衝突時,我們需要將專案回滾到以前的版本。

git log //檢視提交歷史

圖片描述

git reset --hard   7位提交版本號

回退到需要的版本後修改相應的內容,提交到當前分支,在切換到master分支,合併開發分支,提交,上傳就可以了。

git checkout master
git merge --no-ff developer //此時會出現衝突,然後刪除不需要的內容就可以上傳了。
git push origin master
git checkout "7位提交版本號"//暫時性的回滾,不會修改分支內容