關於git,你須要知道一點命令

最近有朋友常常問git的一些操做,寫在這裏與你們分享,之後也不用一一解釋了。慣例,這是基礎分享,從安裝開始提及:git

 

安裝:github

  1. 去這裏 https://git-scm.com/ 找到你所須要的版本,下載並安裝。
  2. 找到安裝好的文件,並打開Git Bash。

      若是搞定,那麼恭喜,不然請繼續重複。ssh

  • git config --global user.name 你的名字
  • git config --global user.email 你的郵箱

      由於Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識。分佈式

      注意:git config  –global 參數,表示你這臺機器上全部的倉庫都會使用這個配置,固然也能夠對某個倉庫指定的不一樣的uname和email。加密

 

建立版本庫spa

 

      以e盤下www爲例版本控制

         $ cd e:             進入 e盤     、指針

         $ cd www         進www 日誌

         $ pwd              /e/www    回車看你的目錄是否正確打印 code

         $ mkdir test     建立版本庫 (新建名爲test的文件夾)

         $ cd test     

         $ git init          這樣test目錄下就多了一個.git 文件   不要動他!!!   用來控制版本等一些操做的

      沒問題的話,我們繼續走着~

 

添加文件到版本庫

 

      若是你以爲內容太多,能夠清理一下,

      $ clear                    清理當前命令臺

      如今,咱們在版本庫test目錄下,新建個文件 README.md 並在在裏面寫點內容 # 要飯的好帥  (固然你也能夠建立其餘類型的文件寫你想寫的內容,好比,新建一個txt文件,寫上樓主好帥)

      回來繼續~

     $ git add README.md             把剛纔新建的README.md文件添加到暫存區裏面

     $ git commit -m"第一次提交"     把文件提交到倉庫   -m"用來備註的"

     注意:add是入暫存    commit纔是入庫

     $ rm README.md                    試一下。。。。。臥槽,原來這是刪除文件,腫麼破

     $ git checkout --README.md       不要緊,又回來了,仔細看一眼,仍是不是當年的夏雨荷嘛。

     注意:命令git checkout --readme.txt 中的 -- 很重要,若是沒有的話,那麼命令變成建立分支了。

     我想完全乾掉他腫麼辦?rm後,再commit提交,這不是我告訴你的,誤刪不是俺的過錯 0.0

 

   

     說說目錄中那個隱藏目錄.git,這是版本庫。其中最重要的就是stage(暫存區),還有Git爲咱們自動建立了第一個分支master,以及指向master的一個指針HEAD。

     我們剛纔不是提交須要add  與 commit麼

  •      add,其實就是把文件添加到暫存區。
  •      commit,就是把暫存區的全部內容提交到當前分支上。

 

 log

 

  改一下文件的內容,

  $ git add README.md       

  $ git commit -m"第二次修改"

      $ cat README.md                  顯示當前版本的文本內容

      在改一次(最好內容有所區別),在 add  commit

      好,別玩了....

      $ git log                                看看你的搗蛋了麼,證據確鑿。鐵證如山。

      $ git log --pretty=oneline        單行顯示。以爲log日誌太亂的話,能夠用,若是信息太多,可能會顯示END  無視它,按q鍵退出來就好

      $ git reset --hard HEAD^        回到你上次的版本

      $ git reset --hard HEAD^^     上上次    修改那麼屢次,要^^^^^^^^^^,臥槽。。。彆着急,先

      $ git reflog                           看到前面是什麼,我才應該是版本號,最後一行顯示的是第一次提交的版本,看到了版本號,我以爲你應該想到了什麼,沒錯,咱們根據版本號回到以前的版本,版本號就寫前面幾位就能夠,別那麼實在,把一大串都寫上去

      $ git reset --hard 6459c17     回去看看,你的文件內容發生了什麼變化

      多玩幾回,試試看。。。

     累了麼? 在休息以前先mark,帥氣的要飯的繼續接着聊遠程倉庫,回來的時候記得帶着你的github帳號

 

遠程倉庫

 

     到這裏,我假設你已經有了github帳號,若是沒有,快去註冊。

     

     因爲你的本地倉庫和線上倉庫之間的傳輸是經過加密的,因此須要你設置:

  •      建立SSH Key

                  ssh-keygen  -t rsa –C 「你的郵箱」       在剛纔test目錄下,是否是已經多了兩個文件 xxx 與 xxx.pub

  •      登陸github

                 打開」 settings」(右上角頭像右側的向下小三角)中的SSH Keys左側列表)頁面,而後點擊「New SSH Key」,

                 在title裏,你能夠寫一個有意義的titie(好比:這是一個有意義的titie),在Key文本框裏粘貼xxxx.pub文件的內容。 而後Add SSH key

     是的,沒錯,你如今已經看到你的key了

     

     接下來你又該想了,我本地有個倉庫,還想在線上建立個倉庫,而且但願兩個倉庫同步,這樣線上既能夠備份,別人也能夠經過該倉庫來作一些事情,要怎麼作?

     那麼我們登陸github,而後在右上角找到「new repository」(在頭像左側 +下三角)建立一個新的倉庫。而後寫上你的項目名字test,點擊建立

     這個倉庫克隆新倉庫,也能夠把本地倉庫與之關聯,而後,把本地倉庫的內容推送到線上倉庫。

     如今有空倉了,而後呢?    

     回到命令臺,繼續...

   

    $ git remote add origin https://github.com/xxx/TEST.git

    $ git push -u origin master                                     把當前分支master推送到遠程

    因爲遠程庫是空的,第一次推送master分支時,加 –u參數,Git會把本地的master分支內容推送的遠程新的master分支,還會把他們關聯起來,

    這樣之後的推送或者拉取時就能夠簡化命令。推送成功後,能夠馬上在github頁面中看到遠程庫的內容已經和本地如出一轍了。

   注意:這裏須要輸入你的github帳號密碼

 

   提交一下試試看?

  $ git push origin master           如今你就有了真正的分佈式版本庫咯。

 

克隆倉庫

  如今,若是遠程庫有新的內容了,我們搞到本地來?這部簡單麼,下載嘛。。。好吧,您贏了。

      咱們須要克隆,那麼如何克隆呢?

      登陸github,我們建立一個新的倉庫,名字叫test2

      $ git clone https://github.com/xxx/text2.git         克隆
      Cloning into 'text2'...

      $ ls                                                                   查看倉庫目錄
      ds.txt luqin luqin.pub README.md text2/

 

建立與合併分支

 

  我們剛纔提到,版本回退時候,每次提交,git都會把它們根據時間串成大串兒,這就是一個分支。如今只有一串兒(只有一條事件線),咱們把這個分支稱之爲主分支。

  就是master分支。HEAD嚴格來講不是指向提交,而是指向master,master纔是指向提交的,因此,HEAD指向的就是當前分支。

 

  $ git checkout -b dev
    Switched to a new branch 'dev'      git checkout 命令加上 –b參數表示建立並切換,至關於以下2條命令

  $ git branch dev

  $ git checkout dev

 

      $ git branch         查看分支,會列出全部的分支,當前分支前面會添加一個星號。
    * dev
    master

  而後咱們在dev分支上繼續,還記得我們以前的那個文本文件麼。在加點內容:

  $ cat README.md           查看文件

      是否是發現了什麼

  

  繼續查看README.md內容以下:

  $ git checkout master       我們切換到主分支master上
    M README.md
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.

  $ git merge dev               把dev分支上的內容合併到當前分支(master)
    Already up-to-date.     

      在看一眼,發生了什麼。。  是否是在此分支看到剛纔增長的東東。

      git merge是合併指定分支到當前分支上,合併後,再查看README.md內容,這時候咱們能夠看到,和dev分支最新提交的是徹底同樣的。

 


  $ git branch -d dev     在試試 刪除分支
  $ git branch               查看分支,會列出全部的分支,當前分支前面會添加一個星號

  注意:假如兩個分支都有修改,合併會有衝突。

 

 有點亂麼,總結一下:

  • git checkout master       切換回主分支
  • git checkout -b dev         建立並切換,至關於如下兩條命令

            $ git branch dev

       $ git checkout dev        切換到dev

  • $ git branch              查看全部分支 *表示在當前分支下
  • 修改完成文件後在 dev分支下提交

    $ git add README.md

    $ git commit -m"備註"

  • $ git branch -d dev           刪除dev分支
  • $ git merge dev            把dev分支合併到當前分支,dev分支還存在

 

由於時間關係,後面,還會繼續與你們分享分支管理,多人協做,整理經常使用的一些命令。

相關文章
相關標籤/搜索