Git快速入门-常用命令之独奏篇

Git快速入门系列文章
- Git快速入门-安装配置篇
- Git快速入门-常用命令之独奏篇
- Git快速入门-常用命令之交响乐篇
- Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库

1.概述

Git入门系列第二篇,介绍日常开发中,假设只有你一个人使用Git时常用的命令。

2. Git初始化

2.1 配置Git提交时的用户名和邮箱

git config --global user.name "flysqrlboy"
git config --global user.email "[email protected]" 

注:git config 命令有3个级别的范围参数,分别是global、local和system,建议google一下他们的区别。

2.2 对已有代码目录进行Git初始化

假设你刚刚在Github上创建了一个Project,它的Git地址为[email protected]:flysqrlboy/learn-git.git。这个项目里面什么文件也没有。而现在我们在本地有一套项目代码,在test-project目录下,有两个文件:

$ ls test-project/
a.txt  b.txt

现在想把它托管给Github,则可以通过下面的命令完成

cd test-project
git init
git remote add origin [email protected]:flysqrlboy/learn-git.git
git add a.txt b.txt
git commit -m 'commit initialize'
git push origin master

3. Git 独奏

3.1 Git克隆

假设现在团队里另外一个成员加进这个项目了,他也需要为这个项目贡献代码。那么他要做的第一件事就是把代码从Github上克隆(clone)下来,如下:

git clone git@github.com:flysqrlboy/learn-git.git

3.2 查看提交日志(commit log)

clone下来后,可以看看提交日志:

$ git log --stat --pretty=full
commit 37510d9d26ec125148815a596a6345176d65dc27
Author: flysqrlboy .com>
Commit: flysqrlboy .com>
    commit initialize
 a.txt | 1 +
 b.txt | 1 +
 2 files changed, 2 insertions(+) 

可以看到,这个项目有一次提交,commit的唯一ID(37510d9d26ec125148815a596a6345176d65dc27),提交人(flysqrlboy),commit的说明(commit initialize),和提交了哪些文件等信息。

3.3 查看当前所在分支

$ git branch
* master

星号表示当前所在分支,是master。clone下来默认在master分支内。

3.4 新建分支

现在需要建一个新分支, 代码都提交到这个分支上。首先通过checkout命令创建分支:

$ git checkout -b f_test_1.2.0
Switched to a new branch 'f_test_1.2.0'
$ git branch
* f_test_1.2.0
  master

checkout 命令加上-b 选项 可同时完成创建新分支和切换到该分支上。

3.5 提交代码

现在开始工作了:修改a.txt ,删除b.txt,增加c.txt,如下

$ echo "add something" >> a.txt
$ rm b.txt
$ echo "add by flysqrlboy" > c.txt
$ ls
a.txt  c.txt
  • 通过 git status -s 命令 显示精简格式的状态输出:

这里写图片描述

前面红色字样 M - Modify, D- Delete,?-新增(新增文件是2个问号)

  • 通过 git diff 可以查看修改前后文件的差异:

Git快速入门-常用命令之独奏篇_第1张图片

上面的修改能不能直接提交?试验下:

Git快速入门-常用命令之独奏篇_第2张图片

提交成功了吗?看下提交日志:

这里写图片描述

只有第一次的提交记录,说明刚刚的提交没有成功。留意上面git commit不成功后的提示“Changes not staged for commit” 一句,意思是说:下列修改没有加入到暂存区(stage),不会被提交。暂存区?什么东东? 下面简单说下Git的3个文件区域:工作区、暂存区、版本库。我们平时做的修改、新增、删除文件是针对工作区的,只有执行git add 命令后才会把工作区的变动提交到暂存区;执行git commit命令后,才把暂存区的变动提交到版本库。执行git push 命令后,把版本库的变动提交到远程代码仓库。为了能成功提交,我们先把上面所在的改动从工作区提交到暂存区吧。

3.5.1 git add -i

加上-i 选项的 git add 是个很有Geek范的命令! 它的作用是让我们能挑选哪些文件来提交到暂存区。下面我们用它来把改动提交到暂存区。

Git快速入门-常用命令之独奏篇_第3张图片

最后输入7 或者 q 退出 git add -i 。 这时再输入git diff 发现已经没有差异输出,因为工作区和暂存区里的文件已经没有差异。嗯,这也说明git diff 是比较工作区和暂存区的。

3.5.2 git commit

好,commit一下:

$ git commit -m 'commit by flysqrlboy'
 3 files changed, 2 insertions(+), 1 deletion(-)
 delete mode 100644 b.txt
 create mode 100644 c.txt

3.5.3 git push

下一步就是把这次提交push到远程代码库即GitLab上了。

$ git push origin f_test_1.2.0
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 321 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To [email protected]:zhangsiwei/test.git
 * [new branch]      f_test_1.2.0 -> f_test_1.2.0

这次push也顺便把新建的分支f_test_1.2.0提交到远程Gitlab了。 当然在本地新创建的分支可以在git checkout -b 后执行git push 推送到远程,不必等到有commit后再push。

4. 小结

本文介绍了一个人操作git时常用的命令:

  • git init 初始化git目录
  • git add -i 把修改加入到暂存区
  • git commit 提交代码,即把暂存区的改动提交到本地代码库
  • git push 把本地代码库的提交push到远程仓库

你可能感兴趣的:(git)