一、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
不需要先添加到暂存区。