- git ssh配置
- 打开git bash,通过以下命令检查是否配置用户名和邮箱,如果出现git bash闪退,可以用管理员身份运行打开,或者重装git
git config --global --list
- 如果已配置想删除
git config --global --unset user.name git config --global --unset user.email
或者可以编辑配置文件
git config --global --edit 编辑完成后保存退出 :wq
- 如果未配置
git config --global user.name "这里换上你的用户名" git config --global user.email "这里换上你的邮箱"
- 生成公私密钥对id_rsa.pub和id_rsa
ssh-keygen -t rsa -C "这里换上你的邮箱"
执行完命令会有几次确认,确认密钥保存路径及是否覆盖密钥等,直接回车即可,也可以根据实际情况进行相应处理
- 查看公钥
cat ~/.ssh/id_rsa.pub
- 把上一步查看到的内容全部复制,添加到远程仓库的ssh
- 不小心将代码写错分支提交了,想把提交的代码从a分支移动到b分支
- 在a分支查看手误提交的commitId复制下来:
git log
- 将对应的提交移到b分支:
git cherry-pick commitId
- 在dev分支上,需求开发了一半,这时来了一个紧急线上bug,需要先切换分支,这时候如果直接在当前分支git checkout –b fix-bug是错误的,这样会把dev分支未开发完的代码一起复制到bug分支。正确的做法是:
- 暂存dev分支代码:
git stash
- 切换到master分支:
git checkout master
- 拉取线上最新代码:
git pull
- 新建并切换本地分支,同时与远程分支关联:
git checkout –b fix-bug origin/fix-bug
- bug修改完之后切回原来的dev分支:
git checkout dev
- 从暂存区拿出原来的修改(如果stash了多次 后面可以加序号,pop出指定暂存区内容):
git stash pop
- 这时候bug修复完之后需要提交代码发布上线,不要直接提pull request,有可能在你修bug时其他人有更新线上代码,这时候需要先更新本地代码
- 从远程与线上代码一致的分支development分支更新本地代码。
注意:git pull = git fetch + git merge ,git pull --rebase = git fetch + git rebasegit pull origin development --rebase
这里加上rebase不只是为了避免在合并时产生commit闭环,线条清晰,主要原因是如果不使用rebase,可能会产生bug。因为git服务器是非交互式运行,提pull request时它不会提醒你解决冲突,而是把冲突代码带上冲突标记一并合并到远程分支上,产生bug。另外一个问题就是可能会产生增量代码修复bug,例如: a和b在不同分支修改同一个bug,a在第三行进行增加一行加法计算的代码,合并到远程分支,b在第五行增加一行加法计算的代码,不加rebase,pull了远程代码,由于是在不同行改的代码,git也不会报冲突就合并了,从而导致bug。 - 如果rebase之后,在本地的fix-bug分支又有了新的修改,提交之后会push不上去,因为fix-bug分支的HEAD已经改变,它不再指向fix-bug的最后一个commitId,而是指向development合并后的commitId,这时候需要移动HEAD指针指向origin/fix-bug新的、更新后的位置,执行:
git push --delete origin fix-bug
- 提pull request,将本地分支fix-bug与远程分支development合并
- 发布后远程的development分支与master分支会自动合并
- 当本地开发分支提交比较多可以用squash将所有commit压缩成一个commit,为了保留本地开发分支的提交记录,最好切换到development分支,进行合并压缩
- 同步远程分支
git pull
- 合并压缩commit
git merge fix-bug –squash
- 从development分支切换到一个新分支,这时候新分支fix-bug2已经是合并过最新代码的分支了,这时就可以提pull request了
git checkout –b fix-bug2
- 新建一个项目仓库,并将该项目代码同时推送到多个仓库,详解参考链接:https://blog.csdn.net/wudajushi/article/details/52038459
- 查看现有远程仓库:
git remote -v
- 在远程新建一个仓库,拿到仓库地址:https://abc/xyz.git
- 本地添加该远程仓库:
git remote add projectId(自定义仓库id) https://abc/xyz.git
- 将本地分支master推送到相关目标远程仓库:
git push projectId prjectId1 projectId2 master
- git修复已发布版本bug,回退原来版本,同时不影响当前版本,参考链接:https://zhuanlan.zhihu.com/p/87720750