Android学习-Git应用协同开发笔记

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.创建项目团队

组长创建仓库并邀请用户(开发者):

  1. 组员复制链接加入项目
  2. 组员复制ssh仓库地址并克隆:git clone 项目地址

组长项目初始化、组员简单操作:

  1. git设置名字、邮箱

    git config --global user.name “张三”
    git config --global user.email “[email protected]

  2. 下载远程仓库文件到本地仓库

    git clone 项目地址

  3. 添加项目文件到远程仓库
    项目文件复制到文件夹中
    文件添加到暂存区 -> 提交到本地仓库 -> 推送到远程仓库(文件夹没内容就不推送)

    git add .
    git commit -am”日志内容”
    git push

  4. 组员拉项目

    git pull

  5. 组员修改后添加、提交、推送(实际开发中先切换一个分支)

    git add .
    git commit -am “日志”
    git push

  6. 组长拉下最新代码

    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
[email protected]: 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步骤

  1. 按键盘字母 i 进入insert模式
  2. 修改最上面那行黄色合并信息,可以不修改
  3. 按键盘左上角"Esc"
  4. 输入":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 找到刚刚保存的地方,恢复临时代码
  • 代码回滚(常用当本地与远程冲突时)
    提交了多次,但是只想要最后一次提交修改的内容:
    1. 在最新提交处创建新本地分支a2,来保存之前的代码
    2. 删除有问题的本地分支a,再重新从远程拉下a,
    3. 从最新提交处拉取commit:cherry-pink
      revert回滚相当于重新提交代码
      当多次提交显得提交信息很乱,用命令行:
      查看最新的git rebase -i head~合并数

猜你喜欢

转载自blog.csdn.net/czssltt/article/details/126573681