git基础-(1)-基本操作git init | git config | git status | git add | git commit

一、git init

git init 初始化git本地仓库,即在当前目录下创建 .git 文件夹【也就是隐藏目录】

cooldeMacBook-Pro:test cool$ git init
Initialized empty Git repository in /Users/cool/Documents/test/.git/
cooldeMacBook-Pro:test cool$ ls .git
HEAD		config		hooks		objects
branches	description	info		refs
cooldeMacBook-Pro:test cool$ 

二、git config

git config 创建签名,用来区分不同开发人员的身份。
用户名:tom
Email 地址:[email protected] 【不会发送邮件,只填用户名也可以】

1、创建签名(和修改签名操作一样)

项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name tom_pro
git config user.email [email protected]
信息保存位置:./.git/config 文件

系统用户级别:登录当前操作系统的用户范围
git config --global user.name tom_glb
git config --global user.email  [email protected]
信息保存位置:~/.gitconfig 文件

2、签名级别优先级

就近原则:
(1)项目级别优先于系统用户级别,二者都有时采用项目级别的签名。
(2)如果只有系统用户级别的签名,就以系统用户级别的签名为准。
(3)二者都没有不允许。

3、查看和修改签名

查看自己的用户名和邮箱地址:
  $ git config user.name
  $ git config user.email

修改自己的用户名和邮箱地址:
  $ git config --global user.name "xxx"
  $ git config --global user.email "xxx"

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

三、git status

用于查看工作区、暂存区状态。

举例:
在工作区创建a.text文件【.DS_Store是mac自带文件】,然后输入git status

cooldeMacBook-Pro:git-learn cool$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.DS_Store
	a.text

nothing added to commit but untracked files present (use "git add" to track)

On branch master 就是在项目主干上,
Untracked files: 就是未跟踪的文件,也就是那些在工作区却还没有在暂存区中的文件。
nothing added to commit but untracked files present暂存区没有可提交的文件,除了那些还没有放到暂存区【即还没有被跟踪的】的文件。

四、git add

将工作区“新建/修改”过的文件添加到暂存区。

举例:
新建了a.text ,然后输入git add a.text将a.text 添加到暂存区。接着再输入git status

cooldeMacBook-Pro:git-learn cool$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   a.text

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.DS_Store

最后又输入 git rm --cached a.text 将a.text 从暂存区中移除。

cooldeMacBook-Pro:git-learn cool$ git rm --cached a.text
rm 'a.text'
cooldeMacBook-Pro:git-learn cool$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.DS_Store
	a.text

nothing added to commit but untracked files present (use "git add" to track)
cooldeMacBook-Pro:git-learn cool$

五、git commit

将暂存区的内容提交到本地库

1、方法 git commit [file name]会调用 vim 编辑器
补充: vim中显示行号命令 :set nu

举例:
暂存区a.text文件提交到本地仓库: git commit a.text 会调用 vim 编辑器
### vim显示行号命令 :set nu

  1 first submit a.text【这句话是自己写的提交信息,下面的文字是默认存在的】
  2 # Please enter the commit message for your changes. Lines starting
  3 # with '#' will be ignored, and an empty message aborts the commit.
  4 # Explicit paths specified without -i or -o; assuming --only paths...
  5 # On branch master
  6 #
  7 # Initial commit
  8 #
  9 # Changes to be committed:
 10 #       new file:   a.text
 11 #
 12 # Untracked files:
 13 #       .DS_Store
 14 #
~                                                                               
~                                                                               
~                                                                               
~                                                                           
-- INSERT --

文件保存好以后,控制台显示信息:

cooldeMacBook-Pro:git-learn cool$ git commit a.text
[master (root-commit) b857e6b] first submit a.text     
 1 file changed, 6 insertions(+)
 create mode 100644 a.text
cooldeMacBook-Pro:git-learn cool$

=============================================
master (root-commit) 代表主干根提交
b857e6b 相当于版本号
first submit a.text 代表提交备注
1 file changed, 6 insertions(+) 一个文件被修改 增加了三行

2、方法 git commit -m "commit message" [file name]

六、文件修改更新后的操作

举例:
当在工作区修改了a.text文件后,查看状态 git status

cooldeMacBook-Pro:git-learn cool$ 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:   a.text

no changes added to commit (use "git add" and/or "git commit -a")
cooldeMacBook-Pro:git-learn cool$

========================================================
Changes not staged for commit: 指修改的文件没有 添加到缓存区
"git checkout -- ...  to discard changes in working directory 指恢复历史记录,取消在工作区中的修改。

no changes added to commit (use "git add" and/or "git commit -a") 
指缓存区 还没有添加修改信息 可以先 git add 然后 git commit -a 或者直接 git commit -a【这里的 -a 不是和 a.text 的文件名没有任何关系】

将修改的文件提交到缓存区,然后查看状态:

cooldeMacBook-Pro:git-learn cool$ git add a.text
cooldeMacBook-Pro:git-learn cool$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   a.text

cooldeMacBook-Pro:git-learn cool$ 

=============================================== 
 (use "git reset HEAD <file>..." to unstage)   代表:将缓存区的 文件重新去除

将修改过的已经添加到暂存区的a.text 提交,然后查看状态:

cooldeMacBook-Pro:git-learn cool$ git commit -m "Second commit" a.text
[master 4e85073] Second commit
 1 file changed, 2 deletions(-)
cooldeMacBook-Pro:git-learn cool$ 

================================================
 1 file changed, 2 deletions(-)   代表 两行 删除了

 

其实前面已经提到过的,修改好的a.text 可以直接提交 git commit -m "Second commit" a.text 不需要先添加到暂存区。

git概述-入门常识

一、版本控制工具应该具备的功能

协同修改
多人并行不悖的修改服务器端的同一个文件。

数据备份
不仅保存 目录和文 件的当前 状态,还 能够保存 每一个提 交过的历 史状态。 版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据 ,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而Git采取了文 件系统快照的方式 。

权限控制
对团队中 参与开发 的人员进 行权限控 制。
对团队外 开发者贡 献的代码 进行审核 ——Git 独有。

历史 记录
查看修改 人、修改 时间、修 改内容、 日志信息 。
将本地文 件恢复到 某一个历 史状态。

分支 管理
允许开发 团队在工 作过程中 多条生产 线同时推 进任务, 进一步提 高效率。

二、版本控制简介

2.1 版本控制
工程设计领域中使用版本控制管理工程蓝图的设计过程。在IT开发过程中也可以使用版本控制思想管理代码的版本迭 代。

2.2 版本控制工具
思想:版本控制
实现 :版本控制工具

2.3 集中式版本控制工具:
CVS 、SVN、VSS ……

2.4 分布式版本控制工具:
Git、Mercurial 、Bazaar、Darcs……

三、git简史

控制台输入 git help [具体命令] ,可以查看相关帮助文档。

四、git优势

1、大部分操作在本地完成,不需要联网
2、完整性保证
3、尽可能添加数据而不是删除或修改数据分支操作非常快捷流畅
4、与Linux命令全面兼容

五、git使用流程