安裝 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 commit
、add
git add
從working Dir
->Stage
緩存區 ;git commit
從Stage
提交到 -> 提交區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 pull
,branch -a
就看到了 然後 checkout
到 develop
,然後 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 master
: already-production
2 develop
: newest
下次發佈的開發狀態
支援分支 (多個s)
- 1 特性 feature
從 develop
分支 擴展出 分支 ,merge
回 develop
- 2 release
修 bug
的時候,在測試環境中,從 develop
開一個分支出來,然後改完,merge
回 master
和 develop
- 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