git学习及使用笔记

MirrorYuChen
MirrorYuChen
发布于 2024-11-19 / 35 阅读
1
0

git学习及使用笔记

0.内容概览

1.git安装

1.1 windows平台

1.2 Linux平台

>> sudo apt-get install git

2.git生成密匙

  • [1] 生成指令
>> ssh-keygen -t dsa | ecdsa | ed25519 | rsa
  • [2] 加解密类型说明
(1) dsa 因安全性不高,基本已经不再使用;
(2) ecdsa 因技术原因等,基本已经不再使用;
(3) ed25519 加解密速度快,生成时间快,且安全性更高;
(4) rsa 加解密速度慢,生成时间慢,安全性没有 ed25519 高,但用的人多兼容性好。
  • [3] b选项
(1) 表示生成的密匙大小,以字节byte为单位;
(2) 在生成时,如果指定太小会有安全问题,建议为2048或更大;
  • [4] -C选项
  表示生成密匙的描述信息,会追加到公匙.pub内容的末尾
  • [5] -f选项
生成密匙文件的名称,还可以指定文件路径
  • [6] -N选项
指定新密码,''表示密码为空
  • [7] -q选项
默认模式,直接生成密匙对,过程中不产生信息
  • [8] 完整指令
>> ssh-keygen -t ed25519 -b 2048 -C "2458006366@qq.com"

3.git配置属性

  • [1] 配置用户名
>> git config --global user.name "your name"
  • [2] 配置用户邮箱
>> git config --global user.email "your email"
  • [3] 查看配置结果
>> git config --list

4.ssh公匙查询

>> cat ~/.ssh/id_ed25519.pub

5.github配置

>> "setting" -> "SSH and GPG Keys" -> "New SSH key" -> "Title" and "Key" -> "Add SSH Key"

6.git问题处理

Encountered 7 file(s) that should have been pointers, but weren’t
  • 问题描述:sourcetree的文件暂存并提交后,还是在暂存区
  • 解决方法:
  • (1) 方法1:
>> git lfs uninstall
>> git reset --hard
>> git lfs install
>> git lfs pull
  • (2) 方法2:
>> git rm --cached -r .
>> git reset --hard
>> git rm .gitattributes
>> git reset .
>> git checkout .

7.git删除远程不存在的分支

>> git remote prune origin

8.git删除本地分支

>> git branch -D [branch name]
>> git branch -delete [branch name]

9.git删除远程分支

>> git push origin --delete [branch name]

10.git拉取远程代码

>> git pull

11.git推送代码到远程

>> git push

12.git设置远程仓库地址

>> git remote set-url origin [url address]

13.git添加子模块并指定目录

>> git submodule add [url address] [subdirectory]

14.git拉取项目及子模块

>> git clone --recursive [url address]
>> git submodule update --init --recursive
>> git submodule init
>> gut submodule update

15.git批量修改记录

#!/bin/sh

>> git filter-branch --env-filter '

OLD_EMAIL="原邮箱地址"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱地址"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
>> git push origin --force --all
>> git update-ref -d refs/original/refs/heads/master

16.git打patch

  • [1] 针对当前更改生成patch
# 针对单个文件更改
>> git diff [filename] > change.patch
# 针对所有更改
>> git diff >> change.patch
  • [2] 针对git提交记录
# 最近一次提交
>> git format-patch HEAD^
# 最近两次提交,最近多次类似
>> git format-patch HEAD^^
# 两次commit之间修改生成pacth:注意要按照提交时序
>> git format-patch SHA1_COMMIT1..SHA1_COMMIT2
# 针对某次提交生成patch
>> git format-path SHA1_COMMIT^

17.git修改拉取和提交代码默认账号密码信息

"控制面板" -> "用户账户" -> "管理Windows凭据" -> "普通凭据" -> "git" -> "编辑" -> 修改账户密码即可(删除的话,每次拉取和提交需要手动输入账号密码)

18.强制拉取远程仓库内容,来覆盖本地仓库内容

>> git fetch --all
>> git reset --hard origin/main

评论