Git学习笔记

前置知识点
  • HEAD是一个指针,指向当前所在的本地分支(将HEAD想象为当前分支的别名)
  • git有四个存储状态,1、工作态,2、暂存态,3、已提交,4、已推送到远程服务器。
Git一般的操作行为

Git的一般操作行为

Git的基本操作
  1. 安装git
  2. 新建仓库
  3. 配置git
  4. 从远程仓库拉取代码
  5. 检查git状态
  6. 对比查看修改了哪些代码
    • 最新版本库比较【未正式提交的代码(包含工作区与暂存区)】与最新的commit记录进行比较
    • 暂存区与版本库最近一次commit的内容比较
    • 暂存区代码与指定历史版本进行比较
    • 工作区代码与指定历史版本进行比较
    • 比较两个历史记录的改动
  7. 撤销编辑/文件回滚
    • 撤销编辑,恢复到上一次暂存状态;
    • 撤销编辑,恢复到上一次提交状态;
  8. 添加到暂存区/撤销暂存
  9. 忽略文件/移除文件
  10. 提交代码/覆盖提交/撤销提交/指定回滚
  11. 查看提交历史
  12. 打标签
  13. 远程仓库的使用
    • 查看你已经配置的远程仓库服务器
    • 添加一个新的远程Git仓库,同时指定一个方便使用的简写
    • 一个仓库多个推送地址
    • 远程仓库的重命名(同样也会修改你所有远程跟踪的分支名字)
    • 访问远程仓库,从中拉取所有你没有的数据。(它并不会自动合并或修改你当前的工作。当你准备好时你必须手动将其合并入你的工作。
    • 从远程服务器上抓取数据并自动尝试合并到当前所在的分支
    • 推送到远程仓库
    • 强制推送命令,此命令可以用于覆盖远程提交
    • 查看某个远程仓库详细信息
    • 移除一个远程仓库(应该不会影响服务器的分支,只是删除本地)
  14. 分支
    • 查看分支
    • 切换分支
    • 新建分支
    • 合并分支
    • 删除分支
    • 比较分支差异
      • 比较分支的提交记录
      • 比较分支的代码差异
    • 清除无意义的分支数据
    • 恢复误删分支
    • 从历史版本中找回删除的文件
  15. 拓展
安装

官网下载安装包安装;

新建仓库的两种方式
  1. 创建本地仓库,只在本地管理代码
git init		//新建一个项目文件夹,在文件夹中执行下方的git初始化代码
  1. 创建远程仓库,在代码托管平台创建,然后克隆到本地,远程和本地均可管理代码。
git clone 远程仓库地址 [本地文件夹名称]     //如果不指定本地文件夹名称,默认名称为远程仓库名称
配置
  1. 配置昵称与邮箱(全局)任意位置执行下方命令。
$ git config --global user.name "你的昵称"
$ git config --global user.email "你的邮箱"
  1. 配置昵称与邮箱(局部)在项目文件夹内执行下方命令。
git config user.name "你的昵称" 
git config user.email "你的邮箱" 

Tip:这个昵称和邮箱仅仅是在查看改动记录时用的,和鉴权没有关系,推送到服务器时是需要账号密码的。(还未试过公开项目是否需要密码)

从远程仓库拉取代码
git pull

Tip:每次编写代码前都应该拉取一次代码,让本地代码处于最新版本,这样可以有效的避免冲突。

检查代码状态
git status

Tip:可以查看各文件状态,例如在工作区,还是在暂存区等。

对比查看修改了哪些代码
git diff        //比较工作区和暂存区快照之间的差异
git diff HEAD       //与最新版本库比较【未正式提交的代码(包含工作区与暂存区)与最新的commit记录进行比较】
git diff --cached 文件名        //暂存区与版本库最近一次commit的内容比较
git diff --cached hash值        //暂存区代码与指定历史版本进行比较
git diff hash值     //工作区代码与指定历史版本进行比较
git diff hash值1  hash值2       //比较两个历史记录的改动
忽略文件/移除文件
  1. 忽略文件-不想Git跟踪该文件或目录的变动
    在项目根目录创建一个.gitignore文件,把想忽略的文件名或目录填进去。
*.a     #忽略所有的.a文件
build/      #忽略任何目录下名为build的文件夹
!lib.a      #跟踪所有的lib.a,即便你在前面忽略了.a文件
  1. 移除文件
    • 忘了添加ignore,已经被跟踪,不再跟踪此文件/文件夹。先把该文件添加到.gitignore文件中,再执行删除缓存命令
    git rm --cache <file>       //删除文件缓存命令。文件从暂存区移除,状态变为工作态。文件被保留在硬盘上。
    git rm -r --cached <dir>        //删除文件夹缓存命令,因为需要递归。
    git rm -f <file>        //强力模式。文件从暂存区移除,文件也从硬盘上删除。
    
    • 重命名文件 要在Git中对文件改名,可以使用git mv命令来完成。
    git mv oldfilename newfilename
    
撤销编辑/文件回滚
  1. 扔掉工作区的内容,代码内容恢复到上一次暂存状态,如果暂存区内无内容,就恢复到commit了;
git restore <file>      //会覆盖文件内容
  1. 扔掉工作区的内容,代码内容恢复到上一次提交状态;
git restore --staged <file>     //先把暂存区的代码恢复到工作区状态,不会覆盖代码
git restore <file>      //再把工作区的清除,代码恢复到commit,会覆盖代码
添加到暂存区/撤销暂存
  1. 把新编辑的代码放进缓存区
git add 文件名/目录名
  1. 修改存储状态,暂存态回到工作态
git restore --staged <file>     //这个命令把文件从暂存态改成工作态,不会覆盖代码
提交代码/覆盖提交/撤销提交/指定回滚
  1. 提交代码
git commit -m "提交信息"        //提交暂存区更新
git commit -a -m "提交信息"     //自动把所有已经跟踪过的文件暂存起来一并提交,相当于同时执行了git add *
  1. 覆盖提交
git commit --amend      //将暂存区中的文件提交。覆盖上一次提交信息
  1. 撤销提交
git reset HEAD^     //只是撤销提交,改变状态,不改变文件及代码
  1. 指定回滚位置
git reset 哈希值        //不会改变文件及代码,只改变状态
查看提交历史
git log     //查看历史
git reflog show     //这是显示分支管理的命令,找到commitid
远程仓库的使用
git remote -v       //查看你已经配置的远程仓库服务器
git remote add <shortname> <url>        //添加一个新的远程Git仓库,同时指定一个方便使用的简写
git remote set-url --add <仓库名称> <url>      //一个仓库多个推送地址
git remote rename <oldname> <newname>       //远程仓库的重命名(同样也会修改你所有远程跟踪的分支名字)
git fetch <remote>      //访问远程仓库,从中拉取所有你没有的数据。(它并不会自动合并或修改你当前的工作。当你准备好时你必须手动将其合并入你的工作。
git pull        //从远程服务器上抓取数据并自动尝试合并到当前所在的分支
git push <remote> <branch>      //推送到远程仓库
git push -f     //强制推送命令,此命令可以用于覆盖远程提交
git remote show <remote>        //查看某个远程仓库详细信息
git remote remove <remote>      //移除一个远程仓库(应该不会影响服务器的分支,只是删除本地)

分支
  1. 查看分支
git branch      //查看本地分支
git branch -a       //查看所有分支 本地分支和远程的所有分支
git branch -v       //查看每一个分支的最后一次提交信息
git branch --merged     //查看哪些分支已经合并到当前分支
git branch --no-merged      //查看所有包含未合并工作的分支
  1. 分支切换
git checkout <branchname>
  1. 新建分支
git branch 分支名       //创建本地新分支
git checkout 分支名     //导入远程分支。这个命令其实是切换分支用的。但当它发现本地不存在这个分支,会自动找到远程对应的分支然后在本地进行创建。
git checkout -b 分支名      //新建本地分支,并切换到新分支上。
git push --set-upstream 远程仓库名称 分支名称       //本地新建分支,第一次推送的时候需指定远程分支名,不能直接用git push推送
  1. 合并分支
git merge 分支名        //把分支合并到当前分支
  1. 删除分支
git branch -d 分支名        //普通删除,一般情况使用普通删除即可。
git branch -D 分支名        //强制删除(好像例如删除那些未合并的分支)
git push 远程仓库名 --delete 分支名     //删除远程分支
  1. 比较分支差异
    • 比较分支的提交记录
    git log dev ^master     //查看dev分支中有的记录而master分支中没有的提交记录
    git log branch1...branch2       //比较两个分支的差异
    git log --left-right branch1...branch2      //查看差异记录存在于哪些分支上
    
    • 比较分支的代码差异
    git diff 分支名A 分支名B --stat     //查看哪些文件被修改了
    git diff 分支名A 分支名B 文件名     //查看某个文件具体的代码差异
    git diff 分支名A 分支名B        //显示全部文件的修改
    
    • 查看分叉历史
    git log --oneline --decorate --graph --all
    
  2. 清除无意义的分支数据
    git branch -vv      //查看本地与远程关联失效的分支
    
  3. 恢复误删分支
    git reflog show     //这是显示分支管理的命令,找到commitid
    git checkout -b 分支名 commitId     //通过commitId建立一个新的分支
    
  4. 从历史版本中找回删除的文件
    git checkout commitid <filename>
    

拓展

  1. git pullgit fetch 的区别,从服务器同步代码时,如果本地当前分支版本落后于服务器对应分支版本,git pull 则会直接更新commit,而git fetch把代码同步过来,自己决定如何操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值