Git 常用命令
# 基本命令
- 生成 ssh key
ssh-keygen -t rsa -C "<邮箱>"
- 设置用户
git config --global user.name "Your Name" git config --global user.email "email@example.com" // 编辑配置文件 git config --global --edit
- git init 初始化
git init git remote add origin <仓库地址>
- git clone 直接克隆
git clone <仓库地址>
- 创建分支
# 基于远程分支来创建分支 git checkout -b <branchName> origin/develop # 设置本地master分支关联远程master分支 git branch --set-upstream-to=origin/master master
- 查看远程仓库信息
git remote -v
- 修改远程仓库地址
git remote set-url origin <仓库地址>
- 查看记录
git log # 查看历史变更记录 git reflog
- 回滚操作
# 回退指定版本,回退后目标版本后面的提交消失。使用 `git push -f` 强制推送(不建议使用) git reset --hard <版本号> # 撤销某版本的修改提交,撤销后目标版本后面的提交不会消失,会生成一个新版本,可能会出现冲突,需要手动解决。使用 `git push` 推送(建议使用) git revert -n <版本号> # 撤销pull git reflog git reset --hard HEAD@{n}
- 标签tag
# 查看标签 git tag # 新建标签 git tag <标签> # 删除标签 git tag -d <标签> # push 标签 git push origin <标签> # 推送所有标签 git push origin --tags
# 删除
- 删除本地分支
git branch -D <分支>
- 精简分支列表里已远程被删除的分支
git fetch -p
# pull拉取
- pull
# 拉取关联分支 git pull # 拉取远程master分支 git pull origin master
- 强制pull,远程master分支覆盖本地文件
git fetch --all git reset --hard origin/master
# push推送
- push
# 推送关联分支 git push
- 强制push,覆盖远程master文件
git push -u origin master -f
- 指定的提交(commit)应用于其他分支
# 将指定的提交应用于当前分支 git cherry-pick <commitId> # 将两个提交应用到当前分支 git cherry-pick <commitA> <commitB> # 将从 A 到 B 的所有提交应用到当前分支 git cherry-pick A..B
# 合并
- 合并分支
# 切换到A分支 git checkout A_branch # 合并B分支到A分支 git merge B_branch
- 合并指定文件
# 切换到A分支 git checkout A_branch # 合并B分支上f文件到A分支上,将B分支上 f 文件追加补丁到A分支上 f文件。你可以接受或者拒绝补丁内容。 git checkout --patch B_branch f.txt
- 解决合并冲突
# dev-202201分支合并到dev分支出现合并冲突 git pull dev-202201 git checkout dev git pull dev git merge --no-ff dev-202201 # merge后手动解决冲突 git push origin dev
# 重新弹出输入密码
```bash
# fatal: Authentication failed for
# 执行
git config --system --unset credential.helper
#或者在git的配置文件删除
[credential]
helper = manager
```
# 实现本地多个ssh-key
```bash
# 在新增私钥的时候,通过指定不同的文件名来生成不同的私钥文件
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "zhaiyu@126.com"
ssh-keygen -t ed25519 -f ~/.ssh/id_rsa.github -C "zhaiyu@126.com"
# 新增ssh的配置文件,并修改权限
touch ~/.ssh/config
chmod 600 ~/.ssh/config
# 修改config文件的内容:
Host github.com
IdentityFile ~/.ssh/id_rsa.github
User git # 计算机用户
Host gitlab.blogcore.cn
IdentityFile ~/.ssh/id_rsa.gitlab
User git # 计算机用户
RSAAuthentication yes
```
# 报错处理
- 拉取代码报错error: cannot lock ref 'refs/remotes/origin/xxx':ref xxx is at OOO expected XXX
# 有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支,在根目录下运行 git remote prune origin # 刷新本地仓库与远程仓库的保持这些改动的同步,这样就不会报错了
- github拉取代码提示密码权限,可能是网络没有配置dns
8.8.8.8