Git笔记

文章目录

    • 简介
    • Git 命令
      • 创建仓库
      • 添加到暂存区
      • 提交到当前分支
      • 查看当前分支与工作区文件的区别
      • 回退到当前分支中的上一个版本
      • 撤销修改
      • 删除文件
      • 添加远程仓库
      • 克隆仓库
      • 分支
      • Bug管理
      • feature管理
      • 多人开发
      • rebase(变基)
      • tag标签

简介

Git是用C开发的分布式的版本控制系统。

Git笔记_第1张图片
工作区:本地的文件目录,你直接操作的地方
stage:暂存区,git add 之后修改会添加到此处
master:是一个当前的分支,git commit会把暂存区的修改提交到当前分支
HEAD:表示当前版本

Git 命令

创建仓库

git init

添加到暂存区

  1. 添加单个文件
git add 
  1. 添加当前文件夹所有文件
git add .

提交到当前分支

git commit -m "what you have updated"

查看当前分支与工作区文件的区别

git diff 

回退到当前分支中的上一个版本

git reset --hard HEAD^

前n个版本

git reset --hard HEAD~n

回到指定版本

获取commit Id

git reflog
git reset --hard 

撤销修改

  1. 已修改,未提交到暂存区

    git restore 
    
  2. 已提交到暂存区,未提交到当前分支

    git restore --staged 
    
    git reset HEAD 
    
  3. 提交到当前分支,未提交到远端仓库

    回退到上一个版本

删除文件

  1. 误删

    git restore 
    
  2. 确实要删除

    git rm 
    

添加远程仓库

要关联一个远程库,使用命令

git remote add origin git@server-name:path/repo-name.git

关联后,第一次推送master分支的所有内容;

git push -u origin master

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

克隆仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

分支

  1. 查看分支:
git branch
  1. 创建分支:
git branch 
  1. 切换分支:
git switch 
  1. 创建加切换
git switch -c 
  1. 合并某分支到当前分支:
git merge 

​ 普通合并:会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m  
  1. 删除分支:
git branch -d 

Bug管理

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

feature管理

  1. 增加一个新功能,最好新建一个分支进行开发。
  2. 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

多人开发

  • 克隆同一个远程仓库
  • 查看远程库信息,使用git remote -v
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

rebase(变基)

  • rebase操作可以把本地未push的分叉提交历史整理成直线;
  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

tag标签

标签的意义:方便后期回溯

  • 命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • 命令git tag -a -m "blablabla..."可以指定标签信息;
  • 命令git tag可以查看所有标签。
  • 命令git push origin 可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d 可以删除一个本地标签;
  • 命令git push origin :refs/tags/可以删除一个远程标签。

参考
https://www.liaoxuefeng.com/wiki/896043488029600

你可能感兴趣的:(杂七杂八,git,github)