媽媽不再用擔憂我使用git了

媽媽不再用擔憂我使用git了

git因爲其靈活,速度快,離線工做等特色而倍受青睞,下面一步步來總結下git的基本命令和經常使用操做。git

安裝msysgit

下載地址:msysgit,安裝完成後配置系統環境變量,打開git bash,儘可能少用圖形化工具git gui,推薦使用命令行。github

你能夠在本地操做git,也能夠在遠程服務器倉庫操做git,例如github,這樣你就須要配置下ssh key,詳情請查看官方文檔說明generating-ssh-keysbash

git操做

一、檢出倉庫(克隆倉庫)

本地克隆:服務器

$ git clone /path/to/repository

遠程克隆:ssh

$ git clone <server>

ssh方式(推薦),例如:svn

$ git clone git@github.com:hcy2367/hcy2367.github.io.git

https方式,例如:工具

$ git clone https://github.com/hcy2367/hcy2367.github.io.git

二、建立新倉庫

$ git init

三、添加工做區(working dir)新的或改動的文件到暫存區(Index或stage)

$ git add <filename> | --all | -A

git工做區,暫存區,HEAD區(能夠理解爲本地倉庫master分支的最新版本)關係圖:gitlab

四、從暫存區刪除添加或改動的的文件

$ git rm --cached <filename> | *

五、查看當前倉庫狀態

執行add、commit操做以前和以後最好都要查看下當前提交的一些狀態信息,防止漏添加,錯提交post

$ git status

六、查看和對比修改的內容

$ git diff <filename>

七、查看提交的歷史記錄版本(添加參數:–pretty=oneline,用於輸出少許信息)

$ git log

八、提交到當前分支master HEAD區

$ git commit -m '代碼提交信息'

九、版本回退

HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,往上100個版本HEAD~100,如回退到上一個版本,則命令以下:

$ git reset --hard HEAD^

其中–hard參數表示撤銷工做區與暫存區的修改,回退到指定歷史版本,可以使用以下命令:

$ git reset --hard 20038

其中20038爲提交版本的前五位ID號(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看時可以使用以下命令:

$ git reflog

十、撤銷修改

丟棄工做區的修改,已添加到暫存區的文件不受影響,注意:不能少了–參數,命令以下:

$ git checkout -- <filename> | *

把暫存區的修改撤銷掉,從新放回工做區,命令以下:

$ git reset HEAD <filename> | *

十一、刪除文件

刪除後再commit到HEAD區,若是誤刪文件了,能夠恢復到該文件的最新版本。

$ git rm <filename>

十二、推送到遠端倉庫

$ git push -u origin master | <branch>

-u參數表示初次推送時把本地的master分支和遠程的master分支關聯起來;

若是你尚未克隆現有倉庫,並欲將你的本地倉庫鏈接到某個遠程服務器,你可使用以下命令添加:

$ git remote add origin <server>

例如這樣你就可以將你的改動推送到所添加的服務器上去了:

$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git

1三、分支

建立分支:

$ git checkout -b <branch>

切換回主分支:

$ git checkout master

列出全部分支:

$ git branch

合併指定分支到當前分支(默認使用fast forward方式):

$ git merge <branch>

普通模式合併(禁用fast forward,由於該方式合併後看不到歷史提交信息):

$ git merge --no-ff -m "merge with no-ff" <branch>

刪除分支:

$ git branch -d <branch>

丟棄一個沒有被合併過的分支,能夠經過以下命令強行刪除:

$ git branch -D <branch>

推送到遠端倉庫:

$ git push origin <branch>

1四、更新與合併

查看遠程信息:

$ git remote -v

從遠程獲取最新版本到本地倉庫,並自動merge到本地分支:

$ git pull origin master

從遠程獲取最新版本到本地倉庫,不自動merge到本地分支:

$ git fetch

合併分支前先到另一個分支更新代碼,而後本地合併後提交到遠程倉庫; 當有衝突時,可以使用$ git diff$ git status命令查看分支的差別,手工解決後,再執行$ git add <filename>命令以將它們標記爲合併成功。查看提交記錄圖形信息:

$ git log --graph --pretty=oneline --abbrev-commit

1五、標籤(能夠理解爲版本庫的快照)

建立標籤:

$ git tag <tagname>

可以使用命令以下命令找到歷史提交的ID號:

$ git log --pretty=oneline --abbrev-commit

再打標籤:

$ git tag v1.0 6224937

還能夠建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:

$ git tag -a v1.1 -m "version 1.1 released" 3628164

查看標籤:

$ git tag

查看標籤信息:

$ git show v1.0

刪除本地標籤:

$ git tag -d v1.1

推送標籤到遠程:

$ git push origin <tagname>

一次性推送所有未推送的標籤:

$ git push origin --tags

刪除遠程標籤(先刪除本地,再刪除對應的遠程tag):

$ git tag -d v1.1
$ git push origin :refs/tags/v1.1

1六、丟棄你全部的本地改動與提交,能夠到服務器上獲取最新的版本並將你本地主分支指向到它:

$ git fetch origin
$ git reset --hard origin/master

1七、移除全部未跟蹤文件(通常會加上參數-df,-d表示包含目錄,-f表示強制清除)

$ git clean [options]

1八、多人協做的工做模式

  • 首先,能夠試圖用$ git push origin <branch>推送本身的修改;
  • 若是推送失敗,則由於遠程分支比你的本地更新,須要先用$ git pull試圖合併;
  • 若是合併有衝突,則解決衝突,並在本地提交;
  • 沒有衝突或者解決掉衝突後,再用$ git push origin <branch>推送就能成功;
  • 若是git pull提示「no tracking information」,則說明本地分支和遠程分支的連接關係沒有建立,用命令$ git branch --set-upstream <branch> origin/<branch>解決便可。

1九、git工做流程圖

說了這麼多,來張工做圖,可能更加通俗易懂:

總結

掌握上面的命令後基本上能夠輕鬆使用git來管理項目和參與團隊開發了,當你欣賞到git的過人和可愛之處後,你可能不再想使用svn來管理代碼了,媽媽也不用擔憂我如何使用git了,熟悉操做後你就能夠遨翔於githubgitcafegitlab的天空,爲開源生態圈貢獻本身的一份力量。不論是forkstarclone,仍是pull request,總要嘗試下未知的世界。[博客轉移了] =》 http://hcy2367.github.io/

天高任鳥飛,海闊憑魚躍。

相關文章
相關標籤/搜索