完整初次使用流程:
1.首先初始化
git init
2.ssh公钥配置
生成 SSH Key:
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
一路回车,密钥将生成在 ~/.ssh/id_rsa.pub
添加 SSH Key 到 Coding:
cat ~/.ssh/id_rsa.pub
复制输出的内容,在目标平台SSH 公钥管理处,添加密钥
测试 SSH 连接:
ssh -T git@e.coding.net
3.Git 配置命令
个人比较喜欢使用“git config user.email “email@**.com” “git config user.name “***”来创建本仓库的信息(不是global全局)
4.为当前本地 Git 仓库添加一个远程仓库的连接:
git remote add origin "***"
从远程仓库拉取数据:
git fetch
这个命令会从远程仓库下载所有分支的最新提交信息,但不会合并到本地分支。
如果你想查看远程仓库的分支信息,可以使用以下命令:
git branch -r
示例输出如下:
origin/main
origin/feature-branch
5.准备上传代码
git add .
git commit -m "准备覆盖远程分支的提交信息"
注意!!!
此时直接进行如下push操作,可以将本地的代码直接push到远程仓库,使用 git push 命令并加上 -f 或 –force 参数来强制推送,将本地分支覆盖远程分支。强制推送是一个比较危险的操作,因为它会直接用本地分支的提交历史覆盖远程分支的提交历史。如果其他团队成员基于远程的分支做了开发,他们的提交记录可能会被你这次强制推送覆盖,导致他们的工作丢失。在执行强制推送之前,最好与团队成员沟通确认!
git push -f origin master:"分支名称"
错误使用:
这里我在执行完add和commit操作后,先没有直接push,先执行了以下操作
“git checkout -b 分支名 origin/分支名”
运行结果如下:
运行结果解释:这是基于远程分支origin/3.2(AI交互界面)创建一个名为”3.2(AI交互界面)“的新本地分支,系统提示 “branch ‘3.2 (AI 交互界面)’ set up to track ‘origin/3.2 (AI 交互界面)’”,即新本地分支被设置为跟踪对应的远程分支。 “Switched to a new branch ‘3.2 (AI 交互界面)’”表明当前已成功切换到新创建的本地分支上。
再查看当前分支:
git branch
运行结果如下:
发现此时本地确实已经切换到了刚才新创建的分支上
再查看实际的本地文件夹,发现本来文件夹里的内容已经发生了改变,现在我准备push的文件变成代码托管平台里已经有的文件,我准备push的文件消失了!这时候有点慌,毕竟怕自己写的代码白写了,但其实之前的代码并没有消失,只是因为刚才执行了创建本地分支并将远程分支内容拉取到本地分支中(并切换到了这个本地分支),也就是最开始的checkout代码。
此时执行push操作,会出现“Everything up-to-date”,也就是因为新创建的本地分支就是从远程分支拉取下来的,所以不会有改动。
解决方法:
因为之前在 master 分支上做了提交,所以要先切换回去:
git checkout master
确保本地 master 分支的提交包含了想要推送的修改,可以通过以下命令查看提交历史:
git log
确认之前的提交”准备覆盖远程分支的提交信息“在其中(也就是刚才commit中的内容)
使用以下命令将本地 master 分支的内容强制推送到远程分支(跟之前push命令一样):
git push -f origin master:"分支名称"
6.分支管理
完成推送之后,可以考虑是否要把本地的分支结构进行调整,例如把本地新建的多余分支删除(如果不需要的话):
git branch -D "3.2(AI交互界面)"