Git工作區有一個隱藏目錄.git,是git的版本庫。版本庫里有很多東西,其中最重要的就是stage(或稱index)的暫存區。git會為我們自動創建第一個分支master,以及指向master的一個指針叫HEAD.

參考鏈接: (可以在上面下載中文版Pro Git文檔)

Git?

git-scm.com
圖標

git diff , git diff --staged 和 git diff HEAD的差別:

當一個文件做了stage,然後又做了一些修改,則:

git diff 顯示當前工作區的文件和stage區文件的差異

git diff --staged 顯示stage區和HEAD的文件的差異

git diff HEAD 顯示工作區和上次遞交文件的差異.

git status:

git status命令能展示工作目錄和stage區的狀態. 使用他你能看到那些修改被staged到了, 哪些沒有, 哪些文件沒有被Git tracked到. git status不顯示已經commit到項目歷史中去的信息. 看項目歷史的信息要使用git log.

在每次commit之前先使用git status檢查文件狀態是一個很好的習慣, 這樣能防止你不小心commit了你不想commit的東西.

先創建本地repo文件夾,然後git init(在內部會生成.git文件夾)

然後克隆遠程的倉庫: git clone xxx.git

在clone完成之後,Git 會自動為你將此遠程倉庫命名為origin(origin只相當於一個別名,運行git remote –v或者查看.git/config可以看到origin的含義),並下載其中所有的數據,建立一個指向它的master 分支的指針,我們用(遠程倉庫名)/(分支名) 這樣的形式表示遠程分支,所以origin/master指向的是一個remote branch(從那個branch我們clone數據到本地)

這個是執行 git remote -v 的結果,看出來origin其實就是遠程的git地址的一個別名。

一般在新的系統上,我們都需要先配置下自己的 Git 工作環境。配置工作只需一次,以後升級時還會沿用現在的配置。當然,如果需要,你隨時可以用相同的命令修改已有的配置。

Git 提供了一個叫做 git config 的工具(譯註:實際是 git-config 命令,只不過可以通過 git 加一個名字來呼叫此命令。),專門用來配置或讀取相應的工作環境變數。而正是由這些環境變數,決定了 Git 在各個環節的具體工作方式和行為。這些變數可以存放在以下三個不同的地方:

/etc/gitconfig 文件:系統中對所有用戶都普遍適用的配置。若使用 git config 時用 --system 選項,讀寫的就是這個文件。

~/.gitconfig 文件:用戶目錄下的配置文件只適用於該用戶。若使用 git config 時用 --global 選項,讀寫的就是這個文件。

當前項目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config 文件):這裡的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以 .git/config 里的配置會覆蓋 /etc/gitconfig 中的同名變數。

第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條信息,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:

$ git config --global user.name "Jonas Gu"

$ git config --global user.email [email protected]

如果用了 --global 選項,那麼更改的配置文件就是位於你用戶主目錄下的那個,以後你所有的項目都會默認使用這裡配置的用戶信息。如果要在某個特定的項目中使用其他名字或者電郵,只要去掉 --global 選項重新配置即可,新的設定保存在當前項目的 .git/config 文件里。

要檢查已有的配置信息,可以使用 git config --list 命令:

$ git config --list

user.name=abc

[email protected]

remote.origin.url=ssh://git@bitbucket-example.com:7999/test.git

color.status=auto

color.branch=auto

color.interactive=auto

color.diff=auto

git pull遇到問題:Pull is not possible because you have unmerged files.

解決:(git reset --hard FETCH_HEAD)

注意: FETCH_HEAD表示上一次成功git pull之後形成的commit點, 可以用git log查看.

git log 有許多選項可以幫助你搜尋你所要找的提交, 接下來我們介紹些最常用的。

一個常用的選項是 -p,用來顯示每次提交的內容差異。 你也可以加上 -2 來僅顯示最近兩次提交.

git pull拉最新的代碼只要在tests目錄下的任意子目錄都可以

最好先git pull如果有衝突就git stash到本地另一個stage中,繼續git pull,然後再git add,git commit, git push ...

這樣才會使分支歷史一直是直的.

1. git add file1 file2 ... (add 到本地的repo(倉庫))

2. git commit -m 注釋(或者"注釋")

3. git pull(pull = fetch + merge. 如果遠端相同文件有改動,且比你本地的新,則會有merge提示.)

如果git pull不成功,會有提示本地的某個file和server上的不一致(本地已經修改的不是最新的), 要再git checkout filename(覆蓋本地)

git checkout:Git的checkout有兩個作用,其一是在不同的branch之間進行切換,例如git checkout new_branch就會切換到new_branch的分支上去;另一個功能是還原代碼的作用,例如git checkout app/model/test.py就會將test.py文件從上一個已提交的版本中更新回來,未提交的內容全部會回滾

4. git push -u origin develop

一般我們總會有些文件無需納入 Git 的管理,也不希望它們總出現在未跟蹤文件列表。 通常都是些自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。 在這種情況下,我們可以創建一個名為 .gitignore的文件,列出要忽略的文件模式。 來看一個實際的例子:

$ cat .gitignore

*.[oa]

*~

第一行告訴 Git 忽略所有以 .o 或 .a 結尾的文件。一般這類對象文件和存檔文件都是編譯過程中出現的。 第二

行告訴 Git 忽略所有以波浪符(~)結尾的文件,許多文本編輯軟體(比如 Emacs)都用這樣的文件名保存副

本。 此外,你可能還需要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。 要養成一開始就設置好

.gitignore 文件的習慣,以免將來誤提交這類無用的文件。

推薦閱讀:

相关文章