Git基础

创建版本库

用git init进行初始化git仓库

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

把文件添加到仓库里面

git add 文件名
总共分两步,第一个用add命令,第二步用commit进行提交

  1. 用命令git add告诉Git,把文件添加到仓库
git add readme.txt
  1. 用命令git commit告诉Git,把文件提交到仓库
git commit -m 'firstGitFile'
[master (root-commit) 7baadbe] firstGitFile
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

-m 是提交的描述信息

文件状态的查看

使用git status 可以 看到此时文件是否被修改、是否已经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")

查看修改的内容

使用git diff 文件名 查看具体的文件被修改的内容

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" 是刚刚添加 的东西
下面把修改的内容提交到仓库里面

~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 进行日志的查看

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 这个参数进行格式化显示

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

第一列是版本号,第二列是提交时加的说明

版本的回退

在Git中,用HEAD表示当前版本,也就是最新的提交2bdd40....909b917(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

在进行版本回退时可以使用git reset命令

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

可以看出已经回退到上个版本了

假如现在又不想回退了,想恢复到最新的那个版本

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

    firstGitFile

使用log命令时看到新提交的那个日志已经没了,此时可以通过git reflog命令来看进行还原的日志操作

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

可以看到从提交到还原的所有日志,现在就可以 通过第一列的版本号再次还原到最初的那个版本了

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

内容又回来了

git log命令加-g参数 和 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

以上说的是对已经提交到本地仓库的文件的回退,本地仓库我们有缓存区和分支两部分,git add就是把本地修改的内存添加到缓存区,而git commi是把缓存区的修改提交到对应的分支上来。如何从缓存区撤销修改呢

分支的创建

git branch dev  --创建分支(dev是创建的分支名称)
git checkout dev  --切换分支(dev是创建的分支名称)

可以使用组合命令创建并切换分支

git checkout -b dev   (dev是创建的分支名称)

查看当前的分支

git branch
* dev
  master   (master是系统默认创建的主干)

合并某分支到当前分支

git merge dev   (dev是分支名称)

删除分支

 git branch -d dev   (dev是分支名称)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,738评论 9 163
  • 你娇艳如花 却似 放下的毒药 好奇的我总会忍不住品尝 他们说是毒 我也知 可依旧忍不住 因为 我有一个向死而生的理...
    伊苏灬卡尔阅读 88评论 0 0
  • 早上8岁的妹妹morning call叫我起床,稚嫩的声音斥责我还不起床,一阵觉得不好意思。6.30她们已经准备吃...
    防水遮阳伞阅读 317评论 0 0