信息配置

用户信息

当安装完git 应该做的第一件事就是设置你的用户名称和邮件地址
git config —global user.name “xjchenhao”
git config —global user.email wy.chenhao@qq.com

检查配置信息

git config —list
可以产卡单独某个配置信息
git config user.name
保存账户密码避免链接远程仓库每次都要输入
git config —global credential.helper store

仓库

  • 创建新仓库:git init
  • 克隆
    • 创建一个本地仓库的克隆版本:git clone /path/to/repository
    • 远端服务器上的仓库:git clone username@host:/path/to/repository
  • 关联仓库:
    • 添加新的远程仓库:git remote add origin git@github.com:xjchenhao/egg-admin-server.git
    • 可关联多个远程仓库。
  • 更换仓库
    • 重命名现有的远程仓库:git remote rename origin old-origin
    • 添加新的远程仓库:git remote add origin git@github.com:xjchenhao/egg-admin-server.git
    • 推送所有分支:git push -u origin --all
    • 推送所有标签:git push -u origin --tags
  • 移除仓库关联:git remote rm old-origin
  • 查看所属远程仓库:git remote -v

仓库的本地设置在工程根目录的.git文件夹中的config文件。

提交

  • 提交修改
    • 改动文件添加到缓存区: git add <filename>
    • 所有改动文件添加到缓存区:git add .
    • 提交修改描述:git commit -m "代码提交信息"
    • 修改上次提交的修改描述:git commit --amend
    • 推送到远程仓库:git push origin master
    • 查看提交记录:git log
  • 更新
    • 更新你的本地仓库至最新改动:git pull origin master
    • 本地改动or删除,恢复到服务器文件:git fetch origin/master
    • 冲突时命令查看:git diff
  • 恢复
    • 放弃当前修改的,还未提交到远端的代码修改: git checkout .
    • 无记录回滚(不推荐)
      • 恢复到上一次提交:git reset --hard
      • 恢复到指定版本:git reset --hard <commit hash>
        • ps:如果要回滚后推送到远端分支需要使用git push -f进行强制推送
    • 有记录回滚(推荐)
      • 指定需要被撤销的commitId:git revert -n <commit hash>
      • 注意与reset不同,它传的commitId不是要回滚到哪,而是要把哪个commitId撤销掉。

标签

  • 查看本地的标签: git tag
  • 创建标签: git tag -a <tag-name> -m "版本描述"
  • 删除本地标签: git tag -d <tag-name>
  • 删除远端标签: git push origin --delete tag ``<tag-name>
  • 把本地标签更新到远端:
    • 单个: git push origin <tag-name>
    • 全部: git push origin --tags
  • 给制定提交记录补加标签: git tag -a <tag-name> <commit hash>

分支

  • 查看分支列表:git branch
  • 新建分支:git branch [name]
  • 查看关联的所有分支(包含远程分支):git branch -a
  • 查看关联的所有分支(包含远程分支和描述):git branch -av
  • 下载远程分支为本地分支: git checkout -b <localName> <branch-name>
  • 查看每一个分支的最后一次提交:git branch -v
  • 查看合并到当前分支的分支:git branch --merged
  • 查看尚未合并到当前分支的分支:git branch --no-merged
  • 删除分支:git branch -d <branch-name>
  • 强制删除分支 对于尚未进行合并的分支 删除失败需要强制删除:git branch -D <branch-name>
  • 重命名分支:git branch -m <old-branch-name> <new-branch-name>
  • 删除远程分支
    • 方法1:git push origin --delete <branch-name>
    • 方法2:git push origin :<branch-name>
  • 修改分支名称:git branch -m <old-branch-name> <new-branch-name>

子模块subModule

  • 添加关联子模块:git submodule add git@github.com:xjchenhao/egg-admin-server.git <filepath>
  • 在项目根目录下执行,安装关联子模块:git submodule update --init --recursive
  • 删除关联的子模块:git submodule deinit -f <filepath>
    • git rm -r --cached <filepath> 移除与子模块的关联,解决重新添加模块关联时,提示'xxxxxxx' already exists in the index的问题。
  • 子模块遍历
    • 有一个 foreach 子模块命令,它能在每一个子模块中运行任意命令。 如果项目中包含了大量子模块,这会非常有用。
    • 例如:git submodule foreach 'git stash'

实例

更新fork来的github项目

  1. 切换到要更新的分支
  2. 执行git remote -v查看目前关联的远程仓库。
  3. 如果只有项目自身的远程仓库,那么就需要关联一下母项目的地址

    1. git remote add upstream git@github.com:xxx/xxx.git
    2. git fetch upstream
    3. git merge upstream master
    4. git push
  4. 如果已经关联了母项目的地址,则只需要在执行git remote -v后确定地址别名后(例如上面第三步关联的别名就是upstream),执行:

    1. git fetch upstream
    2. git merge upstream master
    3. git push

后期同步的关键命令:git pull <远程库名> <远程分支名>