GIT和GitHub的使用總結
阿新 • • 發佈:2018-12-03
目錄
- GIT初始化設定:
- GIT基本操作
- GIT分支操作
- GIT標籤操作
- Github同步原作者程式碼
- GIT多人協作的工作模式
- GIT同時關聯碼雲Gitee和GitHub倉庫
- Github 解決敏感配置檔案上傳問題
- .gitignore檔案忽略原則
- 搭建git私服,以ubuntu為例
Git的官方網站:http://git-scm.com
GIT初始化設定:
- 建立金鑰
ssh‐keygen ‐t rsa ‐C "[email protected]"
- 新增遠端倉庫
新增遠端origin庫關聯
git remote add origin [email protected]:lingcoder/xxx.git
檢視遠端倉庫
git remote -v
刪除遠端origin庫的關聯
git remote rm origin
- 使用者名稱郵箱配置
全域性配置
git config --global user.name "lingcoder"
git config --global user.email "[email protected]"
git config --list
專案單獨配置(在專案根目錄下)
git config user.name "lingcoder"
git config user.email " [email protected]"
git config --list
- Clone遠端倉庫
git clone 專案地址
- 建立本地倉庫
git init
- 自定義操作
讓Git顯示顏色,會讓命令輸出看起來更醒目 git config ‐‐global color.ui true 自定義git命令,以簡化"git status"成"git st"為例: git config ‐‐global alias.st status 自定義日誌顏色 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 lg
GIT基本操作
- 新增到暫存區區
表示新增所有內容
git add -A
表示新增新檔案和編輯過的檔案不包括刪除的檔案
git add .
表示新增編輯或者刪除的檔案,不包括新新增的檔案
git add -u
強制新增一個被.gitignore檔案忽略的檔案的版本庫
git add ‐f [檔名]
- 提交
git commit`
- 刪除
從版本庫刪除某個檔案
git rm [檔名]
- 版本回退
撤回到某個版本
git reset --hard [提交ID]
檢視過去的提交歷史
git log
檢視所有的提交歷史
git reflog
- 撤銷修改
讓file回到最近一次 "git commit" 或 "git add" 時的狀態
git checkout -- [檔名]
可以把暫存區的file修改撤銷掉(unstage),重新放回工作區
git reset HEAD [檔名]
GIT分支操作
- 建立分支
建立一個dev分支並且切換到dev分支
git checkout ‐b dev
建立dev分支
git branch dev
切換到dev分支
git checkout dev
建立遠端origin的dev分支到本地
git checkout ‐b dev origin/dev
檢視分支
git branch
分支命名規範: issue-100 bug修復分支 feature-sms sms功能分支
- 分支合併
合併dev到當前的分支
git merge dev
合併分支,並且禁用 Fast forward
git merge ‐‐no‐ff ‐m "merge with no‐ff" dev
Fast forward模式: Git在merge時生成一個新的commit,以便於從分支歷史上就可以看出合併分支資訊
- 推送分支
當前master分支推送到遠端
git push ‐u origin master
繫結分支
將本地的dev分支和遠端的origin的dev分支繫結
git branch ‐‐set‐upstream dev origin/dev
以後就可以直接pull了
git pull
- 分支刪除
刪除dev分支
git branch ‐d dev
強行刪除
git branch ‐D dev
- stash功能
把當前的工作狀態儲存下來,一邊後面恢復,包括index區。
git stash
把當前的工作狀態儲存下來,一邊後面恢復,包括index區。
git stash list
恢復statsh內容,但是不刪除statsh
git stash apply
恢復指定的stash
git stash apply [email protected]{0}
刪除stash內容
git stash drop
恢復同時刪除stash內容
git stash pop
GIT標籤操作
- 本地操作
檢視分支
git tag
給當前分支打標籤
git tag
給某個提交打標籤
git tag [標籤名] [提交ID]
建立帶有說明的標籤,用 -a 指定標籤名, -m 指定說明文字
git tag ‐a [標籤名] ‐m "第一個正式版本" [提交ID]
檢視標籤說明
git show [標籤名]
刪除標籤
git tag -d [標籤名]
- 遠端操作
標籤推送
git push origin [標籤名]
推送全部尚未推送到遠端的本地標籤:
git push origin ‐‐tags
刪除遠端標籤
1. 先刪除本地標籤
git tag -d [標籤名]
2. 再推送遠端
git push origin :refs/tags/[標籤名]
Github同步原作者程式碼
1. 檢視遠端狀態
git remote -v
2. 新增原作者的遠端倉庫到remote
git remote add upstream 原作者遠端倉庫地址
3. 同步fork
git fetch upstream
4. 切換到本地主分支
git checkout master
5. 把 upstream/master 分支合併到本地 master
git merge upstream/master
6. push到遠端倉庫
git push origin master
7. 解決衝突
直接編輯衝突檔案,然後提交更改重新push即可
GIT多人協作的工作模式
1. 首先,試圖推送自己的修改
git push origin branch-name
2. 如果推送失敗,則因為遠端分支比你的本地更新,需先試圖合併
git pull
3. 如果合併有衝突,則解決衝突,並在本地提交
4. 沒有衝突或者解決掉衝突後,再推送就能成功!
git push origin branch-name
如果"git pull"提示“no tracking information”,則先命令繫結關係
git branch --set-upstream branch-name origin/branch-name
GIT同時關聯碼雲Gitee和GitHub倉庫
- 刪除已有的預設遠端庫:
git remote rm origin
- 關聯碼雲的遠端庫
git remote add [遠端庫別名] [email protected]:xxx/xxx.git
- 關聯GitHub遠端庫
git remote add [遠端庫別名] [email protected]:xxx/xxx.git
- 檢視遠端庫資訊
檢視所有遠端庫資訊
git remote ‐v
- 分別推送到github和gitee
以別名github為例,推送到GitHub,使用命令:
git push github master
以別名gitee為例,推送到碼雲,使用命令:
git push gitee master
至此,我們的本地庫就可以同時與多個遠端庫互相同步
Github 解決敏感配置檔案上傳問題
- 將真正的config檔案加入.gitignore,然後推送一個基本的config_example檔案
- push 結束後,再把 config_example 新增到 .gitignore 中。
- 經典情景: 別人先clone 你的專案,把 config_example 檔案 pull 下來後,複製一份再重新命名為config,根據自己的環境稍加修改config檔案。然後把兩檔案都新增到.gitignore 中。以後push 則不會再對遠端倉庫造成影響。
.gitignore檔案忽略原則
- 忽略檔案的原則:
1. 忽略作業系統自動生成的檔案,比如縮圖等;
2. 忽略編譯生成的中間檔案、可執行檔案等;
3. 忽略你自己的帶有敏感資訊的配置檔案,比如存放口令的配置檔案。
- 檢查檔案忽略情況
git check‐ignore ‐v [檔名]
搭建git私服,以ubuntu為例
- 基本使用
1. 安裝git:
sudo apt-get install git
2. 建立一個git使用者,用來執行git服務:
sudo adduser git
3. 建立證書登入:
收集員工公鑰`id_rsa.pub`檔案,匯入到`/home/git/.ssh/authorized_keys`檔案裡,一行一個。
4. 初始化Git倉庫:
選定目錄作為Git倉庫,假定是`/srv/sample.git`,在`/srv`目錄下輸入命令:
sudo git init --bare sample.git
5. 把owner改為`git`
sudo chown -R git:git sample.git
6. 禁用shell登入: 編輯`/etc/passwd`檔案
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
7. 克隆遠端倉庫:
git clone [email protected]:/srv/sample.git
- 擴充套件使用