1. 程式人生 > >GIT -- bash命令與github之間的操作合集

GIT -- bash命令與github之間的操作合集

縱使圖形化工具遍地,我對bash的愛意也是無法停止的,因為生命的意義在於裝13。

git config --global user.name ""
git config --global user.email ""    //設定使用者名稱與郵箱
git config --global color.ui true    //命令會顯示不同的顏色

GitHub 介面(對不起英語不好):
code:程式碼
issues:問題
pull request:拉取請求
projects:專案
wiki:
insights:
settings:設定

commit:提交
branch:分支
releases:版本
contributor:貢獻者


---------------------本地倉庫操作--------------------------------------------------------
mkdir 資料夾名   //建立空目錄(資料夾)
mkdir -p test/a    //-p代表沒有test便建立test(沒有-p 同時 沒有test報錯)
pwd    //顯示當前目錄路徑
rm -rf    //強制刪除(不要問我為什麼跑路)

git init    //將當前目錄變為倉庫
ls -ah    //檢視當前目錄下所有列表(包括隱藏)

git add 檔名    //追蹤檔案   git add .(追蹤全部 點前面有個空格)
git commit -m '**'     //提交到倉庫(如果忘了-m進入另外一個編輯器寫入提交資訊之後  開啟大寫--按下esc--2下Z 退出)
git status    //檢視倉庫檔案狀態
git diff 檔名    //檢視檔案修改內容
git diff HEAD -- 檔名    //檢視工作區和版本庫的檔案區別
cat 檔名    //檢視檔案內容

git status -s /-short    //更為緊湊的格式輸出:
    MM-工作區被修改並且提交到暫存區後又在工作區被修改-暫存區與工作區都有該檔案修改記錄
    M-檔案被修改但是沒有放入暫存區
    M-檔案被修改並且放入暫存區
    A-新新增到暫存區中的檔案
    ??-新新增的未跟蹤的檔案

git log    //歷史紀錄   --pretty=oneline
git log --graph    //可以看到分支合併圖
git reset --hard HEAD^    //退回上個版本(上上個版本 HEAD^^../..上100個版本HEAD~100)
git reflog    //記錄每一次命令(退回老版本想返回新版本--用來檢視新版本commit id)
git reset --hard 1094a(版本commit id)

git checkout -- 檔名    //丟棄工作區的修改
    一種是自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
    一種是已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態
    總之,就是讓這個檔案回到最近一次git commit或git add時的狀態
    (git checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。)
git reset HEAD 檔名    //把暫存區的修改撤銷,返回工作區

---------------------遠端倉庫操作--------------------------------------------------------
遠端伺服器 ==比如 github (需配置ssh公鑰)(Windows下開啟Git Bash,建立SSH Key:)
$ ssh-keygen -t rsa -C "[email protected]"

------------本地>>遠端(上傳自己的專案)(先init add commit一把梭)-------------------
$ git remote add origin [email protected]:michaelliao/learngit.git    //將本地庫與遠端庫關聯
(michaelliao替換成自己的GitHub賬戶名)(遠端庫的名字就是origin 可修改)
(當需要關聯多個庫的時候  名字另外取)

$ git push -u origin master    //推送本地庫內容到遠端庫
(-u 將 本地master分支 內容推送到 遠端新的master分支,並且關聯2個分支)
(以後本地做修改提交可不加 -u)

git remote    //檢視遠端庫資訊(名稱) 一般為origin
git remote -v    //更詳細的資訊
git remote rm origin    //刪除已有的遠端庫關聯

------------遠端>>本地-------------------
$ git clone [email protected]:michaelliao/gitskills.git    //克隆遠端倉庫到本地

---------------------分支管理--------------------------------------------------------
git branch dev    //建立      
git checkout dev    //切換
git checkout -b dev    //建立本地分支並且切換       -b 表示建立並切換
git branch    //檢視當前分支(列出所有分支,當前分支前面標註 * 號)
git branch -d dev    //刪除分支    -D強制刪除

git checkout -b dev origin/div     //建立遠端庫origin的dev分支到本地,相關聯
$ git branch --set-upstream-to=origin/dev dev    //設定本地dev與origin/dev跟蹤連結

git merge dev    //合併制定分支到當前分支    提示資訊Fast-forward: 快進模式的合併(修改指標)
git merge --no-ff -m "merge with no-ff" dev    // --no-ff 表示禁用Fast-forward;-m 描述資訊
合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。
git stash    //儲藏當前工作區
git stash list    //檢視儲藏的工作現場
git stash apply    //恢復工作區,但是stash內容不刪除
git stash apply [email protected]{0}    //恢復指定工作區
git stash drop    //刪除stash內容
git stash pop    //恢復工作區,同時刪除stash

git rebase    //把本地未push的分叉提交歷史整理成直線;方便檢視歷史提交

---------------------標籤--------------------------------------------------------
切換到需要標籤的分支
git tag <name>    //打上新標籤
git tag    //檢視所有標籤(標籤列出按字母排序)
git tag <name> <commit id>    //對應之前commit過後的版本打上標籤
git tag -a <name> -m "" <commit id>    // -a 指定標籤名   -m 指定說明文字
git show <tagname>    //檢視tagname的標籤資訊
git tag -d v0.1    //刪除本地tag標籤
git push origin <tagname>     //推送標籤到遠端
git push origin --tags    //推送全部本地tag標籤
刪除本地tag之後 git push origin :refs/tags/v0.1    //刪除遠端tag

---------------------忽略特殊檔案--------------------------------------------------------
新建 .gitignore  寫入需要忽略的檔案----戰略合作www.baidu.com
(未完待續。。。)