Git常用操作命令总结

219 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

基础操作

http(s)SSH 是两种不同的传输协议,http(s) 每次拉取或提交代码时可能都需要输入密码,SSH 安全性较高,不需要每次输入密码,但需要在本地生成SSH密钥并把它配置到代码仓库的个人资料的相应位置。

SSH 密钥

生成SSH密钥的相关命令:

  • 查看本地是否已经存在密钥
# windows
type %userprofile%\.ssh\id_rsa.pub
# mac
cat ~/.ssh/id_rsa.pub

控制台输出 ssh-rsa 开头的长字符串,则已存在密钥。

  • 生成密钥
ssh-keygen -t rsa -C "邮箱"

一路回车即可。命令执行完毕后,会在电脑上的指定位置生成两个文件id_rsa.pubid_rsa,windows系统的电脑文件位置正常应该是C:\Users\账户名\.ssh

id_rsa.pub 里面的字符串全部复制,粘贴到Github或Gitlab 密钥的位置。

拉取 / 提交

  • 克隆代码
git clone 地址

地址可以选择SSHHTTPS 连接方式的地址。

  • 提交三部曲
git add .
git commit -m "注释"
git push
  • 拉取代码
git pull

分支操作

  • 查看当前分支
git branch 
git branch -a
  • clone test 指定分支
git clone -b test 地址

两个分支的合并

  • a 分支开发完成,提交完代码之后,切换到 test 分支,将 a 合并到 test 切换:
git checkout test

合并:

git merge test

提交:

git push

新分支

  • 从当前分支创建一个新分支
git checkout -b kong
  • 把新建的分支push到远端
git push origin kong
  • 本地和远程关联
git branch --set-upstream-to=origin/kong
  • 拉取验证
git pull
  • 从某个commitid开始拉出新分支,并推送到服务端:
  1. git log :找出当初打出版本1.0的最后一次提交对应的commitid

  2. git checkout commitid(此处替换为步骤一查到的commitid) -b branchName(本地新拉出分支的名称)

  3. 修改bug完成后打版本,如果需要推送到服务端,如下操作:git push origin HEAD:remoteName(远程分支的名字)

其他

  • 删除本地分支
git branch -D test
  • 删除远程分支
git push origin --delete kong
  • 问题:
  1. 从a分支切换到b分支想要merge时,git pull 时报错,此时既不能切换分支也无法操作,报错 error: you need to resolve your current index first 回退到merge前 :
git reset --merge
  1. 合并分支冲突时,冲突代码在本地解决完之后,再次执行 提交三部曲

  2. checkout 切换分支报错 error: pathspec ‘origin/test‘ did not match any file(s) known to git. 执行命令git fetch取回所有分支的更新:

git fetch

执行git branch -a可以看到test分支(已经更新分支信息),切换分支git checkout test

操作历史提交

历史提交记录修改

可以修改提交账户信息或提交记录

  • 修改最后一次提交
  1. 使用 git commit --amend 命令,如果是修改提交记录的账户名和邮箱 使用 git commit --amend --author="new-name "

  2. 进入编辑模式 windows 系统:修改完之后按esc键退出编辑状态,再按大写ZZ就可以保存退出编辑器。

其他 vim 命令:进入编辑模式 小写 i :在光标所在行位置停止不动开始写入内容;退出编辑模式 :wq :保存并退出

  • 修改前几次的提交
  1. git rebase -i HEAD~n (n)代表提交次数,倒数第几次

  2. 按字母 i 进入编辑模式,把 pick 改成 edit 。关于编辑模式的操作参考上面

  3. git commit --amend 或者 git commit --amend --author="new-name "

  4. git rebase --continue

  • 如果已经是push到了origin的代码,完成上述步骤后,还需要强制提交到远程仓库:git push --force origin master master改成对应分支名称 。

取消提交

取消已经push到了远程的代码:

  1. git log 查看提交版本号

  2. git reset --hard 版本号 ,此操作 --hard 删除工作空间改动代码,撤销commit,撤销git add . 。这步操作 版本号是倒数第二次的版本号的话,那么最后一次的所有本地提交信息及代码都被删除。

  3. 上一步只更改了本地的,执行命令提交到远程仓库 git push origin main -f main是分支名。

配置相关

  • 查看 git 系统配置
git config --system --list
  • 查看当前用户(global)配置
git config --global  --list
  • 查看当前仓库配置信息
git config -- local    --list
  • 查看当前 git 使用的代理
git config --global -l
  • 设置全局的邮箱和用户名
git config --global user.email "你的邮箱"
git config --global user.name "你的名字"

上面是全局的修改,如果想单独修改某个项目的:可以在项目文件夹下执行 git config user.name "名字"