git 学习

学习廖雪峰 Git 教程记录

git 是一个分布式版本控制系统,更好的管理文件。但是其实 Git 跟踪管理的是修改,并非文件。
初始化一个仓库,使用 git init

创建版本库

添加文件到 Git 仓库,分两步:

  • git add 可一次添加多个文件
  • git commit -m "说明" 提交并添加注释

git staus 可以查看工作区的状态
如果 git status 告诉你文件有被修改过, 用 git diff 可以查看修改内容

版本回退

HEAD 指向的版本是当前版本,使用 git reset --hard commit_id 可以回退到指定版本
git log 可以查看提交历史
git reflog 查看命令历史

暂缓区

Git 的版本库在工作区的隐藏目录 .git 中,里面有很多东西,最重要的是称为 stage 的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针 HEAD

来源于廖雪峰的 Git 教程

git diff HEAD -- 查看工作区和版本库里面最新版本的区别。

撤销修改

直接丢弃工作区的修改时,可是使用 git checkout -- file 注意 -- 必须加。
当文件已经被添加到了暂存区时,想丢弃修改,分两步:

  • git reset HEAD file
  • git checkout -- file
    当文件已经被提交到了版本库时,可以回退版本库。使用 git reset --hard commit_id

删除文件

git rm file 从版本库和工作区中删除文件,之后 git commit
git checkout -- file 用版本库里的版本替换工作区的版本。

远程仓库

  1. 创建 SSH Key
ssh-keygen -t rsa -C "[email protected]"

之后会在目录下生成 .ssh 目录

ssh.png

  1. 在 GitHub 中打开 “SSH and GPG keys”,并且 “New SSH key”,填写 title, 将 id_rsa.pub 中的内容复制进去
    asd.png

当然,也可以添加多个 Key,GitHub 只要知道了你的公钥,就可以确认只有你自己才能推送。远程仓库是为了方便你的硬盘。
将本地仓库内容推送到 GitHub 仓库

git remote add origin [email protected]:MjSeven/learngit.git
git push -u origin master

关联一个远程库,使用 git remote add origin git@server-name:path/repo-name.git
关联后,使用 git push -u origin master 第一次推送master分支的所有内容
之后就可以使用 git push origin master 推送最新修改

分支操作

查看分支 git branch
创建分支 git branch
切换分支 git checkout

快捷操作 git checkout -b

合并某分支到当前分支 git merge
删除分支 git branch -d

分支策略

在实际开发中,有几个基本原则:
master 分支应该是非常稳定的,仅仅用来发布新版本
平时都应该在一个新的分支 dev 上干活,它是不稳定的,到时机成熟时,把 dev 分支合并到 master 上,在 master 分支发布新版本。

图片来自于廖雪峰 git 教程

合并分支时,加上 --no-ff 参数可以使用普通模式合并,合并后的历史有分支

Bug 管理

修复 bug 时,会通过创建新的 bug 分支进行修复,然后合并,最后删除
如果当前分支还有未完成的工作时,先 git stash 保存工作现场,然后去修复 bug,修复后使用 git stash pop,回到工作现场。

如果是新加特性,最好新建一个分支
如果要丢弃一个没有合并过的分支,可以使用 git branch -D 强行删除

本文所有内容来自于以下网站学习:
https://learngitbranching.js.org/?

初级篇

    git commit

仓库中的提交记录保存的是你的目录下所有文件的快照,git 希望记录尽可能地轻量,在每次提交时,它并不会盲目复制整个目录,在条件允许下,它会将当前版本于仓库中的上一个版本进行对比,并把所有差异打包到一起作为一个提交记录

    git branch

使用分支相当于在说:“我想基于这个提交以及它所有的父提交进行新的工作”

git 创建再多的分支也不会造成存储或内存上的开销

    git checkout 

切换工作分支

    git checkout -b 

创建一个新的分支同时切换到新创建的分支

    git merge 

将 name 的分支合并到当前分支
git rebase
Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后再另外一个地方逐个放下去

高级篇

    HEAD

HEAD 是一个对当前检出记录的符号引用 -- 也就是指向逆正在其基础上进行工作的提交记录。

HEAD 总是指向当前分支最近一次提交记录。

^

相对引用,向上提交一个记录,如 git checkout master^ ,就是切换到 master 的父节点。 另外也可以将 HEAD 作为相对引用的参照。例如: git checkout HEAD^

~ 

如果你想在提交树上移动很多步的话,敲很多 ^ 非常烦人,所以引入了操作符 ~ ,该操作符后可以跟一个数字,不跟时与 ^ ,相同。

git branch -f master HEAD~3

将 master 分支强制指向 HEAD 的第 3 级父提交

git reset  /  git revert

撤销变更 通过 HEAD^ 提交, 撤销本地分支

当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,在提交,合并完成。
git log --graph 可查看分支合并图

你可能感兴趣的:(git 学习)