Git部署
一 git 配置多個ssh-key
生成私鑰和公鑰
ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/sgfoot-rsa #-t 選擇不同加密方式 #-C 您的郵箱 #-f 儲存位置 #~/..ssh 目標下多了兩個檔案sgfoot-rsa,sgfoot-rsa.pub
新增私鑰
ssh-add sgfoot-rsa #如果報:Could not open a connection to your authentication agent 可以使用ssh-agent bash解決以上錯誤 #可以使用ssh-add -l檢視私鑰列表 #可以使用ssh-add -D刪除私鑰列表
建立config檔案
# github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/sgfoot-rsa
- Host和HostName填寫git伺服器的域名。
- IdentityFile指定私鑰的路徑。
提供公鑰給第三方
cat sgfoot_rsa.pub
測試
ssh -T [email protected]
二 git使用方法
初始化
git init (對於新建資料夾,第一步需要初始化)
克隆一份專案
git clone ofollow,noindex" target="_blank">https://localhost/admin.git
新增檔案至工作區
git add --all #新增所有檔案 git add read.me #新增指定檔案 git add . 添加當前目錄下的所有檔案和子目錄 git add -u <省略則當前目錄> 所有tracked檔案中被修改過或已刪除檔案的資訊新增到索引庫。它不會處理untracted的檔案 git add -A 所有tracked檔案中被修改過或已刪除檔案和所有untracted的檔案資訊新增到索引庫。
提交到倉庫,並添空工作區
git commit -m “註釋語句”
git commit -am “添加註釋” #檔案之前已經提交過,但這次的改動還沒有進stage
新增遠端倉庫github
git remote add origin https://localhost/admin.git(需要關聯的git地址) #origin 是一個名字
提交到遠端倉庫
git push origin master #origin 是遠端名稱 #master 是分支名稱
上傳程式碼到GitHub遠端倉庫
git push -u origin master #可能需要輸入帳號和密碼
狀態,版本對比,編輯,撤銷,版本回退,刪除
檢視狀態
git status
對比版本
git diff HEAD -- readme.txt #HEAD代表當前倉庫裡的版本號 -- readme.txt是當前工作區的版本
丟棄工作區裡的檔案
git checkout -- readme.txt #一定要加-- 不然就是分支的切換了
檢視日誌
git log git log --pretty=oneline 先使用git reflog 檢視之前的log
版本回退
#退回上一個版本,HEAD加一個^,退回上2個就加2個^ git reset --hard HEAD^ git reset --hard HEAD~100 #退回前100個版本 #直接退回指定版本(git log顯示的md5字串,可以是前面5位短的) git reset --hard 3628164 #實現向未來版本回退 先使用git reflog 檢視之前的log git rest --hard xxxxx
刪除 & 撤銷
git checkout . #本地所有修改的。沒有的提交的,都返回到原來的狀態 git clean -n 列出將要刪除的目錄和檔案 git clean -df #d 代表目錄, f代表檔案
更新git
git pull
分支
新建一個分支
git branck developer
切換指定分支
git checkout developer
新建並切換分支
git checkout -b dev #相當上面兩個命令
合併分支
git checkout master git merge developer #必須先切換到master分支,然後再合併developer分支到master上
解決衝突
git status #both modified file 表示這個檔案有衝突 #Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容 #HEAD下面的內容是當前分支的內容 git add file git commit -m "解決衝突" 若分支上出現rebase 字元 git rebase --continue git rebase --abort #檢視整個git解決分支的路線 git log --graph --pretty=oneline --abbrev-commit
使用分支策略
- master做為穩定分支,僅用於釋出使用,不在此分支上做開發
- 建立一個dev開發分支,用於團隊開發使用的次分支,每個人再建立一個分支做為自己獨立開發的分支,時不時可以合併到dev分支上.
- 自已本地建立bug分支
- 還可以建立小隊的分支
-
團隊分支效果圖
忽略檔案
#只需要新建.gitignore檔案即可.裡面填內容
配置別名
讓git st 代替git status git config --global alias.st status $ git config --global alias.co checkout $ git config --global alias.ci commit $ git config --global alias.br branch git config --global alias.unstage 'reset HEAD' git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
命令列表
基礎命令 | 說明 |
---|---|
git init | 初使一個目錄為git專案,會生成一個.git目錄 |
git clone url | 克隆遠端專案 |
git add file | 新增檔案至暫存區 |
git add -u <預設當前目錄> | 所有tracked檔案中被修改過或已刪除檔案的資訊新增到索引庫。它不會處理untracted的檔案 |
git add -A <預設當前目錄> | 所有tracked檔案中被修改過或已刪除檔案和所有untracted的檔案資訊新增到索引庫。 |
git commit -m “備註不可少” | 提交到倉庫 |
git status | 檢視當前狀態 |
git log —pretty=oneline —abbrev-commit | 列出最短的日誌 |
處理命令 | 說明 |
---|---|
git log | 檢視提交的日誌 |
git reflog | 檢視未來和過去的日誌 |
git reset HEAD^ | 退回上一個版本 |
git reset HEAD~10 | 退回上10個版本 |
git reset hard [log id] | 退回指定版本 |
git rm file | 刪除檔案,需要提交 |
分支命令 | 說明 |
---|---|
git branch | 檢視所有分支 |
git branch -d 分支名 | 刪除分支 |
git branch -D [name] | 強行刪除分支 |
git branch -r | 檢視遠端分支情況 |
git branch -a | 檢視所有分支情況 |
git checkout 分支名 | 切換分支 |
git checkout -b 分支名 | 建立分支並切換此分支 |
git merge 需要合併的分支名 | 合併分支 |
git push origin :dev | 刪除遠端分支dev |
遠端倉庫命令 | 說明 |
---|---|
git remote add origin url | 新增遠端庫,origin是名稱,url是遠端目標 |
git remote | 檢視遠端庫列表 |
git remote -v | 檢視遠端庫詳細 |
git push -u origin master | 第一次使用,-u 將本地所有內容推到遠端庫上 |
git push origin master | 將本地所有內容推到遠端庫上 |
git push origin dev | 將本地的dev分支推到線上去 |
git pull origin master | 從遠端庫里拉取資源 |
git checkout -b dev origin/dev | 必須建立遠端origin的dev分支到本地 |
git branch —set-upstream branch-name origin/branch-name | 如果git pull提示“no tracking information”,則說明本地分支和遠端分支的連結關係沒有建立 |
標籤命令 | 說明 |
---|---|
git tag | 檢視標籤列表 |
git tag v1.0 | 在當前分支下最新的版本上打了一個v1.0 標籤 |
git show v1.0 | 檢視標籤資訊 |
git tag -a v0.1 -m “version 0.1 released” 3628164 | 在指定的logid上打上標籤 |
git tag -s v0.2 -m “signed version 0.2 released” fec145a | 用私鑰簽名一個標籤 |
git tag -d v1.0 | 刪除v1.0標籤 |
git push origin tagname | 推送標籤 |
其它命令 | 說明 |
---|---|
git config —global color.ui true | 打上顏色 |
本文來自雲棲社群合作伙伴“開源中國”
本文作者:Ocean_K