Git笔记

简介

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

在这里插入图片描述
工作区:本地的文件目录,你直接操作的地方
stage:暂存区,git add 之后修改会添加到此处
master:是一个当前的分支,git commit会把暂存区的修改提交到当前分支
HEAD:表示当前版本

Git 命令

创建仓库

git init

添加到暂存区

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

提交到当前分支

git commit -m "what you have updated"

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

git diff <filename>

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

git reset --hard HEAD^

前n个版本

git reset --hard HEAD~n

回到指定版本

获取commit Id

git reflog
git reset --hard <id>

撤销修改

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

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

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

    回退到上一个版本

删除文件

  1. 误删

    git restore <file>
    
  2. 确实要删除

    git rm <file>
    

添加远程仓库

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

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 <name>
  1. 切换分支:
git switch <name>
  1. 创建加切换
git switch -c <name>
  1. 合并某分支到当前分支:
git merge <name>

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

git merge --no-ff -m <message> <name>
  1. 删除分支:
git branch -d <name>

Bug管理

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

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

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

feature管理

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

多人开发

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值