git基本操作命令

195 阅读4分钟

基本操作

配置全局的name 和email

git config --global user.name "name" 
git config --global user.email "email" 

生成SSH Key

ssh-keygen -t rsa -C "youremail"  
  • 会在你C:\Users\Administrator.ssh的目录里有个id_rsa.pub文件 用记事本打开复制里面的值

克隆项目

git clone 项目地址

拉取项目

git pull 

上传项目

git push // 推送到当前你所处的分支
git push origin 分支名 // 推送到你标明的分支

分支操作

新建分支

git branch 分支名

切换分支

git checkout 分支名

合并分支

当你拉去了线上主分支到本地但是你并不想直接在上面更改,而是新建一个本地分支来进行更改,当你更改完成之后需要切回到主分支然后合并子分支

git merge 本地子分支

删除指定分支

git branch -D 分支名

commit合并操作

当你的本地commit想要多条合并成一条时 按如下操作即可

  1. 首先使用
git log --oneline // 显示本地的commit --oneline显示在一行 可以加也可以不加
  1. 找到你想要最终合并的上一条commit_id(hash值)
git rebase -i commit_id(hash值) // 全部合并到commit_id中

​ 应该选择add1下面这个commit_id值

git-commit-1.png 3. 这时候会进入vim界面 注意上面会有一个pick

git-commit-2.png

  • pick 是指会执行这个 commit

  • squash是指这个commit会被合并到前一个commit中

    • vi 常用命令:
      • Esc:切换到命令行模式
      • u:撤销
      • i :从目前光标所在处输入
      • :wq:保存文件并退出

只保留第一个为pick剩下的替换成squash 如下图

git-commit-3.png

输入完成后敲击键盘上的Esc之后输入:wq结束vim

  1. 这时候会进入另一个vim 输入你最终合并的commit信息

git-commit-4.png

最终我修改的信息是这样的

git-commit-5.png

输入结束和前一个一样都是使用i和Esc :wq退出Vim

最后会有个successful的信息

git-commit-6.png

  1. 进行上传即可
git push 

rebase 命令 合并commit

git rebase --continue // 继续合并 
git rebase --abort // 取消合并
git rebase --edit-todo // 打开你输入的合并信息 可以再次修改

上传代码到指定仓库

如何指定上传代码到某个仓库?

用于初始化的时候

  1. 在你的文件夹中 执行 git init 命令
git init
  1. 将所有文件丢进文件夹中,然后
git add .
  1. 将上一步add的文件commit到仓库
git  commit -m "提交的说明注释"
  1. 将本地仓库关联到的仓库上
git remote add origin https://github.com/shiyuan233.github.io/
  1. 使用pull命令
git pull origin master
  1. 将本地仓库的文件上传到GitHub远程仓库
git push -u origin master
  1. 如果报错是因为你仓库可能没有进行初始化 少了README.md文件

  2. error: Your local changes to the following files would be overwritten by merge:

    出现这种问题,是因为有人在git服务器上直接修改文件,导致从git pull最新代码会提示这样的问题。 解决这样的问题,有以下两种方案: 方法1:如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)

    git stash
    git pull origin master
    git stash pop
    

常见问题

git commit -m 'xxx'出现报错

原因是:

pre-commit钩子惹的祸

  当你在终端输入git commit -m"XXX",提交代码的时候,   pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。   如果代码不符合相应规则,则报错。

解决方式:

一、 简单粗暴的方式

  1. 进入项目的.git文件夹下面hooks文件夹,手动删除pre-commit文件
  2. 运行命令:rm -rf ./git/hooks/pre-commit 删除pre-commit文件

二、 根据提示在命令中添加--no-verify

  将git commit -m"XXX" 改为 git commit --no-verify –m"XXX"

三、 代码改到符合标准再提交(推荐使用这个)

git commit 不成功

当你git commit 没有带提交信息的时候会进入让你输入提交信息的地方

  1. 按住字母i可以进入编辑模式输入你想要提交的信息
  2. 最后输入:wq加回车结束

版本回退

回退到线上某个版本

git reset --hard commit_id(hash值)
git push origin HEAD --force // 如果不成功看看是不是增加了分支保护

回退到本地某一个分支

当你仅仅是传到了本地缓存库中并没有上传仓库

比如当你今天增加了多个commit 如commit1和commit2,你想回退到commit1,可以输入一下指令

git log // 获取某一个commit的commit_id(hash值)
git reset --hrad commit_id // 回退到某次commit

然后接着再进行push操作即可

强制覆盖

git push -f