Git經常使用命令速記與入門

前言:Git是什麼

Git是一個開源代碼庫和分佈式版本控制系統。git

它不須要服務器端軟件,就能夠運做版本控制。能夠經過命令行或GUI工具進行操做。github

參加實習工做後才發現公司是使用Git進行項目管理的,這與在校內使用的SVN仍是有比較大差異。並且本身在校內過於依賴GUI界面進行項目管理,參加工做後才發現命令行的強大。本文是我的在Windows平臺下學習如何使用Git(命令行)後整理的,不是標準的Git教程。歡迎Git初學者瀏覽學習交流。文中可能有錯誤,懇請各位路過的大牛指正。web

[注:本文斜體字爲示例名稱]緩存

常規初始化操做

創建名爲 folderName 的文件夾服務器

$mkdir folderName

初始化git倉庫,實際上是增長了.git隱藏目錄,把本地目錄變成Git能夠管理的倉庫分佈式

$git init

複製遠程目錄 abcide

$https://github.com/abc

查看狀態工具

$git status

三種狀態

git管理目錄下的文件存在三種狀態學習

  1. Change(Unstaged):你改動了一個,沒有調用任何git命令前,就是這種狀態。
  2. Staged暫存區:調用git add或者git commit -a以後,進入Staged狀態,表示申明要變更了。
  3. Committed:生成新的版本commit號,將改動提交到HEAD,可是還沒同步到遠程倉庫。

在 Git 中,HEAD是一個指向你正在工做中的本地分支的指針(將 HEAD 想象爲當前分支的別名。)url

Git工做流

分支

建立倉庫的時候,會有一個叫「master」 的默認分支。

你能夠建立並命名本身的分支,這樣在本身的分支上改動就不會影響到master和其它分支。

在本身的分支上的修改確認無誤後,能夠隨時合併到master或其它分支。

經過讓不一樣的開發者擁有不一樣分支,使得開發能夠創建在一樣的已有代碼上卻互不影響。

不帶任何參數,查看當前目錄有多少本地分支,以及當前HEAD指向哪一個分支

$git branch

此命令新建一個tmpBranch本地分支(僅僅是創建了一個新的分支,但不會自動切換到這個分支中去)

$git branch tmpBranch

切換到本地tmpBranch分支

$git checkout tmpBranch

新建並切換到本地tmpBranch分支

$git checkout -b tmpBranch

合併分支(將tmpBranch分支與當前所在分支合併)

$git merge tmpBranch

刪除tmpBranch本地分支,若是該本地分支不曾合併,這會提示出錯

$git branch -d tmpBranch

強制刪除tmpBranch本地分支

$git branch -D tmpBranch

oldBranch本地分支重命名爲newBranch

$git branch -m oldBranch newBranch

add(添加)操做

執行add命令,可令文件從Change(Unstaged)狀態變爲Staged狀態(將改動添加到緩存區)

octocat.txt文件從change->staged狀態

$git add octocat.txt

添加當前(aaa)目錄下全部的更新到緩存區

$git add /home/root/aaa/*

取消已add到暫存區的文件gitTest.txt(與add執行相反的操做)

$git reset HEAD gitTest.txt

若編輯修改已暫存(已add到暫存區)的文件,後運行git status會出現暫存先後的兩個版本(Change和Staged)。

若此時Commit,則只會同步已暫存(Staged)的那個版本,而不會同步暫存後修改的部分。

若要同步暫存後修改的部分,應從新add該文件。

add添加到暫存區的文件,git纔會監控它的變化。在Unstaged狀態的文件變化並不會在命令行中體現出來。

查看差別

查看文件被修改以後尚未暫存起來的變化內容,顯示的是與上次暫存文件的差別

$git diff

顯示當前目錄和另外一個叫test分支的差異

$git diff test

查看已經暫存起來的文件和上次提交時的快照之間的差別

$git diff --cached

Commit(提交)操做

Commit操做可將改動提交到本地HEAD.

提交到倉庫,包括一個message說明

$git commit -m "Add cute octocat story"

加上-a參數,把全部已經跟蹤過的文件一次性暫存起來一塊兒提交,這樣不用先git add再git commit,跳過git add步驟

$git commit -a -m 'message'

如下命令將使用當前的暫存區域快照提交。若是剛纔提交完沒有做任何改動,直接運行此命令的話,至關於從新編輯提交說明

$git commit --amend

如下三條命令最終只是產生一個提交,第二個提交命令修正了第一個的提交內容,補上文件forgotten_file

若是提交時忘了暫存某些修改,能夠先補上暫存操做,而後再運行 --amend 提交

$git commit -m 'initial commit'
$git add forgotten_file
$git commit --amend

Push(推送)與Pull(更新)操做

Push命令會把Commit過的改動提交到遠端倉庫。

把本地master分支推送到遠程origin倉庫上

$git push origin master

把本地分支b1推送到遠程origin倉庫上,並命名爲b2

$git push origin b1:b2

從其餘的版本庫(既能夠是遠程的也能夠是本地的)將代碼更新到本地(相似於SVN的Update)

$git pull

移除文件

若在工做目錄中手工刪除了某個已跟蹤(位於暫存區)的文件,則須要運行移除命令記錄這次移除文件的操做。

最後提交的時候,該文件便再也不歸入版本管理。

記錄刪除gitest.txt文件的操做

$git rm gitest.txt

若想把文件從 Git 倉庫中刪除(亦即從暫存區域移除),且僅是從跟蹤清單中刪除,

但仍然但願文件自己保留在當前工做目錄中,加--cached參數選項便可

$git rm --cached readme.txt

標籤操做

Git 使用的標籤有兩種類型:輕量級的(lightweight)和含附註的(annotated)。

新建一個含附註(-a)的標籤

$git tag -a v1.4 -m 'my version 1.4'

新建一個輕量級標籤

$git tag v1.5

查看相應標籤的版本信息

$git show v1.1

其它經常使用操做

重命名操做,將文件名爲file_from的文件重命名爲file_to

$git mv file_from file_to

查看日誌(使用-p選項能夠展開顯示每次提交的內容差別,用-2則僅顯示最近的兩次更新)

$git log

重置,撤銷某次提交(HEAD指向的版本就是當前版本)

$git reset octofamily/octodog.txt

還原修改,把filename文件在工做區的修改所有撤銷,

若該文件在修改後尚未被添加到暫存區,則改回與版本庫同樣的狀態,

反之,則改回添加到暫存區後的狀態

$git checkout -- octocat.txt

爲命令配置別名,此例爲查看最後一次提交信息,這樣,直接輸入git last就等同於輸入git log -1 HEAD

$git config --global alias.last 'log -1 HEAD'
相關文章
相關標籤/搜索