美文网首页
git的常用操作

git的常用操作

作者: L_Ta | 来源:发表于2019-08-02 20:16 被阅读0次

github用法

1 分支操作

> git branch  # 查看本地分支
> git branch -r  # 查看远程分支
> git branch -a  # 查看当前分支和分支列表
> git branch name  # 创建新的分支name
> git checkout name  # 切换到分支name
> git checkout -b name  # 复制当前分支,创建为新分支name,并切换到新分支name
        相当于:> git branch name  && git checkout name
> git checkout -b name commit_id  # 复制commit_id,可以是分支,也可以是某次commit的id,创建新分支name,并切换
> git branch -d name  # 删除本地分支name
> git branch -D name  # 删除本地分支name(不管它有没有merge)
> git push --delete origin name  # 删除远程分支name

2 将某分支设为master

> git checkout name  # 切换到name分支
> git branch -d master  # 删除本地master分支
> git branch -m name master  # 将name分支重命名为master,也可 git checkout -b master name
> git push -f origin master  # 将本地master分支强制push到远程分支

3 合并分支

> git checkout master  # 切换到master分支
> git merge name  # 在master分支下合并name分支
> git push origin master  # push到远程分支(无冲突),有冲突先解决冲突

4 log查看

> git log  # 查看commit记录
> git reflog  # 查看所有分支的所有操作记录

图示所有分支的历史:

  1. git gui然后在菜单栏上 repository-->visual all branch history
    或者直接使用命令gitk --all
  2. git log --graph --all

5 查看某次commit的修改

> git show 78ec756bb5e9d4fd30e8a1c1d8101601a9cf544c

6 删除除master以外的分支

  1. 删除除master以外的本地分支:
> git branch |grep -v 'master' |xargs git branch -D
  1. 删除除master以外的远程分支:
> git branch -r | grep -v 'master' | cut -c 10- | xargs git push --delete origin

当删除远程分支出现以下问题:

error: dst refspec 2.8.fb matches more than one.

这是因为分支名和tag名相同了,删除方法:

> git push origin :refs/heads/2.8.fb  # 删除远程分支
> git push origin :refs/tags/2.8.fb  # 删除标签tag

7 清空工作区和暂存区

  1. 还没有进行add .commit操作,即清空工作区的文件:
> git checkout .  # 只能清空全部已修改的文件, 但是对于新建的文件和文件夹无法清空
> git clean -fd -n  # 确认要删除的文件
> git clean -fd  # 删除文件其中-f表示文件 -d表示目录

8 git reset 版本回滚与前进

> git reset --mixed commit_id  # 回退版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,
不影响原来本地文件(未提交的也不受影响) ,即回到工作区
> git reset --soft commit_id  # 回退版本,不清空暂存区,将已提交的内容恢复到暂存区,
不影响原来本地的文件(未提交的也不受影响),即回到暂存区,git add .状态
> git reset --hard commit_id  # 回退版本,清空暂存区,将已提交的内容的版本恢复到本地,
本地的文件也将被恢复的版本替换,即所有修改都没有了,回到commit版本状态
> git reset --mixed HEAD~1  # 回退一个版本
> git reset --mixed HEAD~1  # 回退了版本
> git reflog  # 查看分支操作记录,记住前进版本的前6位commit id
> git reset --hard commit_id  #也可前进到该分支
回退版本后git push -f 强制push才能完成push成功

9 利用git和vscode查看修改代码的终极教程

记录原始代码的commit id为commit_id1 (可以git log 查看)

当前修改后最新代码的commit id为commit_id2 (回退版本后可git reflog查看)

> git reset --mixed commit_id1  # 回退到原始版本,且代码修改不影响,vscode里面有git扩展可以查看到基于commit_id1版本的commit_id2版本修改,颜色区分,
> 进行代码修改,方便查看修改部分,写代码
> git reset --mixed commit_id2  # 回退到新版本,且本地修改不变,忘记commit_id2可git reflog查看
> git add . && git commit  # 提交代码
> 可循环进行

10 删除文件

当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用:

> git rm file_path
> git commit -m 'delete somefile'
> git push

当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用:

> git rm --cached file_path
> git commit -m 'delete remote somefile'
> git push

注:删除文件夹可加-r

11 迁移git仓库

适用情况:用别人的项目当作基础,然后开发自己的项目,如果使用fork该项目,那么就算重命名别的项目名称,github上搜索不到,并且在fork项目下的提交不会增加自己的提交贡献(这点非常不爽,滑稽)。
所以可以新建一个仓库,然后将某个项目搬到新仓库,并且保存log和commit。

第一种方法:改remote,在本地已有仓库更方便

#新建仓库 project_new
> git clone  http://xxx/project_old.git   #克隆旧仓库
> git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done  
#在本地分支创建所有远程分支
> git remote set-url origin http://xxx/project_new.git      #改remote的地址
> git push --all   #push所有分支的内容
##如果只要一个master分支,可以只git push -u

第二种方法:直接镜像迁移,只操作远程分支,和本地基本没关系

#新建仓库 project_new
> git clone --bare http://xxx/project_old.git     #从地址克隆裸版本仓库
> cd project_old.git
> git push --mirror http://xxx/project_new.git     #以镜像推送的方式上传到新仓库

12 clone仓库,忽略提交历史方法

> git clone -b master --depth 1 http://xxx/project_new.git res_dir 
# -b 指定分支或commit_id 
# --depth 只保留commit的记录的深度,就是git log下的深度,可以大大降低某些大项目的大小,
# res_dir 保存到目标文件夹,以该目录作为项目的目录
> git fetch --unshallow   # 如果使用了--depth,记得加这个,避免git push推送时出现(shallow update not allowed)的错误,这个命令会重新拉取全部仓库代码


> git checkout --orphan new_branch 
# --orphan 基于当前分支创建一个没有任何提交历史的分支,
# 可用于重新提交到master,或者初始化项目,去除提交历史
# 重新提交master:git add .  && git commit -m "" && git branch -D master (删除原先分支) && git branch -m master(修改当前分支名称)&& git push -f origin master

相关文章

  • git的常用操作

    git的常用操作

  • 组件化(第一篇)

    组件化 git 常用操作指令 cocoapods的基本使用 cocoapods本地私有库 一、git 常用操作指令...

  • GIt 操作补充

    常用的git操作命令 常用的git操作命令已经能够满足日常的工作需求 现补充一些高级命令 git branch -...

  • git使用整理

    git使用常用操作-常用基本命令 克隆:git clone 【url】 查看修改状态: git status (g...

  • GIT 版本管理 常用命令

    Git 常用命令流程图 Git常用操作命令: 初始化创建:$ git init //检出仓库:$ git clon...

  • git常用操作命令

    git常用操作命令 1 git工作原理图 2 git远程操作 2.1 git clone 远程操作的第一步,通常是...

  • 🍏常用 git 操作指北

    ? 常用 git 操作指南 ? git图形界面操作软件 ? 开发流程 git clone 拉取项目代码,不必多说 ...

  • git常用操作 🎀

    git常用操作 ? 基本知识 查看git信息 修改git配置 提交类操作 分支类操作 创建分支 查看分支 修改分支...

  • 真 git 操作大全 不会就看

    git 常用命令git 远程操作git 撤销操作 推酷git大全 react router4 中文文档 koa 简...

  • git常用操作

    git缩写配置: 在.gitconfig文件中添加: [alias] git常用操作: git clone 克隆一...

网友评论

      本文标题:git的常用操作

      本文链接:https://www.haomeiwen.com/subject/jfokdctx.html