git 的操作指令

git的使用

一、git的基本操作

1、git init –初始化仓库

要使用Git进行版本管理,必须先初始化仓库。Git是使用 git init 命令初始化的。建立一个目录并初始化仓库:

1
2
3
4
$ mkdir git-tutorial
$ cd git-tutorial
$ git init
...初始化信息提示

如果初始化成功,执行了git init命令的目录下就会生成.git目录。这个.git目录里存储着管理当前目录内容所需的仓库数据。

2、 git status –查看仓库的状态

git status 命令用于显示Git仓库的状态。这是一个十分常用的命令,务必牢记。工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作过程中时常使用此命令查看状态。

1
2
3
4
5
6
$ git status
#On branch master
#
#Initial commit
#
nothing to commit(create/copy files and use "git add" to break)

上述执行了命令后的结果显示,当前正处于master 分支下。并且表示尚没有可提交的内容。我们可以在项目仓库目录下创建一个readme.md文件:

1
2
3
4
5
6
7
8
9
$ touch README.md
$ git status
# On branch master
#
# Initial commit
## Unctracked files:# (use "git add <file>..." to include in what will be committed)
#
# README.md
nothing added to commit but untracked files present(use "git add "to track)

可以看到在Untracked files 中显示了 README.md 文件。类似的,只要对Git的工作树或仓库进行操作,git status 命令的显示结果就会发生变化。

3、 git add –向暂存区添加文件

仅用git仓库的工作树创建了文件,该文件并不会被记入Git 仓库的版本管理对象中。要想让文件成为Git仓库的管理对象,就需要用 git add命令将其加入暂存区(Stage 或者 Index)中。暂存区是提交之前的一个临时区域。

$ git add README.md

4、 git commit –保存仓库的历史记录

git commit 命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。

1
$ git commit -m "First commit"

-m参数后的”First commit”称作提交信息,是对这个提交的概述。

5、 git log –查看提交日志

git log 命令可以查看以往仓库提交的日志。包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。关于合并我们会在后面解说。

1
2
3
4
$ git log
commit xxxx
Author: ****
Date: sun May 5 16:06:49 2013 +0900

如上所示,commit栏显示的提交的哈希值。Git的其他命令中在指向提交时会用到这个哈希值。Author栏显示的提交的用户名和邮箱地址。Date栏中显示提交执行的日期和时间。再往下就是提交的信息。

6、 git diff –查看更改前后的差别

git diff 命令可以查看工作树,暂存区,最新提交之间的区别。
在README.md中写点东西

# Git 教程
执行git diff,查看当前工作树和暂存区的差别。

1
2
3
4
5
6
7
8
$ git diff

diff --git a/README.md b/README.md
index (hash 值)
--- a/README.md
+++ b/README.md
@@ -0 , 0 +1 @@
+# Git教程

其中”+”表示新增加的行,”-“表示被删除的行。

二、git分支的操作

在进行多个并行作业是,常会用到分支。
分支图
不同的分支中可以同时进行完全不同的作业。等该分支的作业完成后再与master分支合并。

1、git branch –显示分支一览表

git branch 命令可以将分支名列表显示,同时可以确认当前所在分支。

1
2
$ git branch
* master

上面的*号表示当前处于master 分支下,且在该分支下进行开发,而且当前仅有一个master 分支。

2、git checkout -b –创建、切换分支

如果想以当前的master分支为基础创建新的分支,我们需要用到
git checkout -b 命令

1
2
3
4
5
6
$git checkout -b feature-a
#Switched to a new branch 'feature-a'
等同于
$ git branch feature-a
$ git checkout feature-a
表示创建分支并切换分支。

3、git merge –合并分支

分支在功能特性开发完成后,往往需要讲这些特性添加到主分支中,此时就需要将分支合并。

  • 首先切换到主分支master分支
1
2
$ git checkout master
#Switched to branch 'master'
  • 合并分支

$ git merge --no-ff feature-a

三、更改提交的操作

1、git reset –回溯历史版本

1
2
$ git reset --hard <hash值>
#HEAD is now at **** Add index

2、消除冲突

假如此时有两个分支,A和B ,A分支里的README.md 里有aaa内容,B分支里的README.md里有bbb内容,此时,A分支更改的部分与本次想要合并的fix-B分支更改的部分发生冲突。
解决冲突:打开冲突文件更改冲突的部分。

四、推送至远程仓库

1、git remote add –添加远程仓库

git remote add origin <远程仓库地址>

2、git push –推送至远程仓库

  • 推送至master分支:$ git push -u origin master

  • 推送至master以外的分支:

1
2
$ git checkout -b feature-a
$ git push -u origin feature
  • 如果执行git remote add origin <远程仓库地址>,出现错误:
    fatal: remote origin already exists 则执行以下语句:
    git remote rm origin
    再往后执行git remote add origin <远程仓库地址>即可.
  • 在执行git push -u origin feature时,报错:
    error:failed to push som refs to.......
    则执行以下语句:
    git pull origin master
    先把远程服务器github上面的文件拉先来,再push 上去。

五、从远程仓库获取

1、git clone –获取远程仓库

git clone <仓库远程地址>

2、git pull –获取最新远程仓库分支

$ git pull origin feature-a

六、推荐:

  • Pro Git (一部零基础的Git学习资料)
  • LearnGitBranching(学习git基本操作的网站)
  • tryGit(可以以便操作一边学习Git的基本功能)
坚持原创技术分享,您的支持将鼓励我继续创作!