0.内容概览
1.git安装
1.1 windows平台
1.2 Linux平台
>> sudo apt-get install git
2.git生成密匙
>> ssh-keygen -t dsa | ecdsa | ed25519 | rsa
(1) dsa 因安全性不高,基本已经不再使用;
(2) ecdsa 因技术原因等,基本已经不再使用;
(3) ed25519 加解密速度快,生成时间快,且安全性更高;
(4) rsa 加解密速度慢,生成时间慢,安全性没有 ed25519 高,但用的人多兼容性好。
(1) 表示生成的密匙大小,以字节byte为单位;
(2) 在生成时,如果指定太小会有安全问题,建议为2048或更大;
表示生成密匙的描述信息,会追加到公匙.pub内容的末尾
生成密匙文件的名称,还可以指定文件路径
指定新密码,''表示密码为空
默认模式,直接生成密匙对,过程中不产生信息
>> ssh-keygen -t ed25519 -b 2048 -C "2458006366@qq.com"
3.git配置属性
>> git config --global user.name "your name"
>> git config --global user.email "your email"
>> 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
>> 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
# 针对单个文件更改
>> git diff [filename] > change.patch
# 针对所有更改
>> git diff >> change.patch
# 最近一次提交
>> 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