git 基礎

1、版本控制(vcs):記錄一個或若干個文件內容變化,以便將來查閱特定版本修訂情況的系統。

1)本地版本控制系統:

    1.1 直接複製整個項目目錄,然後加上時間戳。

    1.2 通過基礎文件和增量(補丁)計算每個版本。

2)集中化版本控制系統(svn):

    2.1 不同系統上協同工作。

    2.2 中央倉庫單點故障。

3)分佈式版本控制系統(git):

    3.1 客戶端並不只是提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。

    3.2 不存在單點故障問題。

2、git起源於linux內核開源提交。

2)svn 關注文件增量,git 關注文件整體。

    1.1 爲了提高效率,對於沒有修改的文件,git只保存一個上次快照的鏈接(例如軟鏈)。

    1.2 幾乎所有操作都是本地執行。

    1.3 git通過計算文件內容或者目錄結構的sha1值來判定文件是否有修改。

3、git clone

git clone --bare

git config --global

git init

工作目錄,緩存區,git倉庫。

.git目錄

git add 

git commit -m "some message"

1)在工作目錄初始化倉庫

2)從現有倉庫克隆

git status 查看文件狀態

.gitignore文件

git diff 修改之後還沒暫存的詳情。

git diff --cached 暫存的和上次提交的差異。

git commit -a -m "some message" :add 和 commit一起搞了。

git rm之後在commit就可以不再跟蹤了。

git rm --cached 僅刪除緩存區裏的文件,工作區的文件沒有刪除。

git mv重命名文件。

git log 查看提交歷史。

git log -p

git log --stat

gitk : git log 的圖形化工具。

git commit --amend 重新提交。

git reset HEAD :反add。

git checkout -- : 放棄文件修改。

git remote :查看遠程倉庫。 -v列出詳情。

git remote add :添加遠程倉庫

git fetch :從遠程倉庫抓取數據到本地。

git pull :從遠程倉庫拉取數據到本地,並且自動合併。

git push origin master :克隆操作會自動默認使用master 和origin名字。

git remote show : 查看遠程倉庫信息。

git remote rm :移除遠程倉庫。

git tag :標籤。



在git中提交時,會保存一個提交(commit)對象,該對象包含一個指向暫存區內容快照的指針,包含本次提交的作者等相關附屬信息,包含零個或多個指向該提交對象的父對象指針:首次提交是沒有直接祖先的,普通提交有一個祖先,由兩個或多個分支合併產生的提交則有多個祖先。


快照被保存爲blob對象。


分支其實就是從某個提交對象往回看的歷史。


git branch :創建分支。

HEAD : 當前分支的別名。

git checkout :分支切換。


由於 Git 中的分支實際上僅是一個包含所指對象校驗和(40 個字符長度 SHA-1 字串)的文件,所以創建和銷燬一個分支就變得非常廉價。說白了,新建一個分支就是向一個文件寫入 41 個字節(外加一個換行符)那麼簡單,當然也就很快了。


git checkout -b :新建並切換到新分支。


git merge :分支合併。


git branch -d :刪除分支。


同一個文件的同一個部分,產生衝突。


任何包含未解決衝突的文件都會以未合併(unmerged)的狀態列出。


git branch -v :查看各個分支最後的提交對象。


*表示當前所在的分支。


git branch --merged :查看已經合併到當前分支的分支。(其實可以刪掉了)


git branch --no-merged :查看還未合併到當前分支的分支。


合併分支會自動生成一個新的提交對象。


直接從尾部開始的分支在合併時,會提示fast forward,即直接移動指針。


遠程倉庫名/分支名。


遠程分支無法修改。


自動合併是:兩個分支的最新提交對象已經共同祖先,三方合併。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章