Git基礎(chǔ)

創(chuàng)建版本庫(kù)

用git init進(jìn)行初始化git倉(cāng)庫(kù)

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

把文件添加到倉(cāng)庫(kù)里面

git add 文件名
總共分兩步,第一個(gè)用add命令,第二步用commit進(jìn)行提交

  1. 用命令git add告訴Git,把文件添加到倉(cāng)庫(kù)
git add readme.txt
  1. 用命令git commit告訴Git,把文件提交到倉(cāng)庫(kù)
git commit -m 'firstGitFile'
[master (root-commit) 7baadbe] firstGitFile
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

-m 是提交的描述信息

文件狀態(tài)的查看

使用git status 可以 看到此時(shí)文件是否被修改、是否已經(jīng)commit等

$ echo 'aa' >> readme.txt 
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

查看修改的內(nèi)容

使用git diff 文件名 查看具體的文件被修改的內(nèi)容

git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index ad9176c..3ae99eb 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
 firsst
+aa

可以看到 "aa" 是剛剛添加 的東西
下面把修改的內(nèi)容提交到倉(cāng)庫(kù)里面

~ShenQi$ git add readme.txt 
~ShenQi$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   readme.txt

~ShenQi$ git commit -m 'all'
[master 2bdd40c] all
 1 file changed, 1 insertion(+)
~ShenQi$ git status
On branch master
nothing to commit, working tree clean
SQMacBook-Pro:gitProject ShenQi$ 

查看日志

使用 git log 進(jìn)行日志的查看

ShenQi$ git log
commit 2bdd40c4b102c1c0d66fb76e7c4223561909b917
Author: ShenQi <hapic@163.com>
Date:   Tue Aug 22 21:58:46 2017 +0800

    all

commit 7baadbe11855286e7c5f0b8558a66087c7be2008
Author: ShenQi <hapic@163.com>
Date:   Tue Aug 22 21:36:00 2017 +0800

    firstGitFile

如果覺得這樣的格式太亂的話,可以 使用--pretty=oneline 這個(gè)參數(shù)進(jìn)行格式化顯示

gitProject $ git log --pretty=oneline
2bdd40c4b102c1c0d66fb76e7c4223561909b917 all
7baadbe11855286e7c5f0b8558a66087c7be2008 firstGitFile

第一列是版本號(hào),第二列是提交時(shí)加的說(shuō)明

版本的回退

在Git中,用HEAD表示當(dāng)前版本,也就是最新的提交2bdd40....909b917(注意我的提交ID和你的肯定不一樣),上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過(guò)來(lái),所以寫成HEAD~100。

在進(jìn)行版本回退時(shí)可以使用git reset命令

gitProject $ git reset --hard HEAD^
HEAD is now at 7baadbe firstGitFile
gitProject $ cat readme.txt 
firsst

可以看出已經(jīng)回退到上個(gè)版本了

假如現(xiàn)在又不想回退了,想恢復(fù)到最新的那個(gè)版本

gitProject $ git log
commit 7baadbe11855286e7c5f0b8558a66087c7be2008
Author: ShenQi <hapic@163.com>
Date:   Tue Aug 22 21:36:00 2017 +0800

    firstGitFile

使用log命令時(shí)看到新提交的那個(gè)日志已經(jīng)沒了,此時(shí)可以通過(guò)git reflog命令來(lái)看進(jìn)行還原的日志操作

gitProject $ git reflog
7baadbe HEAD@{0}: reset: moving to HEAD^
2bdd40c HEAD@{1}: commit: all
7baadbe HEAD@{2}: commit (initial): firstGitFile

可以看到從提交到還原的所有日志,現(xiàn)在就可以 通過(guò)第一列的版本號(hào)再次還原到最初的那個(gè)版本了

gitProject $ git reset -hard 2bdd40c
error: did you mean `--hard` (with two dashes ?)
gitProject $ git reset --hard 2bdd40c
HEAD is now at 2bdd40c all
gitProject $ cat readme.txt 
firsst
aa

內(nèi)容又回來(lái)了

git log命令加-g參數(shù) 和 git reflog的功能 是一樣的

gitProject $ git log -g --pretty=oneline
2bdd40c4b102c1c0d66fb76e7c4223561909b917 HEAD@{0}: reset: moving to 2bdd40c
7baadbe11855286e7c5f0b8558a66087c7be2008 HEAD@{1}: reset: moving to 7baadbe
7baadbe11855286e7c5f0b8558a66087c7be2008 HEAD@{2}: reset: moving to HEAD^
2bdd40c4b102c1c0d66fb76e7c4223561909b917 HEAD@{3}: commit: all
7baadbe11855286e7c5f0b8558a66087c7be2008 HEAD@{4}: commit (initial): firstGitFile

gitProject $ git reflog
2bdd40c HEAD@{0}: reset: moving to 2bdd40c
7baadbe HEAD@{1}: reset: moving to 7baadbe
7baadbe HEAD@{2}: reset: moving to HEAD^
2bdd40c HEAD@{3}: commit: all
7baadbe HEAD@{4}: commit (initial): firstGitFile

以上說(shuō)的是對(duì)已經(jīng)提交到本地倉(cāng)庫(kù)的文件的回退,本地倉(cāng)庫(kù)我們有緩存區(qū)和分支兩部分,git add就是把本地修改的內(nèi)存添加到緩存區(qū),而git commi是把緩存區(qū)的修改提交到對(duì)應(yīng)的分支上來(lái)。如何從緩存區(qū)撤銷修改呢

分支的創(chuàng)建

git branch dev  --創(chuàng)建分支(dev是創(chuàng)建的分支名稱)
git checkout dev  --切換分支(dev是創(chuàng)建的分支名稱)

可以使用組合命令創(chuàng)建并切換分支

git checkout -b dev   (dev是創(chuàng)建的分支名稱)

查看當(dāng)前的分支

git branch
* dev
  master   (master是系統(tǒng)默認(rèn)創(chuàng)建的主干)

合并某分支到當(dāng)前分支

git merge dev   (dev是分支名稱)

刪除分支

 git branch -d dev   (dev是分支名稱)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,850評(píng)論 9 163
  • 你嬌艷如花 卻似 放下的毒藥 好奇的我總會(huì)忍不住品嘗 他們說(shuō)是毒 我也知 可依舊忍不住 因?yàn)?我有一個(gè)向死而生的理...
    伊蘇灬卡爾閱讀 106評(píng)論 0 0
  • 早上8歲的妹妹morning call叫我起床,稚嫩的聲音斥責(zé)我還不起床,一陣覺得不好意思。6.30她們已經(jīng)準(zhǔn)備吃...
    防水遮陽(yáng)傘閱讀 365評(píng)論 0 0

友情鏈接更多精彩內(nèi)容