常用Git命令

274 阅读4分钟

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就可以结束了

    1. 查看所有日志
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 +++--

    1. 展示详细的文件变化
git log -p -2                                   //-p:内容差异   -2:最近的2条

版本回退

  1. 取消上次提交之后, 的所有修改
git reset --hard
  1. 回退到上一版
git reset --hard HEAD^^^                    //恢复到(^:最后一次,^^:倒数第二次)提交
  1. 回退之前的版本任意
git reset -- hard 494b30c2be7ded1f9cae359336d0414793a7a405  //后面是版本号, git log可查看版本号
  • 回退之后, git log看不到被恢复的提交信息, 所以需要使用
git reflog
  • 想再返回最新版, 还是得git reflog, 重复刚才的操作, 根据版本号返回最新版

不常用命令

  1. 强制推送
    已经提交过,更换仓库后, 新的仓库重新推一遍
git push -f origin dev