Git整理

安裝 Git

  • windows :exe 全局變量添加,全局使用
  • linux : yum install git ; apt-get install git ;
  • mac : xcode 自帶,如果你卸載了 xcode 再使用git 會發現報錯 : 提醒你安裝 xcode-select —install

檢出倉庫

1 檢出方式 SSH
git clone username@host:/path/to/repository

ssh-keygen -t rsa -C "[email protected]”
密鑰類型:rsa
-c 郵箱
-f 指定 save file ,不輸入會提示存儲路徑,會車默認
這時候再回車是push 的密碼
id_rsa 和 id_rsa.pub

cat ~/.ssh/id_rsa.pub
設置到倉庫 的 SSH Key

Gitlab

2 檢出方式 Http/Https
git clone https:/path/to/repository.git

fetch/push 需要輸入賬號密碼,當然這種也可以設置賬號密碼

GayHub
$ touch ~/.git-credentials 
在此文件中添加https://{username}:{password}@github.com,驗證信息修改爲個人賬號密碼,支持多行以及不同網站,如gitlab.me,git.coding.net等。再次push就不再需要手動驗證了。

工作流

實際上,本地倉庫由 git 維護的三顆樹組成 ,
第一個是 Working Dir 工作目錄 ,放代碼 ,git-config文件
第二個是 Stage Index 索引/緩存區
第三個是 Commit History 提交區

理解 git commitadd

  • git addworking Dir -> Stage 緩存區 ;
  • git commitStage 提交到 -> 提交區
  • git push 將 提交區 -> master

git chekcout ,撤銷本地區 工作區的修改 ,所謂撤銷就是,將未被修改的文件 覆蓋,已經修改的文件,從哪兒撤銷,從 緩存區 Git撤銷相關

分支

命名規範(與分支管理規範相關)

  • develop/ release 發佈
  • feature 開發
  • hotfix 修改bug
  • 發佈

分支的一些命令:

1 git branch 查看分支 list

[root@VM_0_8_centos testGit]# git branch
* master

2 創建和切換
git checkout -b feature001
等同於
git branch feature001 && git checkout feature001

3 將本地分支推送到遠程分支

git remote -v

git remote set-url origin git@github.com:leon0204/testGit.git 

git push origin develop   將本地的 develop 分支 推送到線上分支 

在另外一個工作區 git pullbranch -a 就看到了 然後 checkoutdevelop ,然後 branch 也能看到了 。

4 【合併】無衝突

git checkout master
git merge feature/01/info_rebuild

5 【衝突解決】

branch a commit 
branch b commit 

git pull  
vim 衝突文件 head and >>> 再次 commit  push 

.gitignore 忽略

常見的一些平臺/語言下的 ignore 文件

***Windows ***
    Desktop.ini
    Thumbs.db

***Py***
    *.pyc   被調用 不需要再編譯  速度快
    *.egg   類似於 jar 包  配合 easy_install 

***Eclipse***
    .classpath
    .project
    .settings/

***Intellij***
    .idea/
    *.iml
    *.iws

***Mac***
    .DS_Store

***Maven***
    log/
    target/

注意,ignore 文件是需要在 ignore 內的文件提交到遠程版本庫之前提交,如果已經有了,則需要刪除版本哭的文件類型,再提交 ignore 纔會生效。

Commit 的規範

git commit -m “” / git commit 寫文本
規範:
* Added ( 新加入的需求 )
* Fixed ( 修復 bug )
* Changed ( 完成的任務 )
* Updated ( 完成的任務,或者由於第三方模塊變化而做的變化 )
* Mod ( 修改 )

https 方式 如何不在Push/Pull時輸入賬號密碼

1 生成ssh key  
ssh-keygen -t rsa -C youremail@email.com

2 複製  cat ~/.ssh/id_rsa.pub

3 修改成 ssh 方式   
ssh  git@github.com:leon0204/testGit.git 

GitFlow

分支狀態:
主要分支 (單獨)
1 masteralready-production
2 developnewest下次發佈的開發狀態

支援分支 (多個s)
- 1 特性 featuredevelop 分支 擴展出 分支 ,mergedevelop
- 2 releasebug 的時候,在測試環境中,從 develop 開一個分支出來,然後改完,mergemasterdevelop
- 3 Hotfix 立馬修復上線,從 maste r 分出來, merge 回去

AoneFlow

主幹分支、特性分支、發佈分支
master feature/001 release

  • 1 開始前,從master 創建 feature 分支 就是在 master 上面 開很多的 feature 分支 ==特性分支

  • 2 合併 feature 分支,得到 發佈 release 分支 公共分支

release/test分支對應部署測試環境,release/prod分支對應線上正式環境等等 適合美的你

  • 3 發佈到合併 發佈分支 release/test|/prod 到主幹 ,主幹添加標籤,刪除該發佈分支關聯的特性分支(節省空間)

oldM 老的手機站 oldwww 老的網站
這裏寫圖片描述

一些特殊情況

  • 分支工作區未提交 不想提交 但是要新開分支

我在寫一個新功能 假設我們是按照阿里的AoneFlow 分支模式來工作的,其實不重要,那我現在在,一個特性分支上修改我的這次新功能,xxxx寫了一天了,預計還要2天寫完,現在我不想commit ,但是這個時候 ,在master上有了一個緊急的bug ,我肯定是要切換回master,然後創建一個 feature ,GitFlow (按緊急程度或者 一個HotFix 或者一個release ,) ,

如果在feature 001 ,checkout master
就報錯 提示未commit ,我就不想commit ,

git stash 這個命令 相當於把 當前working Working Dir 工作目錄 push 到一個 satsh 中

check 到master ,branch -b  HotFix 101 ,add commit ck master ,merge hf 101 

ck 到 feature001 


git stash list 

 stash@{0}:xxx

git stash apply stash@{0}

git stash pop 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章