项目三 远程实践Git仓库设置及使用
本次实验采用在线平台:Kfcoding
目录
-
仓库初始化
命令:git init
初始化仓库后,将创建一个名为 .git 的新隐藏子目录。 该子目录包含Git用于存储其信息的元数据。
查看本地库状态
命令:git status
Git 默认情况下是不会跟踪任何文件的,即所谓的“取消跟踪”策略,除非被明确告知。
检测到未追踪的文件
hello-world.js为红色,表示该文件没有提交至暂存区
要将文件保存或提交到 Git 仓库,首先需要将它们添加到临时区域。 Git 有三个区域,一个工作目录,一个临时区域和仓库本身。 在将它们提交到仓库之前,用户将工作目录中的更改(也称为提升)移动到暂存区域。 Git的一个关键方法是提交是专注的,小的和频繁的。 暂存区域允许您一次只提升某些文件而不是工作目录中的所有更改,从而有助于维护此工作流程。
添加暂存区
命令:git add <文件名>
提交本地库
命令:git commit -m “日志信息” [文件名]
忽视某些文件的提交
有的时候,作者可能对于某些特定文件或目录没有意愿进行提交,例如本地开发环境的配置文件等。 要忽略这些文件,可以在仓库的根目录中创建.gitignore文件。 .gitignore文件允许您为要忽略的文件定义通配符,例如* .tmp将忽略扩展名为.tmp的所有文件。 匹配已定义通配符的任何文件都不会显示在git status输出中,并在尝试git add命令时被忽略
提交更改
命令git diff 可以将工作目录中的更改与先前提交的版本进行比较。 默认情况下,该命令会比较工作目录和HEAD提交。 如果希望与旧版本进行比较,提供相应的哈希值作为参数即可,如git diff <commit>。 与旧版本进行比较将输出所有已修改文件的更改。 如果要将更改与单个文件进行比较,提供名称作为参数
提交更改
查看日志
要查看提交中所做的更改,则需要使用命令git show
远程协作
添加名称为origin的远程仓库。
如果你使用git clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认为origin
通过git push将它们推送到远程仓库
将更改从远程拉入主分支。
查询远程仓库里做了哪些更改:
查找包含 #1234的所有提交
命令git pull是git fetch和git merge两个不同命令的组合
git fetch 去下载更改
撤销更改
将更改从暂存区移回工作目录.
从暂存区域和工作目录中删除更改。
还原上次提交中的更改
恢复HEAD和HEAD~2之间的提交
快速概述提交历史记录。
修复合并冲突
在合并期间,Git将尝试自动组合提交。 如果不存在冲突,则合并将“快进”,您无需执行任何操作。 如果确实存在冲突,那么您将检索错误,并且仓库将处于合并状态
冲突表明合并失败,因为两个仓库都添加了文件
查看冲突内容。
本地更改将显示在顶部,位于 <<<<<<< HEAD和=======之间。
远程更改位于其下,在=======和>>>>>remotes/origin/master之间 。
要解决冲突,需要编辑文件以匹配我们所需的最终状态
选择本地版本或远程版本去解决冲突
如果要在合并过程中恢复并再次尝试,请使用命令git reset -- hard HEAD回到你以前的状态。 如果要使用默认提交信息,请使用git commit -- no-edit.
解决合并冲突的过程
提交 并 查看文件状态
提交并push到远程仓库
从远程存储库中拉取更改并使用默认提交消息
查看提交情况
您可以使用rebase将提交到某一分支上的所有修改都移至到另一分支上,就好像‘重新播放’一样。rebase 的结果是拥有清晰的历史提交,以及合并的完整路径。 由于rebase将重放更改而不是合并,因此每个提交都将具有新的哈希ID。如果您或其他开发人员推送/拉取了仓库,那么更改历史记录可能会丢失提交。因此,您不应该rebase已经提交到公共仓库的内容,例如推送提交然后在不同分支的旧提交中进行rebase,这样将会导致先前的公共仓库具有不同哈希id。
它相当于git fetch和git rebase这两个命令的整合。
使用分支
切换分支
列举出所有分支 / 列出所有分支及其上次提交消息
切换到master分支 / 将新分支中的提交合并到 master
将新分支推送到远程仓库
删除此分支
发现错误
git diff 是比较两个提交之间的变化的最简单的命令。 它会输出两次提交之间的所有差别
虽然git log可以帮助用户查看所提交的消息,但默认情况下它不会输出实际更改的内容
将每个提交放在一行显示
除了显示基本信息外还显示每次提交的内容差异,您需要包含-p提示符(输出内容较多,可按q键退出)
git log将输出整个历史记录。您可以使用许多不同的选项对其进行过滤。 -n <number>指定要从HEAD显示的提交个数
git bisect start
进入bisect模式。
git bisect bad
将当前查看定义为错误。
git bisect good HEAD~4
检查错误提交和良好提交之间的提交
cat list.html
检查内容。
git bisect good
将此次提交标记为good。
cat list.html
查看list.html是否出现错误。
git bisect bad
将此次提交标记为bad。
将结束搜索并输出相关的提交ID。 结果是,我们只搜索了两个提交而不是搜索五个提交。在更大的时间尺度上,bisect可以为您节省大量时间。
对文件运行git Blame将输出最后接触每行的人 。
git blame list.html
如果我们知道我们关注的行,那么我们可以使用-L参数来提供一系列行的输出。
git blame -L 6,8 list.html