Git笔记

这是一篇关于Git的详细笔记,涵盖了从设置名字和邮箱、创建新文件夹到远程仓库的使用,包括分支管理和标签管理。内容包括初始化仓库、提交、查看历史、回退版本、远程仓库的SSH配置、分支创建、合并、冲突解决以及标签的创建和管理。此外,还讨论了如何在GitHub上进行协作。
摘要由CSDN通过智能技术生成

Git

个人笔记,学习自->廖雪锋的官方网站
大部分贴图来源同上

一、Git的使用

设置名字和邮箱

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

注意git config命令的 --global参数,使用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

创建新文件夹

mkdir 文件夹名

移动

cd /路径

显示当前目录

pwd

初始化仓库

git init

将文件添加到仓库

git add 文件名.后缀
git add 文件夹名

提交注释/版本

git commit -m "注释"

在这里插入图片描述

可以一次提交多个文件

查看当前目录的文件

ls
dir

查看工作区当前状态

git status

查看difference

git diff 文件名.后缀

在这里插入图片描述

查看工作区和版本库里面最新版本的区别

git diff HEAD -- 文件名.后缀

查看提交历史

git log

git log命令显示从最近到最远的提交日志

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上pretty=oneline参数

git log --pretty=oneline

回退版本

git reset --hard Hard^ 或 git reset --hard HARD~1
回退到上2个版本
git reset --hard Hard^^ 或 git reset --hard HARD~2

前进到某个版本

git reset --hard 版本号

版本号从git log中获得,也可以使用git reflog查看

查看历史命令

git reflog

工作区&版本库&暂存区

在这里插入图片描述
在这里插入图片描述
暂存区stage - add后存放于暂存区
在这里插入图片描述
提交commit后
在这里插入图片描述

丢弃工作区的修改

$ git checkout -- 文件名.后缀

用版本库里的版本替换工作区的版本
在这里插入图片描述
把暂存区的修改撤销掉(unstage),重新放回工作区

git reset HEAD 文件名.后缀

删除文件

  1. rm 文件名.后缀 或 手动删除
    从版本库中删除文件
  2. git rm 文件名.后缀
  3. git commit -m “删除注释”

ps:先手动删除文件,然后使用git rm 和 git add 的效果是一样的

命令git rm用于删除一个文件,如果一个文件以及被提交到版本库,那么你永远不要担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

二、远程仓库

前言:

在这里插入图片描述

1. 创建SSH Keys

在这里插入图片描述

用记事本/notepad++打开id_rsa.pub文件,全选并复制里面的内容

2. 登陆GitHub,添加SSH Keys

在这里插入图片描述
在这里插入图片描述

创建远程库

在这里插入图片描述

关联远程库

git remote add origin git@github.com:Git的账户名/远程库名.git
如git remote add origin git@github.com:michaelliao/learngit.git
或
git remote add origin https://github.com/Git的账户名/远程库名.git
如git remote add origin https://github.com/Makonike/MyFirstGit.git

在这里插入图片描述

将本地库的所有内容推送到远程库上

git push -u origin 分支名(默认是master)
如git push -u origin Git1

在这里插入图片描述

git push origin master

SSH警告

在这里插入图片描述

从远程库克隆

git clone git@github.com:Git的账户名/远程库名.git

git clone https://github.com/Git的账户名/远程库名.git

三、分支管理

基础分支命令

创建新分支dev,切换至新分支
git checkout -b dev
相当于
git branch dev
git checkout dev
查看当前分支
git branch

git branch命令会列出所有分支,当前分支前面会标一个*号

切换分支回master
git checkout master
合并分支(当前分支在master)
git merge dev

在这里插入图片描述

删除分支

(必须先位于其他分支,现在位于master)

git branch -d dev

switch - 切换分支的新命令

创建并切换到新的分支
git switch -c dev
切换到已有分支master
git switch master
Git鼓励大量使用分支:

在这里插入图片描述

分支冲突

新建了一个分支feature1,经过一系列操作后

在这里插入图片描述

会产生合并冲突 - 文件存在冲突
可以用git merge feature1或git status查看

在这里插入图片描述
在这里插入图片描述

可以用带参数的git log 查看分支合并情况

git log --graph --pretty=oneline --abbrev-commit

最后删除分支feature1

git branch -d feature1

总结

在这里插入图片描述

分支管理策略

在这里插入图片描述

禁用快速合并方式

git merge --no-ff -m "merge with no-ff" dev

在这里插入图片描述可以查看历史记录
在这里插入图片描述

Bug分支

工作进行到一半还没提交,需要新建分支修复bug的时候

储藏工作区

git stash

可以用git status查看工作区状态 是干净的

若bug在master上,创建临时分支issue-101
完成修改后,切换回master分支并合并issue-101,删除issue-101
在这里插入图片描述
回到工作分支dev
查看储藏的工作区

git stash list

在这里插入图片描述
然后恢复工作区

git stash apply
git stash drop

等价于

git stash pop

在这里插入图片描述

可以多次stash,然后恢复指定的stash

git stash apply stash@{0}

因为dev分支是从master上分离出来的,因此dev上也有相同的bug需要被修改
有两个选择:

  1. 可以重复操作一次
  2. 直接从master合并修改bug的那一小部分到dev
    复制特定提交到当前分支
    git cherry-pick 版本号
git cherry-pick 版本号

在这里插入图片描述

分支合并

软件开发中,总有无穷无尽的新的功能要不断添加进来。
每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

如下

git switch -c feature-vulcan
....
git add vlucan.py
git commit -m "add feature vulcan"

准备合并
这时却被通知需要销毁
删除分支

git branch -d feature-vulcan

-提示:销毁失败,该分支还未合并,如果删除则会丢失修改
那就强行删除

git branch -D feature-vulcan

-删除成功

多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了
远程库库名默认为git

查看远程库信息

git remote
或
git remote -v

推送分支

git push origin master

在这里插入图片描述
抓取分支
小伙伴在自己的电脑(把SSH Key添加到Github)
从远程库克隆

只能看到本地的master分支
如果想在dev分支上开发创建远程origin的dev到本地
需要创建本地dev分支

git checkout -b dev origin/dev

在这里插入图片描述
在这里插入图片描述
提交冲突:
在这里插入图片描述

先抓分支,在本地合并,然后再推送

git pull

在这里插入图片描述
要先指定本地分支和远程分支的链接
设置链接

git branch --set-upstream-to=origin/dev dev
再
git pull

在这里插入图片描述

多人协作小结

comments

Rebase - 整理分支提交历史

把本地未push的分支提交历史整理成直线

在与远程分支同步后,对于hello.py做两次提交
在这里插入图片描述

尝试推送

git push origin master

-推送失败
先pull一下

git pull

查看状态

git status

-较远程分支提前3个提交
用git log查看

git log

在这里插入图片描述

发现有点乱
这时可以使用rebase

git rebase 

再用git log查看
在这里插入图片描述

分叉的提交已经成直线型了

在这里插入图片描述

推送到远程

git push origin master

查看效果

git log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmVIurlS-1612501828520)(C:\Users\Makonike\AppData\Roaming\Typora\typora-user-images\image-20210205125714098.png)]

远程分支的提交历史也是一条直线。

补充(以下图源git rebase 大法好

git rebase前
在这里插入图片描述

git rebase后
在这里插入图片描述

尽量在本地自己的分支rebase,避免在公共分支使用
因为会修改提交历史,存在隐患

在这里插入图片描述

四、标签管理

前言:

标签是版本库的一个快照
-指向某个commit的指针

在这里插入图片描述

创建标签

先切换到要打标签的分支上
默认打在最新提交的commit上

git tag v1.0

精确打标签到某个版本

git tag v0.9 版本号

查看所有标签(按字母顺序)

git tag

查看标签信息

git show v0.9

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

使用 git show 标签名 命令可以查看到标签说明文字

在这里插入图片描述

删除标签

git tag -d v0.1

推送某个标签到远程

git push origin v1.0

推送全部标签到远程

git push origin --tags

如果标签已经推送到远程,要删除
先删除本地标签
git tag -d v1.0
再删除远程标签
git push origin :refs/tags/v1.0

git push origin :refs/tags/v1.0

在这里插入图片描述

五、使用GitHub

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值