git命令及GitHub关联操作
初始化
- 初始化设置用户名和邮箱
git config --global user.name "Your Name" git config --global user.email email@mail.com git config --global credential.helper store
创建仓库
- 新建一个本地仓库
git init [project-name]
- 下载一个远程仓库
git clone [ssh-url] # 无法克隆请查看密钥篇及文章末尾注意事项
上传文件
- 查看缓存区
git status
- 添加新文件至缓存区
git add . # 添加当前所有更改文件至缓存区 git add [newfile] # 添加指定文件至缓存区
- 添加文件至本地仓库
# 输入-m参数 git commit -m "第n次提交" # 不输入参数(可逐个编辑文件更新信息) git commit
- 参看本地仓库
# 参看本地仓库提交信息 git log # 参看简捷提交记录 git log --oneline # 查看本地仓库状态 git ls-files
github关联本地仓库密钥
cd
cd .ssh # 若没有文件夹,需要自行创建
ssh-keygen -t rsa -b 4096 # 创建密钥
:输入密钥名称(新创建可直接回车创建默认名称)
:输入密钥密码
:重复密码
cat [密钥名称].pub
复制密钥
打开github的设置页面
SSH and GPG keys
New SSH keys
写名称、粘贴key
- 若存在多个密钥,请执行以下操作:
echo "# github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/[密钥名称]" >> config
github关联库操作
- 关联本地及远程仓库
git remote add [远程仓库名称] [ssh-url]
- 参看当前及远程仓库的别名和地址
git remote -v
- 上传远程仓库
git push -u origin main:main # 若本地与远程分支名称相同,可忽略[:main]
- 拉取远程仓库
# 将远程仓库的修改合并到本地仓库(本地仓库有更改则无法合并) git pull [远程仓库名称] [远程分支名称]:[本地分支名称] # 仅获取远程仓库修改 git fetch
回退版本
# 仅清空上传
git reset --soft
# 工作区及缓存区都会清空
git reset --hard
# 仅清空暂存区
git reset --mixed
删除文件
git rm [file] # 删除暂存区及本地文件
注意事项
GitHub被DNS污染,git bash的操作类似于linux,需要调整端口与win的clash端口相同才能翻墙访问。
git config --global http.ptoxy 127.0.0.1:7890
当仓库文件数量过多或大小过大,新版git在克隆时会卡死在Receiving objects,解决方法如下(仅windows):
# 不使用git内置ssh,通过指定win自带的ssh克隆 git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe" # 其他系统自行指定或退回旧版(2.42以前)
当本地仓库版本落后于远程仓库版本时如何强制推送
# 覆盖远程仓库中对应的分支及其历史记录 git push -u --force [远程仓库名称] [远程分支名称]:[本地分支名称]