git 的安裝使用以及協做流程

git安裝:php

sudo apt-get install git-corehtml

git使用:git

轉:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/github

http://www.runoob.com/git/git-basic-operations.htmlvim

一、建立git倉庫:緩存

獲取與建立項目命令編輯器

git init

用 git init 在目錄中建立新的 Git 倉庫。 你能夠在任什麼時候候、任何目錄中這麼作,徹底是本地化的。測試

在目錄中執行 git init,就能夠建立一個 Git 倉庫了。好比咱們建立 runoob 項目:url

$ mkdir runoob
$ cd runoob/ $ git init Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/ # 在 /www/runoob/.git/ 目錄初始化空 Git 倉庫完畢。

如今你能夠看到在你的項目中生成了 .git 這個子目錄。 這就是你的 Git 倉庫了,全部有關你的此項目的快照數據都存放在這裏。spa

ls -a .    ..    .git

git clone

使用 git clone 拷貝一個 Git 倉庫到本地,讓本身可以查看該項目,或者進行修改。

若是你須要與他人合做一個項目,或者想要複製一個項目,看看代碼,你就能夠克隆那個項目。 執行命令:

 git clone [url]

[url] 爲你想要複製的項目,就能夠了。

例如咱們克隆 Github 上的項目:

$ git clone git@github.com:schacon/simplegit.git Cloning into 'simplegit'... remote: Counting objects: 13, done. remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13 Receiving objects: 100% (13/13), done. Resolving deltas: 100% (2/2), done. Checking connectivity... done.

克隆完成後,在當前目錄下會生成一個 simplegit 目錄:

$ cd simplegit/ $ ls README   Rakefile lib

上述操做將複製該項目的所有記錄。

$ ls -a . .. .git README Rakefile lib $ cd .git $ ls HEAD description info packed-refs branches hooks logs refs config index objects

默認狀況下,Git 會按照你提供的 URL 所指示的項目的名稱建立你的本地項目目錄。 一般就是該 URL 最後一個 / 以後的項目名稱。若是你想要一個不同的名字, 你能夠在該命令後加上你想要的名稱。

基本快照

Git 的工做就是建立和保存你的項目的快照及與以後的快照進行對比。本章將對有關建立與提交你的項目的快照的命令做介紹。

git add

git add 命令可將該文件添加到緩存,如咱們添加如下兩個文件:

$ touch README
$ touch hello.php $ ls README        hello.php $ git status -s ?? README ?? hello.php $ 

git status 命令用於查看項目的當前狀態。

接下來咱們執行 git add 命令來添加文件:

$ git add README hello.php 

如今咱們再執行 git status,就能夠看到這兩個文件已經加上去了。

$ git status -s A README A hello.php $ 

新項目中,添加全部文件很廣泛,咱們可使用 git add . 命令來添加當前項目的全部文件。

如今咱們修改 README 文件:

$ vim README

在 README 添加如下內容:# Runoob Git 測試,而後保存退出。

再執行一下 git status:

$ git status -s AM README A hello.php

"AM" 狀態的意思是,這個文件在咱們將它添加到緩存以後又有改動。改動後咱們在執行 git add 命令將其添加到緩存中:

$ git add . $ git status -s A README A hello.php

當你要將你的修改包含在即將提交的快照裏的時候,須要執行 git add。

git status

git status 以查看在你上次提交以後是否有修改。

我演示該命令的時候加了 -s 參數,以得到簡短的結果輸出。若是沒加該參數會詳細輸出內容:

$ git status
On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage)     new file: README     new file: hello.php

git diff

執行 git diff 來查看執行 git status 的結果的詳細信息。

git diff 命令顯示已寫入緩存與已修改但還沒有寫入緩存的改動的區別。git diff 有兩個主要的應用場景。

  • 還沒有緩存的改動:git diff
  • 查看已緩存的改動: git diff --cached
  • 查看已緩存的與未緩存的全部改動:git diff HEAD
  • 顯示摘要而非整個 diff:git diff --stat

在 hello.php 文件中輸入如下內容:

<?php echo '菜鳥教程:www.runoob.com'; ?>
$ git status -s A README AM hello.php $ git diff diff --git a/hello.php b/hello.php index e69de29..69b5711 100644 --- a/hello.php +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo '菜鳥教程:www.runoob.com'; +?>

git status 顯示你上次提交更新後的更改或者寫入緩存的改動, 而 git diff 一行一行地顯示這些改動具體是啥。

接下來咱們來查看下 git diff --cached 的執行效果:

$ git add hello.php $ git status -s A README A hello.php $ git diff --cached diff --git a/README b/README new file mode 100644 index 0000000..8f87495 --- /dev/null +++ b/README @@ -0,0 +1 @@ +# Runoob Git 測試 diff --git a/hello.php b/hello.php new file mode 100644 index 0000000..69b5711 --- /dev/null +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo '菜鳥教程:www.runoob.com'; +?>

git commit

使用 git add 命令將想要快照的內容寫入緩存區,  而執行 git commit 將緩存區內容添加到倉庫中。

Git 爲你的每個提交都記錄你的名字與電子郵箱地址,因此第一步須要配置用戶名和郵箱地址。

$ git config --global user.name 'runoob' $ git config --global user.email test@runoob.com

接下來咱們寫入緩存,並提交對 hello.php 的全部改動。在首個例子中,咱們使用 -m 選項以在命令行中提供提交註釋。

$ git add hello.php $ git status -s A README A hello.php $ $ git commit -m '第一次版本提交' [master (root-commit) d32cf1f] 第一次版本提交 2 files changed, 4 insertions(+) create mode 100644 README create mode 100644 hello.php 

如今咱們已經記錄了快照。若是咱們再執行 git status:

$ git status
# On branch master nothing to commit (working directory clean)

以上輸出說明咱們在最近一次提交以後,沒有作任何改動,是一個"working directory clean:乾淨的工做目錄"。

若是你沒有設置 -m 選項,Git 會嘗試爲你打開一個編輯器以填寫提交信息。 若是 Git 在你對它的配置中找不到相關信息,默認會打開 vim。屏幕會像這樣:

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello.php # ~ ~ ".git/COMMIT_EDITMSG" 9L, 257C

若是你以爲 git add 提交緩存的流程太過繁瑣,Git 也容許你用 -a 選項跳過這一步。命令格式以下:

git commit -a

咱們先修改 hello.php 文件爲如下內容:

<?php echo '菜鳥教程:www.runoob.com'; echo '菜鳥教程:www.runoob.com'; ?>

再執行如下命令:

git commit -am '修改 hello.php 文件' [master 71ee2cb] 修改 hello.php 文件 1 file changed, 1 insertion(+)

git reset HEAD

git reset HEAD 命令用於取消已緩存的內容。

咱們先改動文件 README 文件,內容以下:

# Runoob Git 測試 # 菜鳥教程 

hello.php 文件修改成:

<?php echo '菜鳥教程:www.runoob.com'; echo '菜鳥教程:www.runoob.com'; echo '菜鳥教程:www.runoob.com'; ?>

如今兩個文件修改後,都提交到了緩存區,咱們如今要取消其中一個的緩存,操做以下:

$ git status -s M README M hello.php $ git add . $ git status -s M README M hello.pp $ git reset HEAD -- hello.php Unstaged changes after reset: M    hello.php $ git status -s M README M hello.php

如今你執行 git commit,只會將 README 文件的改動提交,而 hello.php 是沒有的。

$ git commit -m '修改' [master f50cfda] 修改 1 file changed, 1 insertion(+) $ git status -s M hello.php

能夠看到 hello.php 文件的修改併爲提交。

這時咱們可使用如下命令將 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件' [master 760f74d] 修改 hello.php 文件 1 file changed, 1 insertion(+) $ git status On branch master nothing to commit, working directory clean

簡而言之,執行 git reset HEAD 以取消以前 git add 添加,但不但願包含在下一提交快照中的緩存。

git rm

git rm 會將條目從緩存區中移除。這與 git reset HEAD 將條目取消緩存是有區別的。 "取消緩存"的意思就是將緩存區恢復爲咱們作出修改以前的樣子。

 

默認狀況下,git rm file 會將文件從緩存區和你的硬盤中(工做目錄)刪除。

若是你要在工做目錄中留着該文件,可使用 git rm --cached

如咱們刪除 hello.php文件:

$ git rm hello.php rm 'hello.php' $ ls README

不從工做區中刪除文件:

$ git rm --cached README rm 'README' $ ls README

git mv

git mv 命令用於移動或重命名一個文件、目錄、軟鏈接。

咱們先把剛移除的 README 添加回來:

$ git add README 

而後對其重名:

$ git mv README  README.md $ ls README.md

git 協做流程 【轉】:http://kb.cnblogs.com/page/535581/

相關文章
相關標籤/搜索