持续创作,加速成长!这是我参与「掘金日新计划 · 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.pub 和 id_rsa,windows系统的电脑文件位置正常应该是C:\Users\账户名\.ssh。
将 id_rsa.pub 里面的字符串全部复制,粘贴到Github或Gitlab 密钥的位置。
拉取 / 提交
- 克隆代码
git clone 地址
地址可以选择SSH 或 HTTPS 连接方式的地址。
- 提交三部曲
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开始拉出新分支,并推送到服务端:
-
git log:找出当初打出版本1.0的最后一次提交对应的commitid -
git checkout commitid(此处替换为步骤一查到的commitid) -b branchName(本地新拉出分支的名称) -
修改bug完成后打版本,如果需要推送到服务端,如下操作:
git push origin HEAD:remoteName(远程分支的名字)
其他
- 删除本地分支
git branch -D test
- 删除远程分支
git push origin --delete kong
- 问题:
- 从a分支切换到b分支想要merge时,git pull 时报错,此时既不能切换分支也无法操作,报错
error: you need to resolve your current index first回退到merge前 :
git reset --merge
-
合并分支冲突时,冲突代码在本地解决完之后,再次执行 提交三部曲。
-
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。
操作历史提交
历史提交记录修改
可以修改提交账户信息或提交记录
- 修改最后一次提交
-
使用
git commit --amend命令,如果是修改提交记录的账户名和邮箱 使用git commit --amend --author="new-name " -
进入编辑模式 windows 系统:修改完之后按
esc键退出编辑状态,再按大写ZZ就可以保存退出编辑器。
其他 vim 命令:进入编辑模式 小写
i:在光标所在行位置停止不动开始写入内容;退出编辑模式:wq:保存并退出
- 修改前几次的提交
-
git rebase -i HEAD~n(n)代表提交次数,倒数第几次 -
按字母 i 进入编辑模式,把
pick改成edit。关于编辑模式的操作参考上面 -
git commit --amend或者git commit --amend --author="new-name " -
git rebase --continue
- 如果已经是
push到了origin的代码,完成上述步骤后,还需要强制提交到远程仓库:git push --force origin mastermaster改成对应分支名称 。
取消提交
取消已经push到了远程的代码:
-
git log查看提交版本号 -
git reset --hard 版本号,此操作--hard删除工作空间改动代码,撤销commit,撤销git add .。这步操作 版本号是倒数第二次的版本号的话,那么最后一次的所有本地提交信息及代码都被删除。 -
上一步只更改了本地的,执行命令提交到远程仓库
git push origin main -fmain是分支名。
配置相关
- 查看 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 "名字"。