ProGit 阅读笔记-第二天

使用git remote指令可以查看远程仓库的名字,加上-v可以显示仓库地址,添加一个新远程仓库可以使用git remote add <reponame> <url>来实现。 从远程仓库抓取数据使用git fetch <reponame>即可,git clone会默认将远程仓库归于origin名下,git fetch每次更新可以认为是将远程仓库的内容和当前仓库的内容做一个并集。git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。** 在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。 当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。 多次提交后的commit对象之间的关系如下图所示: Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。 创建新分支——git branch <branch name> Git通过HEAD指针指向当前分支,可以认为是当前分支的别名。 切换分支——git checkout <branch name> Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度 SHA-1 字串)的文件,所以创建和销毁一个分支就变得非常廉价,速度自然非常快。 新建并切换到该新分支——git checkout -b <branch name>...

September 14, 2020 · Huo Haodong

ProGit 阅读笔记-第一天

Git文件的三种状态:已暂存(staged)、已修改(modified)、已提交(committed),Git管理项目时文件流转的三个工作区域(Git工作目录、暂存区域、本地仓库)如下所示: 对某个项目采用Git进行版本控制——git init 查看当前文件所处的状态——git status 开始对某个文件进行跟踪/将修改后的文件放入暂存区——git add <obj> 从现有仓库克隆——git clone *.git Git文件变化周期如下所示: .gitignore文件通过正则表达式选择忽略那些以该文件为根目录的所有对应类型的文件,也就是说每一个.gitignore文件控制以其所在目录为根目录的所有文件类型,多个.gitignore文件的规则类似.gitconfig文件——层层覆盖,最低层次的配置覆盖高层次的设置。应当注意的是,如果在高层的.gitignore文件中忽略了低层的.gitignore文件的话,低层的.gitignore文件便会失效。 查看尚未暂存的文件更新了哪些内容,直接使用git diff,不加参数的该命令比较的是工作目录中当前文件和暂存区域快照之间的差异,即修改后还没有暂存起来的变化内容。于此相对的,使用git diff --cached或者git diff --staged来实现暂存区与上次commit之间的差异。 提交暂存区——git commit或者git commit -m来快速填写要提交的内容。当然,每次精心准备暂存区的内容可以精确控制一切快照,但是这样做太麻烦了,如果修改的文件过多,每次都要一个个的git add到暂存区的话,也太过于繁琐了,好在Git提供了一个跳过暂存区而直接将所有已经使用git add跟踪过的文件统一暂存起来并提交的方法git commit -a。 移除暂存区中的某个文件——git rm --cached <file>,应当注意到的是要连带工作区中的原始文件一起删除的话,直接git rm <file> 即可。如果是没有使用Git的命令来删除,手工删除文件的话,还需手动git rm <file>来更新删除文件这一动作。 重命名或移动某个文件——git mv <file1> <file2>,这等价于如下命令: $ mv file1 file2 $ git rm file1 $ git add file2 查看提交的历史——git log,使用-p选项显示每次提交的内容差异,用-2选项显示最近2次的更新,还可以加上--stat简要显示提交的信息,使用--pretty=oneline等方式改变显示的效果,如果此时再加入--graph选项则会展示每个提交所在的分支及其衍生情况。(其实更多的情况下,查看提交历史还是使用专门的或者IDE等自带的GUI工具来看比较方便且更加准确)...

September 12, 2020 · Huo Haodong