Git 版本控制

Git 版本控制

1.Git的安裝 和 基本配置

1.1 安裝

Linux安裝php

二進制包(在線)  
yum -y install git    //RedHat系列  
apt-get git install     //Debian系列  
源碼包(官網下載)

Windows安裝html

Git在Windows使用模擬環境msysgitgit

下載地址:  
[https://git-for-windows.github.io/](https://git-for-windows.github.io/)  
注意:若是想讓windows做爲git服務器則須要搭建ssh服務。

1.2 配置

不管Linux仍是Windows,安裝完成後都要初始化
git config [--global] user.name "Your Name"
git config [--global] user.email "your@email.com"

中括號內的參數:
    --local 本地
    --system 系統
    --global 全局
    無參,則爲當前庫配置身份

2. Git經常使用操做

2.1. 生成新的版本庫

  1. 新建空目錄
  2. 進入該目錄---單擊右鍵---選擇Git Bash Here
  3. 彈出git的命令行工具
  4. 初始化該目錄爲版本倉庫,鍵入 git init
  5. 顯示 Initialized empty Git repository in xxxxxx
  6. ls -a 查看該目錄下出現.git的隱藏目錄,即版本庫
  7. 初始化完成

2.2.添加文件到版本庫

  1. 新建文件 1.txt
  2. 查看當前版本狀態

    git status #查看當前版本狀態github

  3. 紅字提示有文件未跟蹤(未加入版本控制)
  4. 在工具內輸入如下,添加文件至版本庫:windows

    git add 1.txt緩存

    添加文件至緩存區

    git commit -m "描述"bash

    提交文件至版本庫

    git add newfile1 newfile2 ...服務器

    多文件添加

    git commit -m "描述"ssh

    將緩存區的屢次添加一次提交

    ps:
    git add .工具

    添加全部改動過的文件到緩存區

    git add --all

    添加全部文件到緩存區

  5. 執行完後,提示提交完成.
  6. git status 提示

nothing to commit, working directory clean

  1. 至此最簡單的添加文件到版本庫已完成

2.3.查看文件修改狀態相關

git status
# 查看當前版本狀態(是否修改)

修改文件測試如下 :

git diff            # 工做區 與 緩存區的區別
git diff --cached   # 緩存區 與 版本庫的區別
git diff HEAD       # 工做區 與 版本庫的區別

Git日誌,分析日誌構成 :

git log
# 查看提交歷史
git log --oneline
# 以簡短的方式查看提交日誌

2.4. 版本回退

git reset --hard HEAD
# 將當前版本重置爲HEAD(一般用於清空緩存區,或merge失敗回退)

git reset --hard HEAD^      # 回退上一個版本
git reset --hard HEAD^^  # 回退上兩個版本
git reset --hard HEAD~n  # 回退上n個版本

git reset --hard <commitid>
# 回退到指定版本,commitid根據log獲取

2.5. 行爲日誌

git reflog
# 行爲日誌,顯示全部提交,回滾等..
git ls-files
# 顯示緩存區的全部文件

2.6. 撤銷

目的:將還沒有提交至版本庫的修改撤回。
  • 狀況一 : 文件修改後還沒有添加至緩存區
git checkout --filename
# 在工做區撤銷文件的修改
  • 狀況二 : 文件修改已添加至緩存區
git checkout HEAD [filename]
# 撤回添加至緩存區的修改,不指定filename則撤回全部

2.7. 刪除

git rm index.php
# 刪除index.php文件
git rm --cached index.php
# 將index.php文件移出緩存區,但不刪除( -r * 遞歸目錄)
git rm -f 1.html
# 將緩存區中的1.html文件移出並刪除

3. Git多人協做

3.1. 獲得遠程的版本庫

可使用兩種方式來獲得遠程版本庫:
  • 在某個指定的文件夾下使用,便可獲得遠端版本庫及代碼
git clone <遠端版本庫url> <本地存放該庫的文件夾名>
  • 手動添加版本庫,並拉取文件
git init
#初始化本地倉庫

git remote add <remote> <url>
# 添加遠程版本庫 <remote>可自行取名,默認origin

git remote -v
# 查看遠程版本庫信息
git remote show <remote>
# 查看指定遠程版本庫信息

git remote remove <remote>
# 刪除遠程remote連接

git pull <remote> <branch>
# 下載代碼及快速合併

3.2. 推送分支代碼

獲得遠端版本庫後,能夠在本地按正常的步驟編輯 :
新建或改動文件-->添加至緩存區-->提交到版本庫

此時,要想將本地版本庫發給遠端,只有commit提交是不夠的.
還須要下面的操做 :

git push <remote> <branch>
# 上傳代碼及快速合併

執行以上代碼,會有報錯 : 沒法直接推送到遠端的主分支

此時,能夠曲線救國,推送本身的分支到遠端便可 :

git push origin master:dev

此時,推送成功!


4.Git分支管理

4.1. 查看版本庫分支

git branch
# 顯示本地分支
git branch -a
# 顯示全部分支
git checkout 分支名/標籤名
# 切換到指定分支或標籤

4.2. 建立分支/刪除分支

git branch 分支名
# 新建分支
git checkout -b dev
# 建立並切換到dev分支

git branch -d 分支名
# 刪除本地分支 -D 強制刪除

4.3. 合併分支

要將B分支合併到A分支裏
請切換到A分支內,合併B分支的操做在A分支內進行

git merge 分支名
# 合併分支到當前分支

4.4. 解決合併衝突

多分支修改同一文件,合併可能出現衝突。衝突部分用<<<===>>>表示

解決方法:
先手動修改衝突部分,再次提交便可。


5. 使用代碼託管系統

市面上有名的Git託管系統 :

5.1. 開源中國 生成SSH密鑰

1). 本地打開git bash ,cd切換到用戶的家目錄
2). 使用pwd來查看目錄是否正確
3). 使用 ssh-keygen.exe -t rsa 來生成SHA256的SSH密鑰(按回車確認便可)
4). cd .ssh/ 切換至ssh目錄
5). ls 查看目錄下文件
6). cat id_rsa.pub 查看生成的密鑰,並複製

7). 打開git@osc開源中國,登陸本身的帳戶.點選我的資料
8). 選擇SSH公鑰
9). 在添加公鑰界面,將剛剛複製好的密鑰粘貼進來,再本身取一個該密鑰的名字,以便於區分管理

10). 本地新建一個目錄,用於拉取遠端版本庫
11). 使用 git init初始化該目錄
12). 使用git remote add origin <SSH地址> 來添加遠程版本庫

13). 使用git remote -v 來查看遠程版本庫信息
14). 使用git pull origin marster來拉取版本庫及代碼

5.2. github 添加SSH key

1). 運行 git Bash 客戶端,輸入以下代碼:
$ cd ~/.ssh
$ ls
這兩個命令就是檢查是否已經存在 id_rsa.pub 或 id_dsa.pub 文件,若是文件已經存在,那麼你能夠跳過步驟2,直接進入步驟3

2). 建立一個 SSH key
$ ssh-keygen -t rsa -C "your_email@example.com"
代碼參數含義:
-t 指定密鑰類型,默認是 rsa ,能夠省略。
-C 設置註釋文字,好比郵箱。
-f 指定密鑰文件存儲文件名。

3). 添加你的 SSH key 到 github上面去
$ cat ~/.ssh/id_rsa.pub

4). 測試一下該SSH key 在git Bash 中輸入如下代碼
$ ssh -T git@github.com
顯示相似以下,表示成功:
Hi username! You've successfully authenticated

5). git clone 遠程git倉庫地址


6. 文件忽略

工做區某些文件不控制版本,可以使用.gitignore文件進行忽略.
!(注意, .gitignore文件 是沒有名字的文件.)
規則:

以斜槓「/」開頭表示目錄;
以星號「*」通配多個字符;
以問號「?」通配單個字符
以方括號「[]」包含單個字符的匹配列表;
以歎號「!」表示不忽略(跟蹤)匹配到的文件或目錄;

  配置文件是按行從上到下進行規則匹配的,意味着若是前面的規則匹配的範圍更大,則後面的規則將不會生效.

相關文章
相關標籤/搜索