开发场景:
-
远程有主分支 master,提供用户使用的正式的稳定的版本.
-
开发分支 dev,用于日常开发.
-
开发者们在本地任意创建自己的本地分支 Local Branch.
-
然后推到远程自己的分支 再合并到远程分支 dev。
一.使用studio的版本控制工具
1.配置git (android sudio 以mac版为例))
Android Studio一般安装后已经自行配置了git程序所在的位置,在设置->Version Contral-> Git -> Path to git executable中可查看.
2.对项目启用git管理 这步是将项目纳入git管理之下
点击android studio菜单栏的VCS后,选择Enable Version Control Integration. 在弹出的框里选择Git .
3.切换到Project视图,然后在Project上面右击
弹出列表中选择git->add.这样就可以将项目的文件纳入git管理。
4.添加忽略文件(在项目的.gitignore中) 或者下载插件(ignore 右键new .ignore file)
*.iml
.gradle
/local.properties
/.idea
.DS_Store
/build
/captures
/MPChartLib/bulid/(三方依赖的build添加忽略)
.externalNativeBuild
5.提交commit(向上的箭头) 第一次线配置仓库路径 登录账号密码 commit-> push
二.使用命令行
--------------------------------基本------------------------
初始化: git init
添加所有文件受控版本控制: git add . (指定文件: git add ‘name’)
提交: git commit -m ‘your word’
推送到远程: git push origin
从远称拉取: git pull
--------------------------------分支---------------------
新建本地分支:git branch ‘name’
推送本地分支到远程: git push ‘origin’ ‘分支名’(必须与本地分支名一致)
查看本地与远程绑定状态: git branch -vv
查看所有分支: git branch -a
追踪远程分支(绑定): git branch --set-upstream-to=‘origin’ ‘分支名’
切换分支: git checkout ‘分支名’
合并分支代码: git merge ‘分支名’
同步dev分支 log日志::
- ➜ project git:(ming) git checkout dev
- Switched to branch ‘dev’
- ➜ project git:(dev) git merge ming
- Updating 7cf39b1…06e1529
- Fast-forward
- app/build.gradle | 32 +++++++++±---------------------
- app/src/main/AndroidManifest.xml | 3 +++
- create mode 100644 app/src/main/res/layout/item_withdrawlist.xml
- ➜ project git:(dev) git add .
- ➜ project git:(dev) git status
- On branch dev
- nothing to commit, working tree clean
- ➜ project git:(dev) git push origin dev
- Total 0 (delta 0), reused 0 (delta 0)
- To http://47.104.17.92/Ming/project.git
- 7cf39b1…06e1529 dev -> dev
- ➜ project git:(dev) git log
更新内容:
--------------------不是那么常用-------------------------
查看本地所有分支 : git branch (*代表当前所在的分支)
查看远程所有分支: git branch -r
所有本地分支和远程分支:git branch -a
查看状态 : git status
-----------------------tag相关---------------------------
打标签 : git tag ‘tagName’
查看所有标签 : git tag
删除标签 : git tag -d ‘tagName’
将本地标签推送到远程仓库 : git push origin ‘tag’
删除远程标签 : git push origin -d ‘tagName’
参考: 常用git命令清单
日后再增加…目前的基本可以满足大部分需求了吧.
9.1更新
D:\Space\AndroidProject\Base>git remote -v
origin https://gitee.com/1806613533/Base.git (fetch)
origin https://gitee.com/1806613533/Base.git (push)
D:\Space\AndroidProject\Base>git remote remove origin
D:\Space\AndroidProject\Base>git remote -v
D:\Space\AndroidProject\Base>git remote add origin https://gitee.com/1806613533/Base.git
git remote -v 查看远程仓库地址
git remote remove origin 移除地址
git remote add origin ‘远程仓库地址’ 添加地址
-----------------增加SSL密钥---------------------
ssh-keygen -t rsa -C “Xxxx@qq.com”
cat ~/.ssh/id_rsa.pub
➜ Bit-z_and git:(ming) ✗ ssh-keygen -t rsa -C “Xxxx@qq.com”
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/mrming/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/mrming/.ssh/id_rsa.
Your public key has been saved in /Users/mrming/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:U7uTbgTtbINDJYsDLuDutR9eA7wWb82bj8a27viJ+NA Xxxx@qq.com
The key’s randomart image is:
±–[RSA 2048]----+
| |
|. . . . |
|… . . . =. |
| … o o +… |
|. . + oS=. |
| . . * =.o |
|. . .= E.+. |
| . .o * +=. |
| .+.+@+. |
±—[SHA256]-----+
➜ Bit-z_and git:(ming) ✗ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDzzfF0CbytS72kR8ejXN7MKO/DeyET4kwohCWlCMGFHMiyOSuuhBd0mhB6HsurdJ50nBNlJXmHw9lbQSqfy0b5iTST3+/Wc8hQADFJOkPNWx3uKCWSzK3TfNm+NNxJi4p7QksibEi5wsiX5uCLBQj86Ye7SzKuOLph9aR6Un5KOaXkl2fa4xXPz7 Xxxx@qq.com
git 遇到的错误:
如果远程和本地commit各有领先的话,这个时候会出现你的那个错误 .只需删除 或者add -f 指定文件即可.
add -f 表示强制添加 如a.txt 文件是在忽略文件路径 加-f表示force 操作
add -f 结合reset --hard 目的就是删除本地忽略文件
关于解决冲突:
<<<<<<< HEAD 到 ======= 中间的内容是local提交的。
======= 到 >>>>>>> 是远程仓库中的内容
11.22新增:
如下需求: 我目前在dev分支,想用qin分支的代码完全覆盖dev,用如下指令:
git fetch --all
git reset --hard origin/qin(彻底回退到某个版本)
git pull
删除本地分支
git branch -d <BranchName>
删除远程分支
git push origin --delete <BranchName>
强制推送命令
git push -u origin master -f
推送命令后出现了这样的情况:
You are not allowed to force push code to a protected branch on this project.
解决:
进入网站:“设置” – > “保护分支” - > 取消保护 .即可