git命令

一、常用命令(6个):git clone、git push、git add、git commit、git checkout、git pull

1、git init:git 上传新项目需要初始化,项目中出现如下文件夹

2、git add 文件名:工作区提交修改到暂存区

- 命令格式:

  • 添加一个或多个文件到暂存区:git add [file1] [file2] ...
  • 添加指定目录到暂存区,包括子目录:git add [dir]
  • 添加当前目录下的所有文件到暂存区:git add .

- 使用案例:

  • git add testAdd.txt add.js

3、git commit -m "备注":提交暂存区到本地仓库

- 命令格式:

  • git commit -m [message] —— 提交暂存区到本地仓库([message]可以是一些备注信息)
  • git commit [file1] [file2] ... -m [message] —— 提交暂存区的指定文件到仓库区
  • git commit -a -m —— -a参数设置修改文件后不需要执行 git add 命令,直接来提交
    • git commit -a -m [message] 等价于 git add . 再执行 git commit -m [message]

4、git status:查看仓库当前的状态,显示有变更的文件

  • 使用 -s 参数来获得简短的输出结果:git status -s

5、git diff:比较文件的不同,即暂存区与工作区的差异

  • git diff —— 工作区(work dict)与暂存区(stage)的比较(未缓存:未执行 git add 命令)
  • git diff --cached —— 暂存区(stage)与分支(master)的比较(已缓存:已执行 git add 命令)
  • git diff HEAD —— 查看已缓存的与未缓存的所有改动
  • git diff --stat —— 显示摘要而非整个

- 命令格式:

  • git diff [file] —— 显示暂存区与工作区的差异
  • git diff --cached [file] / git diff --staged [file] —— 显示暂存区与上一次(commit)的差异

6、git show commit_id:查看某次修改

7、git log / git blame

- git log:查看历史提交记录

  • git log —— 查看提交历史,看到回退到哪个版本
    • 会 less 分页显示文件的内容(q  —— 退出less分页
  • git log --graph —— 查看分支合并图
  • git --no-pager log -3 -p —— 查看最近3个版本的修改情况
    • no-pager —— 不 less 分页显示了
    • 3 —— 修改3个版本
    • p —— 显示修改部分

- git blame:以列表形式查看指定文件的历史修改记录

  • 查看某个文件的每一行内容由谁所写:git blame 文件名
    • 命令行:git blame src/components/Debugger.vue
  • 如果只查文件中某一部分由谁所写:
    • git blame 文件名 | grep "查找词"grep需要安装才能使用
    • git blame 文件名 -L a,b
      • -L —— 参数表示后面接的是行号(Line), a,b代表查询文件的第a行到第b行之间的文件内容情况。
      • a, —— 则代表从第a行到文件结尾
      • ,b —— 则代表从文件开头到第b行
    • 假如我们要查Debugger.vue的第5行,命令则如下所示:
      • git blame Debugger.vue | grep "Mix Asset"
      • git blame Debugger.vue -L 5,5

8、git reflog:查看命令历史,看到回退到哪个版本

9、git pull (--rebase):git pull时可以加上 --rebase 参数,使之不产生 Merge 点,保证了代码的整洁。

10、git push

11、git reset --hard:回退代码。回退到某个 commit_id

  • git reset --hard HEAD/HEAD^/HEAD^^/HEAD~100 —— 回退到上几个版本
    • HEAD 是当前版本,HEAD^ 上个版本,HEAD^^ 上上个版本,HEAD~100 回退 100 个版本
    • git reset --hard 3628164 —— 回退到指定版本号,版本号不用写全

12、git checkout 与 git 分支

  • git checkout -b 分支名 —— 在本地当前分支的基础上,新建一个新分支
  • git checkout -b 本地分支名 origin/远程分支名 —— 拉取远程分支去创建本地分支(git checkout -b menu origin/master)
  • git 分支
    • git branch —— 查看所有本地分支
    • git branch -r —— 查看所有远程分支
    • git branch -a —— 查看所有本地和远程分支
    • git branch 分支名 —— 创建分支
    • git checkout 分支名 —— 切换分支
    • git checkout -b 分支名 —— 创建+切换分支
    • git merge 分支名 —— 合并某分支到当前分支
    • 删除分支:git branch -d 分支名
    • 删除未被合并的分支:git branch -D 分支名

13、git  help 与 git gui

  • git help 可以查看所有 git 命令。比如查询 git branch 相关参数,执行 git help branch,然后 OPTIONS 字段就能看到所有 git branch 的所有参数及其解释。
  • git gui 是 git 的图形操作界面

14、git rm —— 将文件从暂存区与工作区删除

  • rm:删除工作区的文件
    • 执行删除命令:rm src/components/test1.txt
    • 查看状态(成功删除工作区文件):git status
    • rm 命令只是删除工作区的文件,并没有删除版本库的文件,想要删除版本库文件还要执行下面的命令:
      • git add .
      • git commit -m "delete test1"
  • git rm:删除工作区文件,并且将这次删除放入暂存区。
    • 注意:要删除的文件是没有修改过的,就是说和当前版本库文件的内容相同
    • 执行删除命令:git rm src/components/test2.txt
    • 查看状态(成功删除了工作区文件,并且将这次删除放入暂存区)
    • 然后提交:git commit -m "delete test2"
  • git rm -f:删除工作区和暂存区文件,并且将这次删除放入暂存区
    • 注意:要删除的文件已经修改过,就是说和当前版本库文件的内容不同
      • test3.txt 文件修改过还没 git add 到暂存区 —— git rm src/components/test4.txt
      • test3.txt 文件修改过已经 git add 到暂存区 —— git rm src/components/test3.txt
    • 可见文件修改后不管有没有 git add 到暂存区,使用 git rm 命令删除都会报错。
    • 解决方法
      • 执行删除命令:git rm -f src/components/test3.txt
      • 查看状态(成功删除工作区和暂存区文件,并且将这次删除放入暂存区)
      • 然后提交:git commit -m "delete test3",成功删除了工作区,暂存区和版本库的文件。
  • git rm --cached:删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区。
    • 执行删除命令:git rm --cached src/components/test4.txt
    • 查看状态(成功删除暂存区文件,保留工作区文件,并且将这次删除放入暂存区,注意这里文件取消了跟踪):

15、git mv —— 移动或重命名工作区文件

  • mv src/components/test4.txt src/components/new.txt —— 将 test4.txt 重命名为 new.txt

16、git remote -v —— 查看当前项目的仓库地址

17、强制推送:git push -f

二、撤销修改

1、撤销工作区修改(尚未add,尚未commit) ——   git checkout -- src/components/readme.txt

2、撤销暂存区修改(已经add,尚未commit) ———   git reset HEAD src/components/readme.txt, 再 git checkout -- src/components/readme.txt

  • git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
  • git reset HEAD^ —— 回退所有内容到上一个版本(修改的是暂存区的代码)
  • git reset HEAD^ add.txt —— 回退 add.txt 文件的版本到上一个版本
  • git reset 052e —— 回退到指定版本

3、撤销版本库修改(已经commit,尚未推送到远程) ———  git reset —hard HEAD^(版本回退)

--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

  • git reset --hard HEAD~3 ———  回退上上上一个版本  (修改的是本地的代码)
  • git reset –hard bae128 ———  回退到某个版本回退点之前的所有信息。
  • git reset --hard origin/master  ———  将本地的状态回退到和远程的一样

注意:谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

    HEAD 表示当前版本

    HEAD^ 上一个版本

    HEAD^^ 上上一个版本

    HEAD^^^ 上上上一个版本

    以此类推...

可以使用 ~数字表示

    HEAD~0 表示当前版本

    HEAD~1 上一个版本

    HEAD^2 上上一个版本

    HEAD^3 上上上一个版本

    以此类推...

4、版本回退

  • 分支
    • 删除本地分支:git branch -d 分支名
    • 删除远程分支:git push origin --delete feature-branch
      • origin 是远程仓库的别名,feature-branch 是要删除的远程分支名称
      • 删除本地和远程分支后,可以使用 git fetch -p 命令更新本地的远程跟踪分支列表,以确保已删除的远程分支不再显示。
  • 代码回滚:git 代码库回滚,指的是将代码库某分支退回到以前的某个commit id
    • 【本地代码库回滚】:
      • git reset --hard commit-id :回滚到commit-id,将commit-id之后提交的commit都去除
      • git reset --hard HEAD~3:将最近3次的提交回滚(HEAD~3可以改写成HEAD^^^)
    • 【远程代码库回滚】:
      • 应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
      • 原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
      • 操作步骤:
        • 1、git checkout the_branch(切换到分支 the_branch)
        • 2、git pull
        • 3、git branch the_branch_backup(创建分支: the_branch_backup) // 备份一下这个分支当前的情况
        • 4、git reset --hard the_commit_id // 把the_branch本地回滚到the_commit_id
        • 5、git push origin :the_branch // 删除远程 the_branch
        • 6、git push origin the_branch // 用回滚后的本地分支重新建立远程分支
        • 7、git push origin :the_branch_backup // 如果前面都成功了,删除这个备份分支
  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值