Git 学习笔记

一小时Git教程传送门

git 基础

1. 起始配置

# 配置自己的姓名
git config --global user.name "Your Name" 
# 配置自己的邮箱
git config --global user.email "email@example.com" 
    
    注意
    1.命令之间有空格
    2.上面的两个命令只需要运行一次即可, 如果输入错误, 重新运行命令即可
    3.可以使用 git config -l 命令来查看配置信息窗口高度不够,会出现滚动窗口,此时使用 q 	字母退出配置查看窗口) quit 的缩写
    4.这个命令以后不用自己手敲, 直接复制修改『名字』与『邮箱』即可
    5.命令的运行不受位置的影响

2. 新建仓库

方法一:
//  先创建一个空目录,然后进入,对空目录进行初始化
git init
//  空目录就变成了仓库
    
方法二:
git init my_git
//  在当前目录下创建仓库 my_git,  创建好的仓库中, ls -a  可以查看到 .git文件,就表示仓库创建成功
    
方法三:
//  远程克隆仓库
git clone 仓库网址 

仓库本质上还是一个目录, 删除仓库和删除目录方法一样

rm -rf <name>

3. 工作区域和文件状态

Git 的本地数据管理分为三个区域: 工作区 暂存区 本地仓库

工作区相当于车间, 进行生产, 然后 使用 g i t    a d d git \ \ add git  add 将生产完的产品装车, 送入暂存区, 最后 g i t    c o m m i t    − m    " 文本 " git \ \ commit \ \ -m \ \ "文本" git  commit  m  "文本" , 将产品送到本地仓库

直接使用 g i t    c o m m i t git \ \ commit git  commit 会进入 vim 编辑文本

g i t    c o m m i t    − a m    " 文本 " git \ \ commit \ \ -am \ \ "文本" git  commit  am  "文本" , 同时完成添加至暂存区和提交至本地仓库的两个操作

g i t    s t a t u s git \ \ status git  status 查看仓库状态

g i t    l o g git \ \ log git  log 查看仓库提交历史记录

g i t    l o g    − − o n e l i n e git \ \ log \ \ --oneline git  log  oneline 版本哈希之只显示前 7 位

g i t    l s − f i l e s git \ \ ls-files git  lsfiles 查看暂存区内容

4. git reset 回退版本

g i t    r e s e t    − − s o f t git \ \ reset \ \ --soft git  reset  soft + 版本id, 用 git log --oneline 查询, 回退到某一个版本, 并且保存工作区和暂存区的所有修改内容

g i t    r e s e t    − − h a r d git \ \ reset \ \ --hard git  reset  hard 丢弃工作区和暂存区的所有修改内容

g i t    r e s e t    − − m i x e d git \ \ reset \ \ --mixed git  reset  mixed 只保留工作区的修改内容, 丢弃暂存区的修改内容

g i t    r e s e t    H E A D git \ \ reset \ \ HEAD git  reset  HEAD^ 以 mixed 形式回到上一个版本

g i t    r e f l o g git \ \ reflog git  reflog 查看操作历史记录, 可以找到误操作之前的版本号; 如果不小心 git reset --hard 删掉了当前的工作区, 用 git reset --hard 回到误操作之前的版本即可

5. git diff 查看差异

g i t    d i f f git \ \ diff git  diff 查看工作区与暂存区的差异(不显示新增文件)

g i t    d i f f    − − c a c h e d git \ \ diff \ \ --cached git  diff  cached 查看暂存区与本地仓库的差异

g i t    d i f f    H E A D git \ \ diff \ \ HEAD git  diff  HEAD 查看工作区与本地仓库的差异

g i t    d i f f    I D 1    I D 2 git \ \ diff \ \ ID_1 \ \ ID_2 git  diff  ID1  ID2 比较两个版本之间的差异, git log --oneline 查看前 7 位 版本号的哈希值即可

HEAD 指向分支的最新提交节点

HEAD~ 和 HEAD^ 都可以表示前一个版本, HEAD~2 可以表示 HEAD 之前的第 2 个版本

g i t    d i f f    H E A D git \ \ diff \ \ HEAD git  diff  HEAD ~ 2    H E A D    f i l e 3. t x t 2 \ \ HEAD \ \ file3.txt 2  HEAD  file3.txt 只查看这两个版本之间 file3.txt 的差异

git diff <branch_name> <branch_name> 比较分支之间的差异

6. git rm 删除文件

rm 删除文件只能删除掉个工作区的文件, 然后还要 git add . , 更新暂存区

g i t    r m < f i l e − n a m e > git \ \ rm <file-name> git  rm<filename> , 可以直接在工作区和暂存区删除文件

g i t    r m    − − c a c h e d    < f i l e > git \ \ rm \ \ --cached \ \ <file> git  rm  cached  <file>, 把文件从暂存区删除, 但保留在当前工作区

g i t    r m    − r    ∗ git \ \ rm \ \ -r \ \ * git  rm  r   , 递归删除某个目录下的所有子目录和文件

最后提交即可

7. .gitignore 忽略文件

作用: 忽略掉一些不应该被加入到版本库中的文件, 例如日志文件和文件夹, .class文件, .0文件, .env文件. .zip和tar文件. .pem文件

系统或软件自动生成的文件

编译产生的中间文件和结果文件

运行时生成的日志文件, 缓存文件, 临时文件

涉及身份, 密码. 口令, 秘钥等敏感信息文件

e c h o    ∗ . l o g >    . g i t i g n o r e echo \ \ *.log > \ \ .gitignore echo  .log>  .gitignore, 使用通配符, 忽略所有的 log 日志

匹配规则

8. SSH配置和克隆仓库

// 在用户根目录下
	cd .ssh
// 然后使用生成密钥指令
	ssh-keygen -t rsa -b 4096
// 按下回车后会提醒输入密钥的文件名称,  如果是第一次操作, 可以直接回车
// 这个命令会在用户根目录的.ssh目录下生成一个id_rsa的密钥文件
// 如果已经配置过ssh密钥了, 就输入一个新的文件名, 然后回车, 防止覆盖掉之前的

执行完会生成两个新文件, id_rsa 是私钥文件, id_rsa.pub 是公钥文件

// 打开公钥, 并复制所有内容
vi id_rsa.pub
// 打开github里的设置,选择SSH and GPG keys, 点击New SSH key
// 把公钥内容复制到里边, 起一个标题
// 按上述流程做完就完成SSH密钥的配置了
    
// 如果指定了新的文件名,例如 test, 还需要增加一步配置
// 创建一个新的config文件, 并添加以下5行设置
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/test

在github中创建一个新仓库, 就可以git clone下来了

注意, 使用时不要连接公共网络, 例如校园网, 可能出现 ssh: connect to host github.com port 22: Connection refused 错误, 或者路由器禁用了 SSH 方式的端口

g i t    p u s h git \ \ push git  push 推送到默认远程仓库更新内容

g i t    p u l l git \ \ pull git  pull 拉取默认远程仓库更新内容

9. 关联本地仓库和远程仓库

进入本地创建好的仓库, 然后执行

g i t    r e m o t e    a d d    < s h o r t n a m e >    < u r l > git \ \ remote \ \ add \ \ <shortname> \ \ <url> git  remote  add  <shortname>  <url> , 一般默认 shortname 为 origin 为远程仓库的别名, 作用是将本地项目连接到远程Git仓库

g i t    r e m o t e    − v git \ \ remote \ \ -v git  remote  v , 查看当前仓库所已关联的远程仓库的别名和地址

g i t    p u s h    − u    o r i g i n    m a s t e r git \ \ push \ \ -u \ \ origin \ \ master git  push  u  origin  master , 注意, origin可能会在某个关节拼写错误, 导致push失败; 其次 最后一个参数一般为main, 具体看自己电脑上 git的版本, 完整写法是 main:main, 把本地仓库的main分支推送给远程仓库的main分支, 如果分支名词相同, 只需要写一个 main 即可, 这里我的都是 master, 第一次提交需要完整的写出来, 后续如果相同分支的提交, 使用 git push 即可

g i t    p u l l    < 远程仓库名 >    < 远程分支名 > : < 本地分支名 > git \ \ pull \ \ <远程仓库名> \ \ <远程分支名>:<本地分支名> git  pull  <远程仓库名>  <远程分支名>:<本地分支名>, 这里我的是 git pull origin master, 因为远程分支名和本地分支名相同 , 所以一个master即可, 这句话作用是拉取仓库别名为 origin 的 master 分支到本地, 与本地合并

g i t    r e m o t e    r e m o v e    n a m e git \ \ remote \ \ remove \ \ name git  remote  remove  name, 删除远程仓库别名列表

g i t    r e m o t e    r m    o r i g i n git \ \ remote \ \ rm \ \ origin git  remote  rm  origin, 删除已经添加的远程仓库

g i t    r e m o t e    r e n a m e    o l d N a m e    n e w N a m e git \ \ remote \ \ rename \ \ oldName \ \ newName git  remote  rename  oldName  newName, 远程仓库别名重命名

g i t    r e m o t e    s e t − u r l    o r i g i n    < u r l > git \ \ remote \ \ set-url \ \ origin \ \ <url> git  remote  seturl  origin  <url>, 更改默认的远程仓库

g i t    r e m o t e    a d d    < 仓库别名 >    < u r l > git \ \ remote \ \ add \ \ <仓库别名> \ \ <url> git  remote  add  <仓库别名>  <url> 增加关联仓库, 对于非默认仓库, 使用命令 git push <仓库别名> <分支名称>, 就可以推送

10. GItee 的使用和 Gitlab 的本地部署

11. GUI 工具

gitkraken

12. vscode 配置 GIt

13. 分支简介和基本操作

可以把分支看作是代码库中的不同版本, 可以独立存在并且有自己的提交记录, 适合团队协作和开发管理

多个开发人员可以在自己的分支上进行开发工作, 最后再合并到主线代码库中

可以在一个分支上进行新功能开发, 或者建立一个问题修复的分支来处理一些bug和缺陷, 让主线代码仓库处于一个随时可用的比较稳定的状态, 而不会影响到其他功能的开发和测试,

g i t    b r a n c h git \ \ branch git  branch 查看所有分支

g i t    b r a n c h    < b r a n c h    n a m e > git \ \ branch \ \ <branch \ \ name> git  branch  <branch  name>, 创建一个新分支

g i t    c h e c k o u t    < b r a n c h    n a m e > git \ \ checkout \ \ <branch \ \ name> git  checkout  <branch  name>, 切换分支, 还有恢复文件的作用, 当文件和分支名相同时, 默认切换分支而不是恢复文件, Git 2.23 版本开始提供

g i t    s w i t c h    < b r a n c h    n a m e > git \ \ switch \ \ <branch\ \ name> git  switch  <branch  name>, 专门用来切换分支的命令

g i t    m e r g e    d e v git \ \ merge \ \ dev git  merge  dev, 先切换到main分支, 然后执行, 这样操作就表示把分支 dev 合并到 main 中, 提示选择默认保存即可

g i t    b r a n c h    − d    n a m e git \ \ branch \ \ -d \ \ name git  branch  d  name 删除分支, d 参数是删除已经合并完的分支 , D 参数是强制删除 , 可以删除未合并的分支

14. 解决合并冲突

两个分支修改了同一个文件的同一行代码, 进行合并就会产生冲突

产生冲突后, 可以用 git status 查看冲突文件的列表, 也可以使用 git diff 查看冲突具体内容

当把feat分支合并到main分支后, main 分支中产生冲突的文件 main1.txt, 产生冲突的地方就会以 git diff 中的差异进行显示, 手动修改好后, 提交到本地仓库即可

在提交之前想要中断这次合并, 可以使用 git merge --abort

15. 回退和rebase

rebase, 变基

首先切换到要移动的分支上 git switch dev, 然后 git rebase main, 将 dev 变基到 main 上, 就是 dev 分支在 main 和 dev 公共祖先节点处断开, dev 分支接到 main 的最新提交节点 HEAD 上

alias 命令类似define 和 typredef, 可以精简长命令

Merge 和 Reabse 的区别

Merge

优点: 不会破坏原分支提交历史, 方便回溯和查看
缺点: 会产生额外的提交节点, 分支图比较复杂

Rebase

优点: 不会新增额外的提交记录, 形成线性历史, 比较直观和干净
缺点: 会改变提交历史, 改变了当前分支branch out的节点
    应避免在共享分支上使用

16. 分支管理和工作流模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值