最近有朋友常常問git的一些操做,寫在這裏與你們分享,之後也不用一一解釋了。慣例,這是基礎分享,從安裝開始提及:git
安裝:github
若是搞定,那麼恭喜,不然請繼續重複。ssh
由於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麼
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-keygen -t rsa –C 「你的郵箱」 在剛纔test目錄下,是否是已經多了兩個文件 xxx 與 xxx.pub
打開」 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分支還存在
由於時間關係,後面,還會繼續與你們分享分支管理,多人協做,整理經常使用的一些命令。