《玩转git三剑客》笔记

Git

基础

  • .gitignore中指定不需要Git管理的文件
  • 不要对公共分支进行rebase

.git目录

  • HEAD:保存了当前分支的文件目录路径
  • config:保存了local作用域的配置
  • refs:该目录存放了本项目所有分支和tag相关的信息
  • objects:该目录

对象

git cat-file -t [hashcode]查看对象的类型
git cat-file -p [hashcode] 查看对象的内容

commit

tree

  • 文件目录对象

blob

  • 文件对象
  • 对象的内容就是文件的内容

Git命令

git config --list  //查看所有配置
git config --add --local <key> <value>  //对当前仓库进行配置
git config --get <key>  //获取配置值
git config --global  //全局配置
git init  //将已有项目加入git管理
git init myProject //创建myProject文件夹,并把它纳入GIT管理
git add [filename]  //将文件或文件的改动纳入git管理
git add -u  // 将所有修改添加到暂存区等待被提交
git mv file1 file2  //重命名文件
git rm <filename>  //将文件从暂存区和工作区删除
git log --oneline  //简洁地浏览变更历史
git log --all  //查看所有分支的变更历史
git log --graph //增加分支视图
git checkout <branchName>  //切换分支
git checkout -- [filename]  //将工作区的修改撤销,恢复成和暂存区一致
git checkout -b <branch_name> <remote_repo>  // 在本地仓库创建和远端仓库一样的分支,并关联起来,同时切换到该分支
git cat-file -t [hashcode]  //查看对象的类型
git cat-file -p [hashcode]   //查看对象的内容
git diff [commit1] [commit2]  //比较两个commit之间的差异
git diff <分支1> <分支2>  //比较分支1和分支2的差异
git diff  //比较工作区和暂存区的差异
git diff -- [filename]  //比较指定文件在工作区和暂存区的差异
git diff --cached  //比较暂存区和HEAD的差异
git reset HEAD //将暂存区的修改撤销,恢复成和HEAD一致
git reset HEAD -- <filename>  //将暂存区指定文件的修改撤销,恢复成和HEAD一致
git reset --hard <hashcode>  //将hashcode之前的commit全部撤销,暂存区和工作区的相关记录也会同时被撤销,很危险的操作
git branch -d [branchName]  //删除一个已经合并的分支
git branch -D [branchName] //强制删除一个分支,不管它是否已经合并
git commit --amend  //修改上一次提交的变更说明
git commit -am //提交所有修改
git rebase -i [hashCode]  //在该commit上进行重新奠基,其中,pick:保持该提交不变  reword:修改该提交的变更说明  squash:把该提交合并到上一次提交中
git rebase --abort  //丢弃掉未完成的rebase操作
git stash  //将当前暂存区的修改清空放到一个缓存堆栈中,有需要再恢复出来
git stash pop  //将缓存堆栈中的修改恢复到暂存区,同时删除堆栈中该条记录
git stash apply //将缓存堆栈中的修改恢复到暂存区,但不删除堆栈中该条记录
git stash list //查看缓存堆栈中的记录
git clone <projectUrl/.git>  <backupname.git>  //将git项目备份到本地
git clone --bare <projectUrl/.git>  <backupname.git>  //将git项目备份到本地,不覆盖工作区
git remote -v   //查看远端仓库
git remote add <remote_repo_name> <url> //添加远端仓库
git push origin <local>:<remote>  //把本地修改提交到远端
git push <remote_repo_name> //把本地修改推到远端仓库
git push -f origin master //把远程分支强制回退到当前时间点
git pull  //把远端分支的修改拉下来,并更新本地分支,包含了fetch和merge两个操作
git fetch  //从远端拉去代码到本地
git merge <分支1> <分支2>  //合并分支
git merge <远端分支>  //合并远端分支

GitHub

  • 权限设置:Settings->Branches->Add rule

三种Pull Request的区别

  • GitHub的Setting设置中有一个Merge button选项,用于设置允许的分支合并类型,一共有如下三种类型:
    在这里插入图片描述
    • merge commits:将分支合并到主干中,类似于执行git merge命令
    • squash merging:将分支的所有改动合并成一个并合并到主干中,合并后分支的状态不变
    • rebase merging:将分支的所有改动合并到主干中,合并后分支的状态不变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值