Git經常使用命令結合GitLab/GitHub開發,Git/Svn區別

原文連接: 本人博客園文章html

Git安裝配置及經常使用命令

  1. 從官網下載安裝包,手動完成安裝。
  2. 打開Git Bash命令行工具,執行命令ssh-keygen -t rsa -C Email-Addresss生成一個密鑰對。
  3. 登陸到GitLab,點擊右上角你的用戶頭像,點擊Edit Profile settings,點擊SSH Keys,點擊Add SSH Key ,填寫Title欄,複製用戶目錄下.ssh/id_rsa.pub文件的內容到Key,點擊Add Key
  4. 點擊右上角的 New project,填寫完成後點擊Create project新建一個倉庫,點擊Activity,點擊SSH後複製SSH邊上欄裏的地址。
  5. 打開Git Bash命令行工具,切換到一個合適的目錄,使用命令git clone '剛纔複製的URL'克隆建立的倉庫。
  6. 進入目錄cd 倉庫名,執行命令
    • git config --global user.email your-email,設置你的郵箱
    • git config --global user.name your-name,設置你的姓名。
  7. 執行命令:
    • echo "# Description" > README.md,添加一個文件
    • git status狀態,發現有未跟蹤文件
    • git add .,當前目錄全部文件添加到暫存區
    • git diff,比較當前工做區和暫存區有何不一樣
    • git status,查看當前狀態,發現有文件未提交
    • git commit -m "註釋",把暫存區內容提交到本地倉庫
    • git push -u origin master,把本地倉庫的提交推送到遠程倉庫
    • git log,查看提交日誌
  8. 模擬遠程更新 登陸到GitLab,點擊Files標籤,點擊README.md文件,點擊Edit按鈕修改文件內容,添加新行:」* 9 遠程修改文件記錄」,能夠點擊Preview預覽,也能夠填寫註釋後直接保存。
  9. 執行命令:
    • git pull,拉取遠程倉庫的更新提交,並作自動合併,可能會出現衝突
    • git fetch,得到遠程倉庫的更新提交,不作自動合併,須要手動合併
    • git merge origin/master,把遠程更新提交手動合併到本地master分支
  10. 配置命令別名
    • git config --global alias.co checkout,配置檢出命令別名
    • git config --global alias.br branch,配置分支命令別名
    • git config --global alias.ci commit,配置提交命令別名
    • git config --global alias.st status,配置當前狀態命令別名
    • git config --global alias.df diff,配置比較命令別名
    • git config --global alias.pl pull,配置拉取命令別名
    • git config --global alias.pu push,配置推送命令別名
    • git config --list,查看配置列表
    • git config --global credential.helper store,配置記住密碼,以HTTPS使用時
  11. 其它命令
    • git clean -f,清空未跟蹤文件
    • git checkout .,清空工做區改動
    • git checkout some-branch-name file-name.js,檢出指定分支的指定文件
    • git checkout {{some-commit-hash}} file-name.js,檢出指定提交的指定文件
  12. 其它
* Git管理大項目一段時間後會比較慢,可使用git gc命令清理一下
* Git無論理空目錄,若是本地有空目錄,則始終不會提交到倉庫中
* Git會根據文件的類似性自動識別重命令名操做,底層其實也是先delete後add
* 可在.git同級目錄添加.gitignore文件,文件中可寫入忽略文件信息,查看狀態和提交時均會自動忽略
* 1.7版好像支持了像svn那樣只檢出部分目錄的功能,詳細請移步官網文檔,另附Git稀疏檢出教程一例
* 推薦官方書籍:Pro Git
* 官方手冊地址請戳我,注:git help 'command'顯示的就是官方手冊Manual Page.
* 還有一些其它功能,好比:rebase, rm, reset, remote, blame, cherry-pick, mergetool, 
* difftool等本教程還沒涉及,之後會逐步更新
複製代碼

Git本地分支管理

分支的建立、合併、刪除、比較node

  • git branch,顯示全部分
  • git branch b1,從當前分支建立一個叫b1的分支
  • git checkout b1,切換到b1分支
  • git checkout -b b1,至關於以上兩條命令的組合
  • git checkout master,切換到master主分支
  • git merge b1,把b1分支的代碼合併到master
  • git branch -d b1,刪除b1分支,不能在被刪除分支上執行
  • git diff branch-1 branch-2,比較兩個分支的不一樣
  • git diff --name-only branch-1 branch-2,只顯示兩分支不一樣的文件的名稱
  • git diff some-branch some-filename.js,比較當前分支與另外一分支指定文件

Git遠程分支管理

遠程分支的建立、合併、刪除git

  • git push origin dev,將本地分支dev推送到origin遠程倉庫
  • git pull origin dev,拉取遠程倉庫origin的dev分支並自動合併
  • git push orgin :dev,刪除遠程倉庫origin上的遠程分支
  • git push origin --delete dev,1.7版以後可使用這個命令。
  • git remote prune origin,清理本地的跟蹤分支,可加—dry-run參數假執行一下
  • git pull --rebase,以變基的形式拉取更新

Tips : tag的遠程管理相似遠程分支管理github

Git Tag標籤管理

標籤的建立、刪除web

  • git tag t1,從當前分支建立一個名爲t1的標籤
  • git tag -m '註釋' t1,建立一個帶有註釋的標籤
  • git tag -d t1,刪除名爲t1的標籤

Git Log日誌

  • git log,查看歷史日誌
  • git log --graph,以基於文本的圖形顯示合併軌跡
  • git log --pretty=oneline,一行顯示日誌簡要信息
  • git log --pretty=format:"%h - %an, %ar : %s",以指定格式查看日誌,format參數請移步官方手冊
  • git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01"--no-merges,以指定格式顯示指定日期區間和指定提交者的日誌,不含合併提交
  • git log -p -2 --stat,-p顯示文件差別,-2顯示最近兩次提交,—stat顯示修改行數統計信息
  • git log -p filename,查看文件的詳細變動,包括文件的實際修改內容
  • git log -L 1,1:some-file.txt,查看文件中指定位置的變動
  • git log --no-merges master..,查看還沒有合併到master分支的變動

其它高級命令

  • git show --no-merges master..,功能同上
  • git show some-branch:some-file.js,查看其它分支的文件,無需切換分支

通常使用方法

1. 克隆
git clone <倉庫地址>
複製代碼
2. 查看全部分支
git branch -a
# 查看是否有origin/dev分支,服務器默認已創建dev分支,若是沒有,則請Master角色先創建該分支:
# 方法1:clone版本哭,新建本地dev分支並push到服務器:git clone ; git branch dev ; git checkout dev ; git push。
# 方法2:直接在gilab上創建dev分支
複製代碼
3. 切換到dev分支
git checkout dev    #--- 多是git checkout -b dev origin/dev,創建進入分支,並關聯
複製代碼
4. 基於dev分支建立本身的分支<分支名稱>
git checkout dev
git branch  <分支名稱>
複製代碼
5. 切換到<分支名稱>,而後愉快的coding
git checkout  <分支名稱>
複製代碼
6. 添加到本地暫存區
git add ./
複製代碼
7. 可隨時檢查工做區狀態
# 查看當前分支工做區是否有未跟蹤的文件(便是否有未添加到暫存區的文件)
git status
# 查看當前分支工做區的文件與暫存區文件的差別
git diff
複製代碼
8. 提交到本地倉庫
git commit -m "說明"
複製代碼
9. 推送到服務器倉庫

也能夠不推送到服務器,只放在本地倉庫,例如僅本人使用的臨時分支vim

git push --set-upstream origin <分支名稱>     #--- 設置關聯,也會順便推送,僅在第一次時用
git push origin
複製代碼
10. 合併到dev分支(例)
A. Developer在網頁上請求合併(推薦)

網頁上請求合併還能夠順便進行代碼審查,里程碑設置等 參考:gitlab如何實現代碼評審機制(經過角色管理控制):www.jianshu.com/p/adb598c52…緩存

若是出現衝突,開發人員將服務器最新的版本pull下來,而後將dev分支合併到本身的分支
git pull
git checkout  <分支名稱>
git merge --no-ff  dev
複製代碼

若是有衝突,則參照上面的參考連接解決,或直接按【B. Master角色直接本地合併】中的方法解決bash

B.Master角色直接本地合併

dev是保護分支,只有Master角色(例,看設置的分支保護權限)纔有權限進行合併 將本地分支<分支名稱>合併到本地dev分支,必須先從服務器pull最新代碼,並切換到dev分支,而後再合併:服務器

git pull  <倉庫地址>
git checkout dev
git merge --no-ff <分支名稱>
複製代碼

運行merge命令以後,若是有衝突,則須要手動解決衝突,打開衝突文件,你能夠看到相似:網絡

。。。
111
<<<<<<< HEAD
222 master do it
=======
222 source do it
333 source jjj
>>>>>>> <分支名稱>
。。。
複製代碼

將正確的留下,錯誤的刪除便可,保存退出,而後從新(git add . ; git commit ; git merge )

git add .
git commit -m "for merge說明"
git merge --no-ff <分支名稱>
複製代碼

衝突時,也能夠撤銷合併:

git merge --abort
複製代碼
11.刪除分支,切換到master分支而後刪除<分支名稱>分支(不能刪除當前分支)
git checkout master
git branch -d <分支名稱>
複製代碼
12.刪除遠程,危險,切記只刪除本身創建的分支,不要刪除公共分支,例如dev、release等
git push origin :<分支名稱>
複製代碼

GitLab介紹及常規使用

GitLib有五種身份權限,分別是:

  • Owner 項目全部者,擁有全部的操做權限
  • Master 項目的管理者,除更改、刪除項目元信息外其它操做都可
  • Developer 項目的開發人員,作一些開發工做,對受保護內容無權限
  • Reporter 項目的報告者,只有項目的讀權限,能夠建立代碼片段
  • Guest 項目的遊客,只能提交問題和評論內容

具體參見GitLab權限,爲項目添加成員時可指定成員的身份權限。

命名規則
  • 每次提交必須寫明註釋,若是是修復Bug,請加上Bug號
  • 建立特性分支,名稱要以f-開頭,加上特性名
  • 建立發佈分支,名稱要以r-開頭,加上預發佈版本號
  • 建立Bug修復分支,名稱要以b-開頭,加上Bug號
  • 建立標籤,名稱要以t-開頭,加上發佈版本號
  • 合併分支時必須使用--no-ff參數(禁止以快進方式合併),以保留合併歷史軌跡
主要分支(保護分支)
  • master 主分支,穩定代碼,爲生產環境作準備的
  • develop 開發分支,爲開發服務
特性分支
  • develop分支建立,用於特性開發,完成後要合併回develop分支。
  • git checkout -b newfeature develop,從develop分支建立newfeature特性分支
  • git checkout develop,開發完成後,須要合併回develop分支,先切換到develop分支
  • git merge --no-ff newfeature,合併回develop分支,必須加--no-ff參數
  • git branch -d newfeature,刪除特性分支
  • git push origin develop,把合併後的develop分支推送到遠程倉庫
發佈分支

develop分支建立,用於預發佈版本,容許小bug修復,完成後要合併回developmaster

  • git checkou -b release-1.2 develop,建立一個發佈分支
  • git checkout master,切換到master分支,準備合併
  • git merge --no-ff release-1.2,把release-1.2分支合併到master分支
  • git tag 1.2從master分支打一個標籤
  • git checkou develop,切換到develop分支,準備合併
  • git merge --no-ff release-1.2,把release-1.2分支合併到develop分支
  • git branch -d release-1.2,刪除這個發佈分支
修復分支

從master分支建立,用於生產環境上的Bug修復,完成後要合併回developmaster

  • git checkout -b hotfix-1.2.1 master,從master分支建立一個Bug修復分支
  • git checkout master,切換到master分支,準備合併
  • git merge --no-ff hotfix-1.2.1,合併到master分支
  • git tag 1.2.1,爲master分支建立一個標籤
  • git checkout develop,切換到develop分支,準備合併
  • git merge --no-ff hotfix-1.2.1,合併到develop分支
  • git branch -d hotfix-1.2.1,刪除hotfix-1.2.1分支

git與svn區別

1. 開發者的本地?

svn: 只有一個版本的代碼

git: 整個倉庫的全部版本

2.在沒有網絡的狀況下, 開發還能不能進行版本控制

svn: 不能夠, svn沒有自我版本控制的能力

git: 能夠的, git在本地就有一個倉庫, 本地的版本控制

3.最經常使用命令

svn: checkout/commit/update

git: clone/add/commit/push/pull

git/gitLab/github的經常使用操做

1.全局配置github用戶名和郵箱
  • git config --global user.name "用戶名" //配置用戶名
  • git config --global user.email "你的郵箱" //配置郵箱
  • git config --list //查看配置列表
2.生成一個本地倉庫
  • git init //初始一個本地建立
  • git clone url //從遠程克隆倉庫到本地
3.添加文件並提交
  • git add * //將工做區的變化添加到緩存區
  • git commit -m "說明信息" //將緩存區的變化提交到版本區
  • git status // 查看狀態
4.git在本地維護了3個區域
  • 工做區(working dir)
  • 緩存/暫存區(Index/Stage)
  • 版本區(HEAD)
5.push推送: 將本地倉庫中的更新提交到遠程倉庫
  • git remote add origin url //關聯本地倉庫與遠程倉庫(1次)
  • git push origin master //將本地倉庫的更新推送到遠程倉庫
6. pull拉取

git pull origin master //拉取遠程倉庫的更新到本地倉庫 注意: 自動合併

7. git管理真實項目
1.添加忽略
    建立.gitignore文件
        vim .gitignore  //經過vim命令建立文件
        i  //進入編輯模式
        按esc  //進入查看模式
        ZZ  //保存並退出
    指定須要忽略的文件或文件夾
        /.idea  ##忽略當前目錄下的此文件(夾)
        node_modules  ## 忽略任意目錄下的此文件(夾)
2.本地版本控制
    git add *
    git commit -m "xxx"
3.建立github(遠程)倉庫
    New Repository
    VueSource
4.推送到遠程倉庫
    git remote add origin https://github.com/zxfjd3g/VueSource.git
    git push origin master
複製代碼
8.公司多人協同
  • new organization
  • 查找小夥伴帳號, 並添加
  • 修改組織成員的訪問權限爲: write
  • 向小夥伴發送organization名稱/地址
  • 小夥伴登錄後訪問organization的地址, 贊成協做請求
  • 在組織下建立倉庫, 全部小夥伴均可以對倉庫進行clone/pull/push了
9.開源項目多人協同
* 用戶A: 項目xxx
* 用戶B: 用戶A的下一級或朋友, 沒有權限直接向倉庫xxx push代碼
* B: 訪問xxx主頁, fork一個分支到B帳戶下
* B: clone=>修改代碼==>commit==>push
* B: pull request: 向A提交一個pull的請求
* A: 接收到消息, 查看/diff/merge
* AB: 能夠進行發信息交流
複製代碼

git/gitLab/github其它操做

1.fetch拉取
git fetch origin master:tmp
git diff tmp   
git merge tmp : 將tmp分支合併到當前分支
須要手動合併後提交
複製代碼
2.其它的命令:
git log/reflog 
git checkout commit_id <file.name> : 將指定文件回到指定版本
git reset --hard HEAD  : 將整個工做區回到最新版本
git reset --hard HEAD^ : 回到上一個版本
複製代碼
3.在webstorm中使用git:
在settings中配置關聯上git.exe
使用git命令初始化本地倉庫並與遠程倉庫關聯
經過version control視窗直接進行版本控制操做
複製代碼
4.使用TortoiseGit
安裝TortoiseGit
經過菜單進行git版本控制(不使用命令)
使用git SSH
    利用TortoiseGit的PuTTY工具生成public Key, 並配置到github上
    生成private key並保存爲一個ppk文件
    經過遠程倉庫的ssh地址clone, 並指定本地的ppk文件
複製代碼

Git常規命令部分參考自:www.07net01.com/2015/04/827…

完結

相關文章
相關標籤/搜索