Git與GitHub常用命令

分類:IT技術 時間:2016-10-09

說在前面的話,本文是跟著張哥的 GitHub 系列教程操作的,張哥微信公眾號: googdev

霧艹….. 一直在出差(借口)… 看了一下兩個月沒寫博客了,真是太TM可怕了!!! 趕緊補一發,壓壓驚


git

註:在使用的任何的 git 命令前,都要切換到 git 項目目錄下

  • git init
    初始化一個 git 倉庫

  • git status
    查看當前 git 倉庫的狀態

  • git add file
    修改 file 文件的狀態為添加,並沒有提交,只是存在緩存區

  • git rm –cached file
    更改 add 後的文件的狀態為無狀態(從緩存區移除)

  • git config user.name yugit config user.email [email protected]
    添加 git 用戶,在進行提交之前如果沒有配置用戶會報錯,這是針對當前 git 倉庫的
    git config –global user.name yu ,可以使用 –global 參數設置全局的

  • git commit -m message
    提交緩存區內容並附帶提交信息

  • git log
    顯示提交日誌

  • git config core.autoclrf false
    解決每次使用 git 命令 ( add , commit ) 的時候會報 warning: LF will be replaced by CRLF in XXXX
    這是自動添加換行 ( linux 下格式) 引起的問題,可以使用 –global 參數設置全局有效

  • git tag v1.0
    為當前的狀態打個 v1.0 的標簽

  • git tag
    查看歷史 tag 記錄

  • git branch
    查看當前分支的情況

  • git branch a
    在當前的基礎上新建一個分支名字為 a

  • git checkout a
    切換分支到 a

  • git checkout -b a
    綜合上面兩個命令,如果 a 分支不存在,在當前基礎上創建分支 a 並切換到 a

  • git checkout v1.0
    切換到 tag v1.0 時的狀態

  • git checkout ffd9f2dd68f1eb21d36cee50dbdd504e95d9c8f7
    切換到某次 commit ,這個長序列是每次 commit 的 SHA1 值,可以使用 git log 查看

  • git checkout test.txt
    撤銷 test.txt 的改變,註 checkout 命令只能撤銷還沒有 add 進暫存區的文件

  • git merge agit rebase a
    把 a 分支的內容合並到 master 分支,前提要先切換到 master 分支,兩個做法的區別是:
    merge 是把 a 中的內容全部粗暴的合並進來,rebase 會先比較內容改變的順序,再按順序合並

  • git branch -d a
    刪除分支a

  • git branch -D a
    強制刪除分支a

  • git config –global alias.co checkout
    alias 為 checkout 起別名為 co,然後在輸入命令的時候,就可以使用 git co 替代 git checkout ,如果只針對當前倉庫 global 不是必須的

  • git log 的 NB 的用法
    git log –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit –date=relative
    格式化日誌的輸出,可以很清晰的展現日誌信息和分支走向
    這麽難寫卻又牛逼的命令我們必須給起個別名:
    git config –global alias.lg “log –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit –date=relative”
    然後就可以使用 git lg 就可以了

  • git config –global color.ui true
    給git的輸出著色

  • git config –global core.quotepath false
    設置顯示中文文件名
    在沒設置顯示中文名之前,我創建了一個新文件 中文名.txt ,然後使用 git status 查看一下顯示如下:

    設置顯示中文名後,顯示如下:

  • stash 命令
    使用場景,如你正在一個分支 a 上修改著代碼什麽的,但是這時候,有一個緊急的任務,需要你切換到另一個分支 b 去做些工作,
    而 a 上的代碼還是個半吊子,不想去 commit 甚至不想去 add ,這時候 stash 命令就大有用處了,前提是沒有執行 commit

    • git stash
      把當前分支沒有 commit 的代碼先暫存起來,這時使用 git status 會發現分支很幹凈

    • git stash list
      可以看到此時暫存區多了一條記錄

      暫存成功後,你就可以切換到 b 去做其他的功能
      b 分支的事情做完後,就可以再切換回 a 分支,繼續之前的工作

    • git stash apply

      執行後, a 分支之前的代碼就又回來了,然後做好把暫存區的 stash 記錄刪除

    • git stash drop
      就是把最近的一條 stash 記錄刪除, drop 後還可以跟 stash_id 來刪除指定的記錄

    • git stash pop
      這個命令相當於同時執行了 apply 和 drop ,謹慎起見,使用 git stash list 查看一下是否確實刪除了該記錄

    • git stash clear
      清空暫存區的所有記錄,drop 只是刪除一條,drop 後可以跟 stash_id 來刪除指定的記錄,不跟就是刪除最近的

  • 沖突解決
    假設我在 a 分支和本地分支上同時修改了文件 test.txt ,在合並啊時候就會出現沖突
    合並沖突

    用git diff可以查看沖突

    解決沖突要做的就是修改沖突的文件 test.txt 為最終想提交的內容,並去掉其中的標識符
    (標識符: ++<<<<<<< HEAD;++=======; ++>>>>>>>>)
    修改然後 addcommit


GitHub

在向 GitHub 提交代碼前,需要 SSH 授權,因此要創建 SSH Key

  1. 生成 ssh key, 在 Git Bash 或者命令行中使用命令:

    ssh-keygen -t rsa  
    

    rsa 算法生成密鑰,接著連續三個回車鍵(不需要輸入密碼),然後就會生成兩個文件 id_rsa 和 id_rsa.pub
    命令執行結果會告訴你文件默認路徑, 其中 id_rsa 是密鑰( /c/Users/yu/.ssh/id_rsa ), id_rsa.pub 就是公鑰( /c/Users/yu/.ssh/id_rsa.pub )

  2. 在github上添加 ssh key
    進入自己的 GitHub 的設置界面,如圖:

    點擊 New SSH Key 按鈕,並把上述 id_rsa.pub 中的內容填入下面 Key 輸入框中,如圖:

    點擊 Add SSH Key 就可以了

  3. 測試秘鑰是否成功

    ssh -T [email protected]  
    

    第一次使用可能提示 github.com 無法驗是否證可信任,輸入 yes

  4. 開始跟GitHub打交道

    • clone GitHub上的項目到本地

      在GitHub上創建一個新的項目/倉庫(或者用已有的), 假設名字是: github-study-test ,執行如下命令

      git clone [email protected]:yuehongjie/github-study-test.git
      

      這樣就把項目 clone 到了本地,這個時候本地項目本身就已經是一個 git 倉庫了,不需要執行 git init 進行初始化
      而且甚至都已經關聯好了遠程倉庫,我們只需要在這個 github-study-test 項目下任意修改或者添加文件,然後進行 add 和 commit ,就像普通的本地 git 倉庫一樣

      如何獲取項目地址: 在 GitHub 上進入項目,點擊 Clone or download ,並選擇 Use SSH

    • 向 GitHub 提交代碼命令

      git push origin master  
      

      這樣就把本地項目提交到了 GitHub 遠程 master 分支

      有時候在 push 之前先 pull 一下,把遠程最新的代碼更新到本地,命令

      git pull origin master
      
    • 關聯本地項目到 GitHub
      如果我們本地已有一個完整的 git 倉庫,並且已經進行過很多次 commit 了,那麽上面的在 clone 方式就不合適了,這時就需要我們把本地的 git 倉庫關聯到遠程 GitHub 倉庫上

      1. 在 GitHub 上新建一個項目假設為 test

      2. 把本地項目假設是 test2 關聯到遠程 test ,使用命令:

        git remote add githuborigin [email protected]:yuehongjie/test.git
        

        這樣就把本地倉庫和遠程倉庫關聯好了,命令中的 githuborigin 是一個遠程倉庫的別名,可以隨便起
        起別名的原因是因為我們可能除了向 GitHub 提交,還可能向公司的的遠程倉庫提交,方便區別

      3. 更新遠程倉庫到本地

        這一步不是必須的,我這裏這麽做的原因是遠程倉庫新建的時候也創建了個 README.md 文件,而我本地沒有,pull 命令:

        git pull githuborigin master  
        
      4. 向 GitHub 提交本地倉庫的內容

        git push githuborigin master 
        

        這裏我是提交到master分支,當然也可以提交到其他分支

    p.s.可以使用 git remote -v 查看當前倉庫關聯了哪些遠程倉庫


git & GitHub

常用的操作命令:

在 master 分支新建一個叫 develop 的分支

git branch develop

註:新建分支是基於當前所在的分支基礎上進行的,即以上命令是基於 master 分支新建了一個叫 develop 的分支,此時 develop 分支跟 master 分支的內容完全一樣

切換到 develop 分支

git checkout develop

可以把上面兩個步驟和合並,新建並自動切換到 develop 分支:

git checkout -b develop

把 develop 分支推送到遠程倉庫

git push origin develop

註:該命令執行時如果遠程倉庫沒有 develop 分支則會報錯

把 develop 分支推送到遠程倉庫,如果遠程倉庫沒有該分支則會創建

git push origin develop:develop

註:develop:develop 的第二個 develop 是為遠程分支起的名字,可以隨便起,但推薦保持一致,以免混亂

查看本地分支列表

git branch

查看遠程分支列表

git branch -r

查看本地和遠程所有分支

git branch -a

刪除本地分支 a

git branch -d a

同時刪除本地多個分支(a、b)

git branch -d a b

強制刪除本地分支 a

git branch -D a

刪除遠程分支 develop2

git push origin :develop2

如果遠程有個分支 release ,而本地沒有,你想把遠程的 release 分支更新到本地

git checkout -b release origin/release

如果執行命令報錯:
>

error: pathspec ‘release’ did not match any file(s) known to git.
error: pathspec ‘origin/release’ did not match any file(s) known to git.

先執行如下命令:

git fetch

Tags: checkout message warning commit status

文章來源:


ads
ads

相關文章
ads

相關文章

ad