Git 基本操做

GIT CLONE 命令 java

將存儲庫克隆到新建立的目錄中,爲克隆的存儲庫中的每一個分支建立遠程跟蹤分支,並從克隆的存儲庫做爲當前活動分支的初始分支。 jquery

命令格式: git

git clone [--template=<template_directory>] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] [--dissociate] [--separate-git-dir <git dir>] [--depth <depth>] [--[no-]single-branch] [--recurse-submodules] [--[no-]shallow-submodules] [--jobs <n>] [--] <repository> [<directory>] github

   

命令示例: 服務器

克隆指定的存儲庫: fetch

$git clone https://github.com/jquery/jquery.git ui

克隆指定的存儲庫的分支並存儲到本地 jquery-2.2 的目錄中: atom

$git clone -b 2.2-stable https://github.com/jquery/jquery.git jquery-2.2 url

   

此默認配置經過在refs/remotes/origin下建立對遠程分支頭的引用,並經過初始化 remote.origin.url 和remote.origin.fetch 配置變量來實現 spa

   

GIT ADD 命令

此命令將要提交的文件的信息添加到索引庫中(將修改添加到暫存區),以準備爲下一次提交分段的內容。 它一般將現有路徑的當前內容做爲一個總體添加,可是經過一些選項,它也能夠用於添加內容,只對所應用的工做樹文件進行一些更改,或刪除工做樹中不存在的路徑了,默認狀況下,git add命令不會添加忽略的文件。 若是在命令行上顯式指定了任何忽略的文件,git add命令都將失敗,並顯示一個忽略的文件列表。由 Git 執行的目錄遞歸或文件名遍歷所致使的忽略文件將被默認忽略。 git add命令能夠用-f(force)選項添加被忽略的文件。

命令格式:

git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--chmod=(+|-)x] [--] [<pathspec>…]

   

命令示例:

添加 src/mian/java 目錄及其子目錄下全部 *.java 文件的內容:

$ git add src/mian/java *.java

將全部修改添加到暫存區:

$ git add .

Ant 風格將全部修改添加到暫存區:

$ git add *

將以Controller結尾的文件的全部修改添加到暫存區

$ git add *Controller

   

經常使用選項:

git add -u [<path>]: 把<path>中全部跟蹤文件中被修改過或已刪除文件的信息添加到索引庫。它不會處理那些不被跟蹤的文件。省略<path>表示 . ,即當前目錄。

git add -A [<path>] : 從全部跟蹤和未跟蹤的文件中添加更改添加到索引庫。省略<path>表示 . ,即當前目錄。

git add -i [<path>]:命令以交互模式查看被全部修改過或已刪除文件但沒有提交的文件,並經過其 revert 子命令能夠查看<path>中全部未跟蹤的文件

   

GIT RM 命令

命令用於從工做區和索引中刪除文件。從索引中刪除文件,或從工做樹和索引中刪除文件。

命令格式:

git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…

   

命令示例:

刪除 text1.txt文件,並把它從git的倉庫管理系統中移除:

$ git rm text1.txt

刪除文件夾:mydir,並把它從git的倉庫管理系統中移除:

$ git rm -r mydir

從索引庫刪除 10.txt 文件,這個不會對文件自己進行刪除操做:

$git rm --cached 10.txt

從索引庫刪除 以 .iml 結尾的文件:

git rm --cached *.iml

   

GIT MV 命令

命令用於移動或重命名文件,目錄或符號連接。

命令格式:

git mv [-v] [-f] [-n] [-k] <source> <destination>

git mv [-v] [-f] [-n] [-k] <source> ... <destination directory>

在第一種形式中,它將重命名 <source>爲<destination>,<source>必須存在,而且是文件,符號連接或目錄。 在第二種形式中,<destination directory> 參數必須是現有的目錄,給定的源(<source>)將被移動到這個目錄中,索引在成功完成後更新,但仍必須提交更改。

   

命令示例:

把一個文件 text.txt 移動到 mydir:

$ git mv text.txt mydir

把一個文件 text.txt 修更名稱爲 text.java :

$git mv text.txt text.java

   

GIT COMMIT 命令

命令用於將更改記錄(提交)到存儲庫。將索引的當前內容與描述更改的用戶和日誌消息一塊兒存儲在新的提交中。要添加的內容能夠經過如下幾種方式指定:

  • 在使用 git commit 命令以前,經過使用git add對索引進行遞增的"添加"更改(注意:修改後的文件的狀態必須爲"added")
  • 經過使用 git rm 從工做樹和索引中刪除文件,再次使用 git commit 命令;
  • 經過將文件做爲參數列出到 git commit命令(不使用--interactive或--patch選項),在這種狀況下,提交將忽略索引中分段的更改,而是記錄列出的文件的當前內容(必須已知到Git的內容) ;
  • 經過使用帶有-a 選項的git commit命令來自動從全部已知文件(即全部已經在索引中列出的文件)中添加"更改",並自動從已從工做樹中刪除索引中的"rm"文件 ,而後執行實際提交;
  • 經過使用--interactive 或 --patch 選項與 git commit 命令一塊兒肯定除了索引中的內容以外哪些文件或應該提交的一部分,而後才能完成操做

   

命令格式:

git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]

[--dry-run] [(-c | -C | --fixup | --squash) <commit>]

[-F <file> | -m <msg>] [--reset-author] [--allow-empty]

[--allow-empty-message] [--no-verify] [-e] [--author=<author>]

[--date=<date>] [--cleanup=<mode>] [--[no-]status]

[-i | -o] [-S[<keyid>]] [--] [<file>…]

   

命令示例:

使用 git add 命令增長文件到索引庫,而後提交到存儲庫,使用 -m 參數能夠增長提交的描述信息:

$ git add .

$ git add newfile.txt

$ git commit -m "the commit message"

會先把全部已經追蹤的文件的改動 git add 進來,而後提交,對於沒有追蹤的文件,仍是須要執行 git add 命令:

$ git commit -a

在更改許多文件以後,能夠經過給出 git commit 的路徑名來更改記錄更改的順序。當給定路徑名時,該命令提交只記錄對命名路徑所作的更改:

$ edit hello.c hello.h # 修改了這兩個文件的內容

$ git add hello.c hello.h

$ edit Makefile

$ git commit Makefile

   

注意:

若是您提交,而後當即發現錯誤,可使用 GIT RESET 命令恢復;該命令不是提交到 Git 倉庫,只是提交到本地的存儲庫,若是須要提交到 Git 倉庫,還須要執行 GIT PUSH 命令;

   

GIT FETCH 命令

命令用於從另外一個存儲庫下載對象和引用。從一個或多個其餘存儲庫中獲取分支或標籤。

理解 fetch 的關鍵, 是理解 FETCH_HEAD,FETCH_HEAD 指的是某個分支在服務器上的最新狀態。這個列表保存在 .git/FETCH_HEAD 文件中, 其中每一行對應於遠程服務器的一個分支。當前分支指向的 FETCH_HEAD, 就是這個文件第一行對應的那個分支。通常來講, 存在兩種狀況:

  • 若是沒有顯式的指定遠程分支,則遠程分支的 master 將做爲默認的 FETCH_HEAD
  • 若是指定了遠程分支,就將這個遠程分支做爲FETCH_HEAD

命令格式:

git fetch [<options>] [<repository> [<refspec>…]]

git fetch [<options>] <group>

git fetch --multiple [<options>] [(<repository> | <group>)…]

git fetch --all [<options>]

   

命令示例:

遠程的 origin 倉庫的 master 分支下載代碼到本地的 origin\master,比較本地的倉庫和遠程倉庫的區別,最後合併到本地倉庫:

$ git fetch origin master

$ git log -p master.. origin/master

$ git merge origin/master

從遠程的 origin 倉庫的 master 分支下載到本地並新建一個分支 temp,比較 master 分支和 temp 分支的不一樣,最後移除 temp 分支:

$ git fetch origin master:temp

$ git diff temp

$ git branch -d temp

   

GIT PULL 命令

命令用於從另外一個存儲庫或本地分支獲取併合並。將遠程存儲庫中的更改合併到當前分支中。在默認模式下,git pull是 git fetch後跟git merge FETCH_HEAD的縮寫。更準確地說,git pull使用給定的參數運行 git fetch,並調用 git merge 將檢索到的分支頭合併到當前分支中。 使用--rebase,它運行git rebase而不是git merge

命令格式:

git pull [options] [<repository> [<refspec>…]]

   

命令示例:

從 origin倉庫獲取master 分支的最新版本併合併到本地:

$ git pull origin master

   

GIT PUSH 命令

命令用於將本地分支的更新,推送到遠程主機。當命令行不指定使用 <repository> 參數推送的位置時,將查詢當前分支的branch.*.remote配置以肯定要在哪裏推送。 若是配置丟失,則默認爲 origin

命令格式:

git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]

[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]

[-u | --set-upstream] [--push-option=<string>]

[--[no-]signed|--sign=(true|false|if-asked)]

[--force-with-lease[=<refname>[:<expect>]]]

[--no-verify] [<repository> [<refspec>…]]

   

命令示例:

將本地的master分支推送到origin主機的master分支。若是master不存在,則會被新建:

$ git push origin master

若是省略本地分支名,則表示刪除指定的遠程分支,由於這等同於推送一個空的本地分支到遠程分支:

$ git push origin :dev

# 等同於

$ git push origin --delete dev

當前分支與遠程分支之間存在追蹤關係,則本地分支和遠程分支均可以省略:

$ git push origin

若是當前分支只有一個追蹤分支,那麼主機名均可以省略

$ git push

相關文章
相關標籤/搜索