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 "flysqrlboy@gmail.com"
注:git config 命令有3个级别的范围参数,分别是global、local和system,建议google一下他们的区别。
2.2 对已有代码目录进行Git初始化
假设你刚刚在Github上创建了一个Project,它的Git地址为git@github.com:flysqrlboy/learn-git.git。这个项目里面什么文件也没有。而现在我们在本地有一套项目代码,在test-project目录下,有两个文件:
$ ls test-project/
a.txt b.txt
现在想把它托管给Github,则可以通过下面的命令完成
cd test-project
git init
git remote add origin git@github.com: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 <flysqrlboy@gmail.com>
Commit: flysqrlboy <flysqrlboy@gmail.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 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范的命令! 它的作用是让我们能挑选哪些文件来提交到暂存区。下面我们用它来把改动提交到暂存区。
最后输入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 git@git.kuaiwifi.com: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到远程仓库