1. 新的文件夹拉取仓库
git init
git clone http://192.168.1.38/develop/zhicheng-mall-android.git
2. 设置账号
- 全局
一个账号管理所有仓库
git config --global user.name "ljwx"
git config --global user.email "qq.com"
- 指定单个仓库(在当前仓库)
当我们有多个远程仓库, 使用不同账号管理时
git config user.name "gitlab's Name"
git config user.email "gitlab@xx.com"
- 查看当前配置
- 在当前项目下面查看的配置是全局配置 + 当前项目的配置
- 使用的时候会优先使用当前项目的配置
git config --list
3. 提交
提交自己修改的代码
git add . //添加所有改动过的文件
git commit -m 优化 //提交修改并注释
git push //推送修改到远端
4. 分支
git branch -a //所有分支,当前分支前有加了 * 号
git branch //本地所有分支
git branch -r //远程所有分支
当有多个需求, 可能需要分开发布时
git checkout dev //切换到dev分支
git checkout -b coupon //从当前分支创建一个叫coupon的新分支
本地创建新的分支需要push到远端时
git push --set-upstream origin coupon //后面是远程分支名
功能上线后删除当前功能分支
git branch –d dev //删除本地分支
git push origin -d dev //删除远程分支
- 合并分支
git merge pop //在当前分支, 合并pop分支的代码
- 撤销刚才的合并
git mrege --abort
如果合并后, 修改了文件, 会导致无法撤销, 此时可能需要按隐藏(stash)的逻辑来处理
5. 标签
git tag //查看所有标签
git tag v1.5.2 //添加标签
git push origin --tags //推送所有标签到远程
git tag -d v2.1.4 //删除本地标签
git show 2.2.2 //查看某个标签详情
6. 隐藏及撤销修改
当代码修改一半时, 需要临时切换其他分支处理问题, 如果你不提交是切换不了的, 但是代码又没有写完, 并不适合现在提交
1. git stash //隐藏当前分支的所有修改
2. git checkout dev //隐藏后切换到需要的分支
3. git checkout coupon //处理完dev分支的问题后切回刚才的分支
4. git stash pop //将刚才隐藏的修改释放出来, 并删掉刚才的隐藏记录
有时候可能有多个stash,例如下面这样
git stash list //会看到多个隐藏条目
//stash@{0}: WIP on partner3th: 88520245 Merge branch 'partner3th'
//stash@{1}: WIP on partner3th: 88520245 Merge branch 'partner3th'
这个时候就不能使用git stash pop
git stash pop会从前到后一个一个恢复, 执行多少次git stash pop, 恢复多少条, 恢复的条目可能并不一定是你想恢复的
git stash list //查看隐藏列表
git stash apply stash@{0} //指定恢复第0条
git stash drop stash@{0} //apply并不会删除列表里的记录, 所以需要手动删除
- 撤销修改
修改一个文件后, 想取消单个文件这次的修改, 是取消, 不是隐藏
git status //查看当前文件状态
modified: app/src/main/java/com/zc/mall/module/distribution/ui/detail/DistribGoodsDetailActivity.kt
这个文件有被修改
git checkout -- app/src/main/java/com/zc/mall/module/distribution/ui/detail/DistribGoodsDetailActivity.kt
DistribGoodsDetailActivity文件就会恢复最后一次提交时的状态
查看log
- 当我们在Android Studio的Terminal查看log的时候可能因为编码问题显示的不是常规文字
set LESSCHARSET=utf-8
在Terminal中输入这个命令后, 再查看日志就可以了
- 当Terminal中返回的结果太多, 翻不完又不想看时
q
输入Q就可以结束了
-
- 查看所有日志
git log
commit 494b30c2be7ded1f9cae359336d0414793a7a405 (HEAD -> event)
Author: ljwx 1146699396@qq.com
Date: Thu Jul 9 20:46:43 2020 +0800
优化了逻辑
默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面
- 2. 简要显示, 包含文件改动行数
git log --stat
app/src/main/java/com/zc/mall/test/ViewEvent.kt | 13 +++--
-
- 展示详细的文件变化
git log -p -2 //-p:内容差异 -2:最近的2条
版本回退
- 取消上次提交之后, 的所有修改
git reset --hard
- 回退到上一版
git reset --hard HEAD^^^ //恢复到(^:最后一次,^^:倒数第二次)提交
- 回退之前的版本任意
git reset -- hard 494b30c2be7ded1f9cae359336d0414793a7a405 //后面是版本号, git log可查看版本号
- 回退之后, git log看不到被恢复的提交信息, 所以需要使用
git reflog
- 想再返回最新版, 还是得git reflog, 重复刚才的操作, 根据版本号返回最新版
不常用命令
- 强制推送
已经提交过,更换仓库后, 新的仓库重新推一遍
git push -f origin dev