1. 程式人生 > >GIT和GitHub的使用總結

GIT和GitHub的使用總結

目錄


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倉庫

  1. 刪除已有的預設遠端庫:
git remote rm origin
  1. 關聯碼雲的遠端庫
git remote add [遠端庫別名] [email protected]:xxx/xxx.git
  1. 關聯GitHub遠端庫
git remote add [遠端庫別名] [email protected]:xxx/xxx.git
  1. 檢視遠端庫資訊
檢視所有遠端庫資訊
git remote ‐v
  1. 分別推送到github和gitee
以別名github為例,推送到GitHub,使用命令:
git push github master

以別名gitee為例,推送到碼雲,使用命令:
git push gitee master

至此,我們的本地庫就可以同時與多個遠端庫互相同步

Github 解決敏感配置檔案上傳問題

  1. 將真正的config檔案加入.gitignore,然後推送一個基本的config_example檔案
  2. push 結束後,再把 config_example 新增到 .gitignore 中。
  3. 經典情景: 別人先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
  • 擴充套件使用
  1. 管理公鑰
    Gitosis
  2. 管理許可權
    Gitolite