Git常用命令

836 阅读4分钟

约定

  • 示例命令中的origin都属于远程仓库名称,master,branch_name,new_branch_name属于分支名称
  • 没有特殊说明,命令都是基于git bash测试

命令汇总

  • git init : 在本地初始化一个全新的仓库
  • git clone : 克隆远程仓库到本地
  • git checkout : 切换分支
  • git branch : 查/删/创建分支
  • git commit : 提交,当前暂存区文件改动,产生一个新的版本
  • git add : 跟踪,将指定的文件添加至暂存区
  • git push : 推送,将本地改动推送至远程
  • git pull : 拉取远程仓库信息并合并到当前分支
  • git fetch : 拉取远程仓库信息
  • git merge : 合并分支代码
  • git tag : 查看删除创建标签

最佳实践

  • 创建仓库通过clone命令初始化
  • 本地分支最好通过命令“git checkout -b branchName remote/branchName”创建,这样创建出来的本地分支自动跟踪远程分支,且新分支记录与远程分支记录一致

初始化仓库

  • 克隆远程仓库到本地

    1. clone命令: git clone github.com/jonasyuk/xx…
  • 将本地仓库与远程仓库相关联

    1. 通过命令行进入到对应的目录下
    2. init命令初始化本地仓库: git init
    3. remote命令给本地仓库添加远程仓库: git remote add origin github.com/jonasyuk/xx…
    4. chekcout命令基于远程分支创建本地分支: git checkout -b master origin/master
    5. pull命令拉取远程最新代码: git pull
  • 将本地仓库(具有本地的提交记录且与远程不一致)与远程仓库相关联,并进行合并关联(以master为例)

    1. 通过命令行进入到对应的目录下
    2. remote命令给本地仓库添加远程仓库: git remote add origin github.com/jonasyuk/xx…
    3. master分支: git checkout master
    4. branch命令映射远程分支:git branch -u origin/master master
    5. pull命令同步远程代码至本地: git pull
  • 本地仓库已有一部分历史记录,与远程仓库重新连接(适用于“远程仓库迁移后重新绑定”,“不小心删掉远程仓库信息”,"在保留原远程仓库的情况下,额外增加一个远程仓库并将本地分支默认指向它-示例")

    1. 通过命令行进入到对应的目录下(假设该目录已经存在master提交记录)
    2. remote命令更新添加/更新远程仓库: git remote add new_origin github.com/jonasyuk/xx…
    3. fetch命令同步远程所有分支至本地: git fetch
    4. 遍历本地仓库分支名,将远程其映射至远程分支: for brname in git branch --format="%(refname:short)"; do git branch -u origin/$brname $brname; done;

分支操作-增删查改

    • 查看本地所有分支: git branch -l
    • 查看远程所有分支: git branch -r
    • 同时查看远程跟本地所有分支:git branch -a
    • 查看包含某个commit的所有分支: git branch -a --contains commit_hash
    • 基于当前记录分支创建本地分支: git branch new_branch_name
    • 基于本地某个分支创建本地分支: git checkout -b new_branch_name branch_name
    • 基于当前记录分支创建远程分支: git push origin HEAD:branch_name
    • 基于本地某个分支创建远程分支: git push origin local_branch_name:new_branch_name
    • 删除本地分支:git branch -D branch_name
    • 批量删除本地分支: git branch -D branch_name_1 branch_name_2
    • 删除远程分支:git push origin --delete branch_name
    • 删除远程分支2:git push origin :branch_name
    • 批量删除远程分支:git push origin :branch_name_1 :branch_name_2
    • 切换分支: git checkout branch_name
    • 切换至远程分支位置(会导致HEAD指针处于游离状态): git checkout origin/branch_name
    • 切换至远程分支并在本地创建同名分支: git checkout -b branch_name origin/branch_name

同步远程分支信息

  • 拉取当前分支关联的远程仓库所有分支信息: git fetch
  • 拉取所有远程仓库的信息: git fetch --all
  • 拉取指定远程仓库信息: git fetch origin
  • 拉取默认远程分支信息并合并到当前分支下: git pull
  • 拉取指定远程分支信息并合并到当前分支下: git pull origin branch_name

合并分支代码

  • 合并本地分支:git merge branch_name
  • 合并远程分支信息(pull = fetch + merge): git merge origin/branch_name

跟踪 & 提交 & 推送

  • 查看当前状态: git status
  • 添加改动文件到暂存区: git add .
  • 提交代码: git commit -m"commit messaage"
  • 推送到远程: git push
  • 推送到远程指定分支: git push origin branch
  • 推送到远程并关联分支: git push -u origin branch

标签(tag)

  • 创建标签:git tag tag_name
  • 推送tag至远程: git push origin tag tab_name
  • 将HEAD指针指向远程tag位置: git checkout tags/tag_name
  • 删除本地标签: git tag
  • 删除远程标签: git push origin --delete tag tag_name

查看提交信息

  • 查看提交日志: git log
  • 查看最近两次的提交及改动内容: git log -p -2
  • 查看提交日志及每次提交的简要改动信息: git log --stat
  • 格式化信息(只展示hash(%h)跟提交信息(%s))及图形化查看提交日志: git log --pretty=format:"%h %s" --graph

仓库迁移

  • 迁移(备份+恢复)
    1. clone命令将仓库镜像备份到本地: git clone --mirror github.com/jonasyuk/xx…
    2. 进入到对应目录: cd xxxx
    3. 修改镜像仓库配置: git config --bool core.bare false
    4. 重置所有改动: git reset --hard
    5. 设置新的远程仓库: git remote add origin github.com/jonasyuk/xx…
    6. 推送所有分支: git push -u origin --all
    7. 推送所有标签: git push -u origin --tags

参考链接