1.gitee码云配置
注册账号–> 下载git --> 输入git命令配置ssh:ssh-keygen.exe --> 到C:\Users\用户名.ssh目录中复制id_rsa.pub公钥文件 key --> 码云设置SSH公钥(一个账号可绑定多个电脑)
常用命令:
git status (查看当前状态
git branch 当前分支
git branch -f 分支a HEAD~3 (让分支强制移动到之前的提交:
git reset 分支a~步数 (撤销前几次提交,改写历史(远程无效)
git revert 分支a (撤销前几次提交,但是新一次提交的改动,可推送
git remote -v (显示所有远程仓库别名
git remote show 远程地址的别名 (显示远程仓库的信息
2.创建项目团队
组长创建仓库并邀请用户(开发者):
- 组员复制链接加入项目
- 组员复制ssh仓库地址并克隆:git clone 项目地址
组长项目初始化、组员简单操作:
- git设置名字、邮箱
git config --global user.name “张三”
git config --global user.email “zhangsan@163.com” - 下载远程仓库文件到本地仓库
git clone 项目地址
- 添加项目文件到远程仓库
项目文件复制到文件夹中
文件添加到暂存区 -> 提交到本地仓库 -> 推送到远程仓库(文件夹没内容就不推送)git add .
git commit -am”日志内容”
git push - 组员拉项目
git pull
- 组员修改后添加、提交、推送(实际开发中先切换一个分支)
git add .
git commit -am “日志”
git push - 组长拉下最新代码
git pull
3.分支的使用和切换
创建并切换分支a:
git checkout -b 分支名a
分支a推送到远程仓库(日志认真写,便于回溯):
git add .
git commit -am “日志”
git push origin 分支名a
合并其他分支(将分支a合并到主分支中):
git merge 分支a
切换分支:git checkout master/分支名a
1)当出现bug时:
场景① :组员正在进行开发,组长说刚刚提交的代码有误要修改再提交。此时有开发到一半的内容又不能舍弃。
?解决:一般开发新功能也会新开一个分支,老功能有问题切回该分支改代码测试提交,不影响新开发代码的运行。
- 主分支与分支a是互不影响的。
- 有任务时,组员在本地创建分支进行开发,测试,提交,推送,最后由组长拉分支下来检查再合并到主分支。
合并步骤:先在自己分支a拉一下,切换到别人分支b上再拉,再切换回自己分支a,再合并b。
组长合并:
主分支pull,切换分支a ,再pull,检查代码没有问题,切换回主分支,再合并分支a过来,再push。
其他人先保存自己当下的分支代码,再切主分支pull下最新代码,再切分支a把主分支代码合并过来。
2)当出现冲突时
场景① :要合并时发现同一行代码在两个分支上有不同的内容,出现冲突。
沟通后解决冲突,add和commit,push,告诉小伙伴主分支已提交记得更新。
队友去切换主分支,pull拉代码,切换回分支a,把主分支的内容合并到分支a。
3)写好了的功能被改坏了,怎么回到之前的位置上?
看分支下的日志,找到需要回退的位置的commit 哈希值前六位,回退:
git log
git reset --hard 123456
也可用符号
后退几步:用引用^,一个符号表示一次父节点,也可以相对于HEAD
git checkout 分支a^^
后退多步:~步数
git checkout 分支a~3
踩坑记录:
1.Permission denied (publickey).
Administrator@XTZJ-202104E MINGW64 /e/BRAND/Galaxy/git (main)
$ git push --set-upstream origin main
git@github.com: Permission denied (publickey).
//致命:无法从远程存储库读取。
fatal: Could not read from remote repository.
//请确保您拥有正确的访问权限并且存储库存在。
Please make sure you have the correct access rights
and the repository exists.
原因:克隆项目时没有权限所以被拒绝了,Git服务器和我们本地的通讯要使用 SSH key(密钥)来验证,去我们Git主页检查是否缺少密钥,缺少了密钥只需设置一个密钥就行了。
做pull/merge之前先commit本地的修改
2.合并分支出现 Please enter a commit message to explain why this merge is necessary.
不写原因直接3,4步骤,写原因则1,2,3,4步骤
- 按键盘字母 i 进入insert模式
- 修改最上面那行黄色合并信息,可以不修改
- 按键盘左上角"Esc"
- 输入":wq",注意是冒号+wq,按回车键即可
3.Failed to connect to github.com port 443 after 21056 ms: Timed out
1)连接到github的时候超时了,选过一个翻墙的服务器
2)还没效果:
git config --global --unset http.proxy
git config --global --unset https.proxy
然后再push
3)刷新DNS解析缓存
https://blog.csdn.net/changyana/article/details/122444850
找到hosts文件:C:\Windows\System32\drivers\etc
加上以下内容:
140.82.113.4 github.com
151.101.1.194 github.global.ssl.fastly.net
在AS图形界面下做Git操作:
远程仓库与项目做关联:git remote add origin 地址
拉去服务器代码前先同步:fetch
有多个远程仓库:remotes
当我们没有权限直接提交到主仓库,fork一个自己的仓库,同时跟踪两个仓库代码。
pull 拉取 push 提交
- 保存临时代码:要更新最新的代码,但是怕与本地的代码有冲突:
stach changes -->拉取pull -->UnStach changes 找到刚刚保存的地方,恢复临时代码 - 代码回滚(常用当本地与远程冲突时)
提交了多次,但是只想要最后一次提交修改的内容:- 在最新提交处创建新本地分支a2,来保存之前的代码
- 删除有问题的本地分支a,再重新从远程拉下a,
- 从最新提交处拉取commit:cherry-pink
revert回滚相当于重新提交代码
当多次提交显得提交信息很乱,用命令行:
查看最新的git rebase -i head~合并数