git三剑客--笔记

在这里插入图片描述
常用命令大全,侵删
https://www.jianshu.com/p/46ffff059092,侵删

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

01课程综述

版本管理:
集中式管理系统VCS
分布式管理系统VCS:服务器和客户端都有完整的版本库

git特点:

  • 最优存储能力
  • 非凡的性能
  • 开源
  • 很容易备份
  • 支持离线操作
  • 很容易定制工作流程

git三剑客:git github gitlab

02安装GIT

官网安装git

03使用Git之前需要做的最小配置

配置user信息:

  • 配置user.name
    $git config --global user.name “your_name”
  • 配置user.email
    $git config --global user.email “your_email@domin.com”

config的三个作用域:

  • local:只对某个仓库有效
  • global对当前所有仓库有效
  • system对系统所有登陆的用户有效
  • 缺省等于local

显示config的配置,加–list:

  • git config --list --global
  • git config --list --local
  • git config --list --system

04创建第一个仓库并配置local用户信息

建GIT仓库:
1 把已有的项目代码纳入git管理

$ cd 项目代码所在的文件夹
$ git init

2 新建项目直接用GIT管理

$ cd 某个文件夹
$ git init your_project  #会在当前路径下创建和项目名称同名的文件夹
$ cd your_project

3 git 命令

$ git clone [url]  # 下载一个项目和它的整个代码历史
$ git config -e [--global]  # 编辑Git配置文件
$ git add [file1] [file2] ...  # 添加指定文件到暂存区
$ git add [dir]  # 添加指定目录到暂存区,包括子目录
$ git add .  # 添加当前目录的所有文件到暂存区
$ git commit -m [message]  # 提交暂存区到仓库区
$ git commit [file1] [file2] ... -m [message]  # 提交暂存区的指定文件到仓库区
$ git commit -a  # 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -v  # 提交时显示所有diff信息
$ git log  # 显示当前分支的版本历史
$ git status  # 显示有变更的文件


05通过几次commit来认识工作区和暂存区

$ git add # 进暂存区
$ git add -u # 已经管理的文件进暂存区
$ git commit -m [message] # 进仓库

06给文件重命名的简便方法

$ git add 新文件名 # 进暂存区
$ git rm 原文讲名 # 已经管理的文件进暂存区
$ git commit -m [message] # 进仓库

第二种:
$ git mv 原文件名 新文件名 # 重命名,直接在暂存器改了

07通过gitlog查看版本演变历史

$ git log --oneline  # 简洁的观看历史
$ git log -n4 # 查看最近的4次提交,所有分支
$ git log --all # 查看所有分支版本信息
$ git log --graph # 以图的形式查看所有分支版本信息

08gitk:通过图形界面工具来查看版本历史

09探密.git目录

HEAD :指向分支 可以切换分支
config:跟仓库相关的信息,user信息等
refs:heads分支 tags标签(里程碑)
object:存了文件
文件类型:commit blob tree tag

10commit、tree和blob三个对象之间的关系

blob跟文件名没关系,只要文件相同就是同一个blob
极客时间,侵删

11小练习:数一数tree的个数

12分离头指针情况下的注意事项

detached HEAD
分离头指针,没有branch跟他连接,可以做变更,但是切换分支时如果想保留,必须跟branch连接

13进一步理解HEAD和branch

HEAD可以指代新分支的最后一次提交
HEAD也可以不跟分支挂钩
HEAD最终是会落脚到某一个commit

新建或者切换branch,HEAD会跟着变

14怎么删除不需要的分支?

$ git branch  # 列出所有本地分支
$ git branch -r  # 列出所有远程分支
$ git branch -a  # 列出所有本地分支和远程分支
$ git branch [branch-name]  # 新建一个分支,但依然停留在当前分支
$ git checkout -b [branch]  # 新建一个分支,并切换到该分支
$ git branch [branch] [commit]  # 新建一个分支,指向指定commit
$ git branch --track [branch] [remote-branch]  # 新建一个分支,与指定的远程分支建立追踪关系
$ git checkout [branch-name]  # 切换到指定分支,并更新工作区
$ git checkout -  # 切换到上一个分支
$ git merge [branch]  # 合并指定分支到当前分支
$ git cherry-pick [commit]  # 选择一个commit,合并进当前分支
$ git branch -d [branch-name]  # 删除分支
$ git branch -v   # 查看分支

15怎么修改最新commit的message?

$ git commit -a  # 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -v  # 提交时显示所有diff信息
$ git commit --amend -m [message]  # 使用一次新的commit,替代上一次提交, 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend [file1] [file2] ...  # 重做上一次commit,并包括指定文件的新变化

16怎么修改老旧commit的message?

$ git rebase -i 父类的哈希值  #然后根据提示来

17怎样把连续的多个commit整理成1个?

$ git rebase -i 父类的哈希值  #然后根据提示来

18怎样把间隔的几个commit整理成1个?

19怎么比较暂存区和HEAD所含文件的差异?

$ git diff  # 显示暂存区和工作区的差异
$ git diff  -- 文件名# 显示暂存区和工作区的某个文件的差异
$ git diff --cached [file]  # 显示暂存区和上一个commit的差异
$ git diff HEAD  # 显示工作区与当前分支最新commit之间的差异
$ git diff [first-branch]...[second-branch]  # 显示两次提交之间的差异
$ git diff --shortstat "@{0 day ago}"  # 显示今天你写了多少行代码

20怎么比较工作区和暂存区所含文件的差异?

21如何让暂存区恢复成和HEAD的一样?

$ git reset HEAD

22如何让工作区的文件恢复为和暂存区一样?

$ git checkout -- 文件名 

23怎样取消暂存区部分文件的更改?

$ git reset HEAD -- 文件名

24消除最近的几次提交

git reset --hard 要保留的commit的哈希码

25看看不同提交的指定文件的差异

git diff commit1 commit2 -- 文件名  # 比较两个commit中某个文件的差异

26正确删除文件的方法

git rm 文件名  # git直接把暂存区文件删除

27开发中临时加塞了紧急任务怎么处理?

$ git stash  #临时存起来
$ git stash list 
$ git stash apply # 存放内容取出来放到工作区,但是stash里边还有
$ git stash pop  # 工作区放入,但是stash里丢掉  

28如何指定不需要Git管理的文件?

.gitignore 里边填写文件格式

29如何将Git仓库备份到本地?

哑协议和智能协议:
直观区别:哑协议传输进度不可见;智能协议传输可见
传输速度:智能协议快

$ git fetch [remote]  # 下载远程仓库的所有变动
$ git remote -v  # 显示所有远程仓库
$ git remote show [remote]  # 显示某个远程仓库的信息
$ git remote add [shortname] [url]  # 增加一个新的远程仓库,并命名
$ git pull [remote] [branch]  # 取回远程仓库的变化,并与本地分支合并
$ git push [remote] [branch]  # 上传本地指定分支到远程仓库
$ git push [remote] --force  # 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --all  # 推送所有分支到远程仓库

30注册一个GitHub账号

31配置公私钥

可以粘贴到不同的服务器,不需要每次都创建
直接上官网可以看讲解

32在GitHub上创建个人仓库

.gtiignore licenses

33把本地仓库同步到GitHub

$ git remote -v  # 显示所有远程仓库  
$ git remote show [remote]  # 显示某个远程仓库的信息
$ git remote add [shortname] [url]  # 增加一个新的远程仓库,并命名
$ git pull [remote] [branch]  # 取回远程仓库的变化,并与本地分支合并
$ git push [remote] [branch]  # 上传本地指定分支到远程仓库
$ git push [remote] --all  # 推送所有分支到远程仓库


34不同人修改了不同文件如何处理?

35不同人修改了同文件的不同区域如何处理?

36不同人修改了同文件的同一区域如何处理?

37同时变更了文件名和文件内容如何处理?

38把同一文件改成了不同的文件名如何处理?

39禁止向集成分支执行push-f操作

40禁止向集成分支执行变更历史的操作

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值