命令列的格式是:$: commd [-o|--option] param1 param2...
他是以資料夾為單位執行的,這個資料夾也叫做工作目錄安裝完以後,在乙個資料夾下滑鼠單擊右鍵,就會出現乙個類似dos的黑框
用這個黑框來操作這個資料夾,輸入什麼命令,怎麼建立一會再說。
假設已經已經在這個資料夾下建立了這個 git倉庫,這個資料夾內就會出現這個一.git
命名的資料夾,這個資料夾就是git倉庫;
這個資料夾就被.git資料夾管了,.git就是這個倉庫,倉庫裡面儲存著工作目錄中的所有檔案的不同版本,這些檔案可以屬於git倉庫管,也可以用命令把他排除在外。
.git資料夾:存放所有的版本;
物件:
git的物件分為兩類,物件和引用,物件就是乙個檔案,檔名是hash值。引用也是乙個檔案,它的檔名是正常的字元,它的檔案內容只有乙個別的檔案民(hash)。
版本鏈:
每乙個提交都是乙個**版本物件。**除了第乙個版本提交物件(首物件)之外,每一次提交物件中都有乙個指標針指前乙個提交物件。可以有多個不同的首提交物件,產生這個的情況通過fetch命令獲取了多個不同版本庫的版本鏈。
當然每乙個新的倉庫建立以後,第一次提交後就會有乙個版本鏈,如果是轉殖就一定了。
head引用物件:
它是提交等所有操作git倉庫的基點,它指向乙個提交、分支(普通本地分支,遠端分支,遠端跟蹤本地分支),標籤。
不是指向分支的head,都叫分離的head.
可以任意移動。
分支:
是乙個引用物件,指向乙個提交物件。也可以指向乙個分支。
分支是用來改變某個提交物件,的下次提交物件的指向的方向。對一條提交連而言,他就像一棵樹,在某棵樹的末梢有兩個分支,head指向誰,下一次的提交就可以產生乙個新的分叉。
分支**,在命令列中,要是沒有分支,怎麼找乙個頭對吧。。。分支還有這個作用;分支就是個頭**
其實沒有分支也可以,head直接指向乙個非末梢提交,進行乙個提交,也會產生分支。但是沒法標頭,不好識別啊。
分支也是可以隨意移動某個提交物件上的。
遠端分支:
它的命名格式是:remote/branch
它不能受head的提交移動,除非強制移動或者進行網路操作。通過更新遠端倉庫內容
遠端跟蹤分支:
這就是個本地分支,但是這個本地和遠端分支關聯一起了,所有自動合併的網路操作,都指的是這個分支和對應的遠端分支的合併。
只有轉殖時候有乙個預設匹配的master遠端跟蹤分支,其他的遠端分支也想要這個就得要獲取手動進行匹配了。
合併:工作目錄:工作目錄中儲存的是某個版本的檔案;
工作目錄中的檔案,等於head指向的提交物件版本。如果head指向改變,工作目錄檔案會跟著一起改變。
建立乙個版本庫
git init:
$ git add *.c
$ git add license
$ git commit -m 『initial project version』
git commit -a 跳過暫存區
git clone :
所有遠端的分支都變成了,遠端分支,只自動生成了乙個本地的和remote/matser對應的遠端跟蹤本地分支,master
配置跟蹤乙個.gitignore 檔案
檢視修改:
當前修改後的檔案——暫存區快照中的;git diff
暫存區中的(後乙個 + )——最近一次提交中的:git diff --staged
刪除:
$ git rm
會刪除實際的檔案
加 --cached 選項只會刪除倉庫中的檔案,實際檔案不被刪除
移動檔案:
不能直接在工作目錄中移動,要用git mv
檢視提交:
git log會顯示從head到樹源頭的提交這條線上的所有提交,這就顯的分支的重要性了,沒有分支咋用這個。hash值那麼長。
加 -p顯示每次提交的補丁
–start 簡要顯示
–pretty="…" 改變顯示的格式
限制顯示提交的數量
遠端倉庫
檢視 git remote [-v顯示url]
新增:git remote add
抓取所有資料:git fetch
抓取後本地跟蹤分支自動合併遠端分支:git pull
推送本地的某條提交(包括前面從樹頭到這裡all):git push origin master
若是本地跟蹤分支,遠端倉庫上的對應分支會自動合併。
檢視伺服器:git remote show
重名和移除:git remote rename/rm
標籤:列出:git tag
windows和linux都有對應的系統級別的配置檔案,.git裡面也有乙個
往配置檔案裡寫入配置(這裡用命令)
使用者名稱
git config [–global] user.name 「name」
郵箱
git config [–global] user.email [email]
編輯器(windows下)
$ git config [–global] core.editor 「『c:/program files/notepad++/notepad++.exe』 -multiinst -notabbar -nosession -noplugin」
命令說明
git status
這個能檢視git倉庫的各種檔案狀態,包括現在head在什麼地方
git branch branch-name git branch -f branch-name name-commit
在目前提交上建立乙個新的分支 讓分支移動到某個,提交上,提交名可以用相對引用。
git checkout [branch-name] [hash-commit][any-name~|1
] git checkout -b new-branchname
切換head指向分支,並改變工作目錄中的檔案 如果引數是某個提交的hash值,head不在指向分支,而是單獨的提交記錄 往前移,也可以用相對引用,在乙個分支名或提交檔名或head的後面,加上"^「符號,就代表往上移動乙個(或num個,這個要用」~"符號)相對,如果往前沒有分支就會移動到提交上。 直接新建乙個分支,並轉移到這個分支上
git log
檢視當前提交的提交歷史的hash值(從當前分支到該分支提交的最開始),用的時候可以只輸入前幾位就可以了。
git merge branch-name
就是讓對方融入進自己,可以多線合併如果兩個分支不在同一直線,會新生成乙個包括兩個分支的提交(如果沒有衝突,有的話自己修改),head也會移到這裡。
git rebase branch-name git rebase -i branch-name
以對方為基點,進行單線合併,如果在一條直線,那就沒啥,如果不在,就會複製自己,在這個基點前建立乙個分支,自己移到那裡。 另外那個分支變禿了? 互動式
git reset 前面的提交名
撤回到這個提交
git revert 某個提交名或者分支名
並沒有撤回,在本分支前新加乙個,和這個引數提交前一樣的提交。這樣就可以分享到別的伺服器那裡了
git cherry-pick branch-name|hash-name ……
在本提交點(或者分支上),自動複製數個引數指定的提交物件(分支對應的也是提交點),然後做出提交,head自動向前移動(如果head指向的是分支分支也會向前移動。 當你知道你所需要的提交記錄(並且還知道這些提交記錄的雜湊值)時, 用 cherry-pick 再好不過了 —— 沒有比這更簡單的方式了。
git reset --hard 目標版本號」
這個會使當前版本到這個目標版本之後的提交都消失
最關鍵的是理解這些概念,分支,原創分支,原創跟蹤分支,合併。另外要說一下github這個**,github是乙個git倉庫**,上面儲存著數以萬計的倉庫,有開源的也有私人的,是世界上最大的開源**。自己申請個賬號,建立個git倉庫,雖然沒有在電腦上,但它的功能和你自己建立的沒有任何區別,可以在本地轉殖你建立的倉庫,把他作為遠端倉庫。
|
最關鍵的是理解這些概念,分支,原創分支,原創跟蹤分支,合併。另外要說一下github這個**,github是乙個git倉庫**,上面儲存著數以萬計的倉庫,有開源的也有私人的,是世界上最大的開源**。自己申請個賬號,建立個git倉庫,雖然沒有在電腦上,但它的功能和你自己建立的沒有任何區別,可以在本地轉殖你建立的倉庫,把他作為遠端倉庫。
num ↩︎
快速入門Git版本控制系統
可以通過如下命令找到git的幫助手冊 git help git help git help 例如 我們想檢視git pull的幫助,可以通過如下命令 git help pull git pull help git config global user.name git config global u...
git版本控制系統
總結 1.初始化乙個git倉庫,使用 git init 命令 2.新增檔案到git倉庫分兩步 第一步,使用命令 git add file 注意,可反覆多次使用,新增多個檔案 第二步,使用命令 git commit 完成小結 1 head 指向的是當前版本,因此可以使用 git reset hard ...
git 版本控制系統
一 git版本控制 解決的三個痛點問題 作用 1.解決虛擬機器意外壞了 磁碟損壞等意外情況 2.版本持續變化,需要對很多個版本進行管理 3.能夠方便多人進行協同開發 建議 使用centos7 centos6中git版本太低 注意 git與linux作者相同 二 git版本控制的特點 1.分布式 2....