这是我在图书馆借阅的《GitHub入门与实践》第四章关于Git的简单介绍的内容整理。
文章目录
基本操作
git init
初始化仓库。
如果初始化成功,目录下会生成.git目录(是隐藏的),这个目录的内容为附属于该仓库的工作树。文件的编辑等操作在工作树中进行,然后记录到仓库。
git status
查看仓库状态。
git add
向暂存区添加文件。
如果只是用Git仓库的工作树创建了文件,它是不会被记入Git仓库的版本管理对象中的。此时如果用git status
查看状态,该文件会显示在Untracked files
里。
要想让文件称为Git仓库的管理对象,就要用git add
命令将其加入暂存区(提交之前的一个临时区域)。
git commit
将暂存区的文件保存到仓库的历史记录中。
使用git commit -m "description"
,-m后的""里是对提交的概述。
也可以直接使用git commit
,这会启动编辑器,按照如下格式记录详细信息:
- 第一行:用一行文字简述更改内容
- 第二行:空行
- 第三行之后:更改的原因和详细内容
git log
查看提交日志。
输出中,commit后的乱码是指向这次提交的哈希值。
如果只想要显式提交信息的第一行,可以使用git log --pretty=short
。
或者只显式指定文件的日志git log README.md
。
git diff
查看工作树与暂存区的区别。
分支操作
git branch
显式分支一览表。
其中左侧带*号的是当前所处分支。
git checkout -b
创建、切换分支。
创建名为feature-A的分支:git checkout -b feature-A
。
切换到master分支:git checkout master
特性(topic)分支
特性分支是集中实现单一特性的分支。在日常开发中,往往会创建多个特性分支,同时在此之外保留一个随时可以发布软件的稳定分支,稳定分支通常由master来担任。
上面创建的feature-A分支就是用来实现A的特性分支,如果在开发中遇到了bug,也需要创建新的分支。
主干分支
主干分支是特性分支的原点,也是合并的终点。通常用master作为主干分支。
git merge
合并分支。
要把feature-A合并到master中。首先切换到master:git checkout master
,然后合并:git merge --no-ff feature-A
git log --graph
用图表的方式查看分支。
更改提交操作
git reset
重置状态版本。
使用git reset --hard 哈希值
来重置到该哈希值对应的状态。
通过git reflog
查看仓库执行过的操作的日志,选择其中对应的哈希值来重置状态。
git rebase -i
压缩历史。将一个提交的修改包含到前一个提交中,压缩称一个历史。
使用git rebase -i HEAD~2
打开编辑器,将要压缩的那次修改的左侧的pick改为fixup即可。
推送至远程仓库
git remote add
添加至远程仓库。
在GitHub上的仓库的路径为"git@github.com:用户名/仓库名.git",使用git remote add origin git@github.com:用户名/仓库名.git
将远程仓库的名称设置为origin。
git push
推送至远程仓库。
使用git push -u origin master
将当前分支的内容推送给仓库origin的master分支。其中-u参数可以在推送的同时,将origin的master设置为本地仓库的上游(upstream),将来运行git pull
时就可以不用添加参数了。
从远程仓库获取
git clone
获取远程仓库。
与git remote add语法类似git clone git@github.com:用户名/仓库名.git
。
git pull
获取最新的远程仓库的分支。