淡淡回忆 发表于 2018-9-17 11:01:42

git 基础

  1、版本控制(vcs):记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
  1)本地版本控制系统:
  1.1 直接复制整个项目目录,然后加上时间戳。
  1.2 通过基础文件和增量(补丁)计算每个版本。
  2)集中化版本控制系统(svn):
  2.1 不同系统上协同工作。
  2.2 中央仓库单点故障。
  3)分布式版本控制系统(git):
  3.1 客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。
  3.2 不存在单点故障问题。
  2、git起源于linux内核开源提交。
  2)svn 关注文件增量,git 关注文件整体。
  1.1 为了提高效率,对于没有修改的文件,git只保存一个上次快照的链接(例如软链)。
  1.2 几乎所有操作都是本地执行。
  1.3 git通过计算文件内容或者目录结构的sha1值来判定文件是否有修改。
  3、git clone
  git clone --bare
  git config --global
  git init
  工作目录,缓存区,git仓库。
  .git目录
  git add
  git commit -m "some message"
  1)在工作目录初始化仓库
  2)从现有仓库克隆
  git status 查看文件状态
  .gitignore文件
  git diff 修改之后还没暂存的详情。
  git diff --cached 暂存的和上次提交的差异。
  git commit -a -m "some message" :add 和 commit一起搞了。
  git rm之后在commit就可以不再跟踪了。
  git rm --cached 仅删除缓存区里的文件,工作区的文件没有删除。
  git mv重命名文件。
  git log 查看提交历史。
  git log -p
  git log --stat
  gitk : git log 的图形化工具。
  git commit --amend 重新提交。
  git reset HEAD :反add。
  git checkout -- : 放弃文件修改。
  git remote :查看远程仓库。 -v列出详情。
  git remote add :添加远程仓库
  git fetch :从远程仓库抓取数据到本地。
  git pull :从远程仓库拉取数据到本地,并且自动合并。
  git push origin master :克隆操作会自动默认使用master 和origin名字。
  git remote show : 查看远程仓库信息。
  git remote rm :移除远程仓库。
  git tag :标签。
  在git中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存区内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
  快照被保存为blob对象。
  分支其实就是从某个提交对象往回看的历史。
  git branch :创建分支。
  HEAD : 当前分支的别名。
  git checkout :分支切换。
  由于 Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度 SHA-1 字串)的文件,所以创建和销毁一个分支就变得非常廉价。说白了,新建一个分支就是向一个文件写入 41 个字节(外加一个换行符)那么简单,当然也就很快了。
  git checkout -b :新建并切换到新分支。
  git merge :分支合并。
  git branch -d :删除分支。
  同一个文件的同一个部分,产生冲突。
  任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。
  git branch -v :查看各个分支最后的提交对象。
  *表示当前所在的分支。
  git branch --merged :查看已经合并到当前分支的分支。(其实可以删掉了)
  git branch --no-merged :查看还未合并到当前分支的分支。
  合并分支会自动生成一个新的提交对象。
  直接从尾部开始的分支在合并时,会提示fast forward,即直接移动指针。
  远程仓库名/分支名。
  远程分支无法修改。
  自动合并是:两个分支的最新提交对象已经共同祖先,三方合并。

页: [1]
查看完整版本: git 基础