Git学习笔记
Git 初始化
git config
Git配置文件采用的是INI文件格式,git config用于读取和更改INI配置文件的内容
git config [<file-option>] name value git config [<file-option>] --unset name
-
例:初始化姓名和邮件地址
git config --system user.name "codenot" git config --system user.email codenot@qq.com
-
例:别名设置
git config --system alias.ci commit // 设置 git config --unset --system alias.ci // 删除
-
例:命令输出开启颜色显示
git config --global color.ui true
--global 和 --system 表示配置的位置。
--global代表用户主目录下配置, --system代表系统级配置文件, 如果不加表示版本库级别配置文件。
暂存区相关操作
Git 的许多命令都是围绕着工作区、暂存区、版本库来执行的。
文件.git/index实际上就是一个包含文件索引的目录树,就是一个虚拟的工作区。这个虚拟工作区的目录树中,记录了文件名和文件的状态信息。.git/refs/head/master就是指向版本库的目录树.
文件的内容保存在Git对象库.git/objects目录中。
1. git add
工作区 --> 暂存区
表示把指定文件的内容写入到对象库中的一个新的对象中,然后更新暂存区目录树,记录到暂存区文件索引中。
2. git commit
暂存区 --> 版本库
表示把暂存区的目录树写到版本库中,master得到更新,让其指向新的目录树(即原来暂存区的目录树)。
3. git reset
-
格式1:
git reset [<commit>] -- <paths> ...
此用法在命令中包含路径
<paths>
,这不会重置引用,更不会更改工作区,而是用指定的提交<commit>
(省略则表示使用HEAD)下的文件<paths>
替换掉暂存区的文件。解释下引用的意思: HEAD会指向
refs/head/<branch>
,修改引用就是修改refs/head/<branch>
里面指向的值。-
例:
git reset HEAD <paths> // 相当于取消之前执行的git add <paths>
-
-
格式2:
git reset [--soft | --mixed | --hard] [<commit>]
此用法会重置引用,根据不同的选项,可以对暂存区或工作区进行重置。省略
<commit>
则表示使用HEAD-
例:替换工作区、暂存区、引用
git reset --hard <commit>
-
例:只更改引用的指向
git reset --soft <commit>
-
例:更改引用指向、重置暂存区。
git reset --mixed <commit> // 默认就为 --mixed
-
例:
git reset HEAD // 表示把暂存区目录数替换成HEAD指向的目录树,工作区不受到影响。 git reset // 同上
</ul> </li> </ul> -
格式1:
git checkout [<commit>] [--] <paths> ...
表示用commit指向的目录树替换暂存区以及工作区,commit省略则相当于从暂存区检出
-
例:
git checkout -- <file> // 用暂存区的file替换工作区的 git checkout . // 用暂存区所有文件替换工作区 git checkout HEAD <file> // 表示用master指向的目录树文件替换暂存区以及工作区文件
-
-
格式2:
git checkout [<bracnch>]
-
例:
git checkout branch // 更新HEAD指向到branch分支,用branch指向的目录树更新暂存区和工作区 git checkout // 汇总显示工作区、暂存区与HEAD的差异.
</ul> </li> -
格式3:
git checkout -b <new_branch> <start_point>
-
相当于
git branch <branchname> // 创建分支 git checkout <branchname> // 切换到新的分支,新的分支从start_point指向的提交开始创建
</ul> </li> </ul>
5. git diff
git diff // 工作区比较暂存区 git diff --cached // 暂存区比较HEAD git diff HEAD // 工作区比较HEAD
Git对象
git cat-file -p sha1值 // 查看sha1对象内容
远程版本库
git checkout -b <new_branch> <remote-branch> // 从远程分支中创建本地分支,自动建立跟踪。 git remote add <remotename> <url> // 注册远程版本库 git remote -v // 查看已经注册的远程版本库
1. git push 命令解释:
1. 如果为当前分支设置了<remote>, 则等于git push <remote> 2. 没有设置<remote>,等于 git push origin 3. 如果在远程版本库中创建分支,执行 git push <remote> <new_breanch>
2. git pull
-
-
4. git checkout
-