因為在工作中要經常與git打交道找爱,想想入職時間有四個五月了,實際工作時間兩三個月左右。正好趁著這個假期做一下總結汹押。
先推薦兩個git的教程:
git基礎-獲取git倉庫
git版本庫的初始化屯援,一般有兩種方式:
- 克隆現(xiàn)有的倉庫
- 克隆倉庫的命令格式為
git clone [url]
猛们,比如:git clone https://github.com/libgit2/libgit2
- 克隆倉庫的命令格式為
- 在現(xiàn)有的目錄下初始化倉庫**
- 如果你打算使用 Git 來對現(xiàn)有的項目進行管理,你只需要進入該項目目錄并輸入:
git init
- 這時候如果你需要將它放到遠程服務器上狞洋,可以在遠程服務器上創(chuàng)建一個目錄弯淘,并把可訪問的URL記錄下來,此時你就可以利用
git remote add
命令來增加一個遠程服務器端
- 如果你打算使用 Git 來對現(xiàn)有的項目進行管理,你只需要進入該項目目錄并輸入:
注:git remote add origin git://github.com/someone/another_project.git
上面的命令就會增加URL地址為git://github.com/someone/another_project.git
吉懊,名稱為 origin
的遠程服務器庐橙,以后提交代碼的時候只需要使用 origin
別名即可.
git-分支
首先,如果我們要創(chuàng)建一個dev
分支借嗽,然后切換到dev
分支:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
可以用下面的一行來代替:
$ git checkout -b dev
如果我們在dev
分支上做了一些工作态鳖,完成后要先切回master
分支
$ git checkout master
Switched to branch 'master'
現(xiàn)在,我們把dev
分支的工作提交到master
分支上:
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到當前分支恶导。
合并完成后浆竭,就可以放心地刪除dev
分支了:
$ git branch -d dev
Deleted branch dev (was fec145a).
工作中經常遇到的情景是:別人遠程創(chuàng)建了一個分支,怎么切換到遠程的分支上呢?
git branch -D #刪除一個分支
git branch -va #查看所有的遠程分支
git checkout -b <name> <remote name> #創(chuàng)建并轉到遠程分支并改名字為name
git checkout -b <name> <remote name>
就是在本地新建一個名為<name>
的分支兆蕉,并轉到遠程的分支<remote name>
上羽戒。
git-版本回退
有時候我們發(fā)現(xiàn),自己commit
提交的東西不對虎韵,那可怎么辦呢易稠?
首先,git必須知道當前版本是哪個版本包蓝,在git中驶社,用HEAD
表示當前版本,也就是最新的提交测萎,上一個版本就是HEAD^
亡电,上上一個版本就是HEAD^^
,當然往上100個版本寫100個^比較容易數(shù)不過來硅瞧,所以寫成HEAD~100份乒。
$ git reset --hard HEAD^
總結一下:
- HEAD指向的版本就是當前版本,因此腕唧,Git允許我們在版本的歷史之間穿梭或辖,使用命令
git reset --hard commit_id
。 - 穿梭前枣接,用
git log
可以查看提交歷史颂暇,以便確定要回退到哪個版本。 - 要重返未來但惶,用
git reflog
查看命令歷史耳鸯,以便確定要回到未來的哪個版本。
git-子模塊(submoudle)
有種情況我們經常會遇到:某個工作中的項目需要包含并使用另一個項目膀曾。 也許是第三方庫县爬,或者你獨立開發(fā)的,用于多個父項目的庫添谊。 現(xiàn)在問題來了:你想要把它們當做兩個獨立的項目捌省,同時又想在一個項目中使用另一個。
git通過子模塊
來解決這個問題碉钠。 子模塊允許你將一個 Git 倉庫作為另一個git倉庫的子目錄纲缓。 它能讓你將另一個倉庫克隆到自己的項目中,同時還保持提交的獨立喊废。
我們首先將一個已存在的git倉庫添加為正在工作的倉庫的子模塊祝高。 你可以通過在 git submodule add
命令后面加上想要跟蹤的項目 URL
來添加新的子模塊。
$ git submodule add https://github.com/chaconinc/DbConnector
git-clean用法
$ git clean -fd -n #列出要刪除的文件列表
$ git clean -f -d
$ git clean -fd
其中 -f
表示文件 -d
表示目錄, 如果還要刪除.gitignore
中的文件那么再加上-x.
如果git submodule
中也存在需要刪除的文件那么需要再加個-f
污筷, 變成git clean -dff
$ git revert
還原一個版本的修改工闺,必須提供一個具體的Git版本號乍赫,例如git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20
,Git的版本號都是生成的一個哈希值