1.Git使用技巧-常用命令2

这篇具有很好参考价值的文章主要介绍了1.Git使用技巧-常用命令2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Git使用技巧-常用命令2



一、本地仓库整理

提示:这里可以添加本文要记录的大概内容:

本地仓库整理分为整理上一次提交和整理多次提交
1.整理上一次提交:
把当前暂存区里的内容合并到上一次commit里,而且还可以修改上一次提交的message信息。

git commit --amend //把此次提交追加到上一次的commit内容里

上面命令执行后,跳出一个VIM编辑框(如左下图),此时我们可以修改提交内容格式(如右图)
Git会新增加一个commit-id覆盖了上一次的commit-id, 这样漏掉的文件会合并到上一次的提交,然后我们也修改了提交message的规范,大家可以通过git log –p去查看这次内容。当然我们除了添加“漏掉”的文件,也可以删除“误修改”的文件。最后使用git push –fore强制推送修改后的commit。
1.Git使用技巧-常用命令2,git,大数据

2.整理多次提交

git rebase –i commesh1  //-i后面的参数表示不要合并的commit的hash值
// -i 后为空,就是整理所有的

demo:
执行 git rebase -i 打开如下文件
1.Git使用技巧-常用命令2,git,大数据
文件内容解析:
可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
此时的commit内容的排列和git log里的排列是反的,也就是倒序的。
pick 和 squash的意思如下。我们将 ad777ea和a271901这两个commit前方的命令改成 squash 或 s,然后输入:wq以保存并退出
pick 的意思是要会执行这个 commit;
squash 的意思是这个 commit 会被合并到前一个commit;
如果我们仅仅修改commit message,需要把打算修改的commit的对应pick命令修改为reword,然后保存。

退出后会弹出如下界面,即需要我们重新编辑合并后的commit信息,未注释掉的是会包含在commit message里的,按”wqa”保存后即完成了此次commit的合并
1.Git使用技巧-常用命令2,git,大数据

只能使用如下提交命令
上述配置修改保存后:

You can amend the commit now, with
  git commit --amend

Once you are satisfied with your changes, run
  git rebase --continue
  
  如果在修改前所有的commit都已经push到远程仓库的话,我们需要使用git push --force强制推送到远程仓库

进入分支奠基状态

Administrator@DESKTOP-TH29QNR MINGW64 /j/git-test/mathlib-test (master|REBASE 
1/2)

注意:
如果在修改前所有的commit都已经push到远程仓库的话,我们需要使用git push --force强制推送到远程仓库。


二、查看本地仓库

查看在暂存区提交本地仓库的信息。

查看

git  log   // 不带任何参数

git log --onelie  //每条日志显示一行

git log -[length]  //只显示前面的length 条日志

git log --skip=[skip] -3   # 跳过前面的skip条日志

git log -p   # 显示一些统计信息以及文件的改动内容和行信息

git log --stat   # 显示提交的作者 日期 message 和文件内容统计信息

git shortlog   # 显示每个author提交commit和多少条commit

git show commit-id   # 显示commit-id的提交内容,包括所有文件的修改信息

过滤

按日期
       $ git log --after="2018-7-1"    # 201871好之后的所有日志
       $ git log –-before="2014-7-1"
按作者
       $ git log --author="Dounin"  
按照提交信息
       $ git log --grep=“issue”  # 按照提交本中是否包含issue的日志
按文件
       $ git log -- ./src/http/modules/ngx_http_xslt_filter_module.c
按照内容
       $ git log -S “ngx_free” # 即所有文件中包含了 ngx_free字符串的修改
按照范围 
       $ git log <since>..<until> # 比如 git log master..feature这可以显示出自从master分支fork之后,feature分支上所有的提交

二、逆向操作

1. 检出覆盖本地文件 workspace -> NULL

文件checkout 是从本地仓库检出文件,覆盖workspace 和index 内容
git checkout命令就是从本地仓库中或暂存区检出文件,并且覆盖工作目录的内容。
Demo:

$ git checkout branches/stable-1.14  # 检出到branches/stable-1.14分支上,即用1.14分支的内容覆盖了工作区所有内容
$ git checkout 9bfbacdd  # 检出到9bfbacdd(commit id)上,即用这个commit 内容覆盖了工作区所有内容
$ git checkout main.cpp # 从暂存区中检出内容,并且覆盖main.cpp文件内容,即尚未添加到暂存区的修改会被丢弃掉
git checkout .  # 注意有一个“.,会从暂存区里取出所有内容覆盖掉工作区的所有修改,如果连暂存区的内容也不想要
                   # 则可以git checkout commit-id
git clean -xdf  # 删除当前目录下所有的修改
如果我们想要放弃本地某个文件的修改:
git checkout file-name  # 从暂存区里

1.1 删除workspace 文件

文件已经存在工作区了,但是尚未提交到暂存区,文件状态是未标记即是untracked的内容,那么我们可以使用
git clean命令来删除这些文件,用法如下:

git clean -n :是一次clean的演习,告诉你哪些文件会被删除,记住他不会真正的删除文件,只是一个提醒。
git clean –f :删除当前目录下所有没有track过的文件,他不会删除.gitignore文件里面指定的文件夹和文件,不管这些文件有没有被track过。
git clean -f

:删除指定路径下的没有被track过的文件
git clean -df :删除当前目录下没有被track过的文件和文件夹
git clean -xf :删除当前目录下所有没有track过的文件,不管他是否是.gitignore文件里面指定的文件夹和文件。

2. 本地仓库回滚

本地有三个commit,现在想针对这三个commit作回滚,可
以使用git reset命令来做,reset参数如下意思:
–soft – 缓存区和工作目录都不会被改变
–mixed – 默认选项。你指定的提交同步,但工作目录不受影响
–hard – 缓存区和工作目录缓存区和都同步到你指定的提交
git reset --hard HEAD~{n}就是把HEAD指针回退n个版本(commit),并且使用该commit的内容覆盖掉工作区的内容,即丢弃了前面n个commit的修改和当前工作区的修改。然后调用**git push origin master**推送到远程仓库。

3. 远程仓库

1. 远程仓库未基于代码做修改

使用git revert 回滚,会保留commit记录,

示例:
现在我想d061cb3这个分支不是我想要的,要回退掉:
流程如下:

git revert d061cb3 # 因为4bff67b是晚于d061cb3的,如果这两个修改的内容有依赖,是会有冲突的,当然如果想取消这次回退可以使用,git revert --abort
fix conflict # 手动去解决冲突
git commit # 然后提交,此时使用git log会发现原理的git commit记录还在,但是增加了一个revert的记录
git push # 推送至远程库

逆操作总结

1.Git使用技巧-常用命令2,git,大数据


三、删除

1. 删除远程仓库普通文件

流程:

	  // 本地仓库
      git rm -rf xx
      git add  xx
       git commit –m “remove timer mudlue”
       git push

2. 永久删除

静默删除:
比如上传了保密文件,一般开发人员不应该能看到这样的秘钥文件,需要永久删除

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch sort.hpp’ 
        --prune-empty --tag-name-filter cat -- --all  # sort.hpp也可以替换成文件夹, 此时要在git rm后添加-r参数

// 提交远程仓库
git push origin master --force  # 从上图我们也能看出来远程仓库没有被修改

四.查看文件

  1. 查看某个文件的全部commit
git log --oneline filename   # 显示文件的所有修改记录
  1. 查看文件所有commit 内容
 $ git log –p filename  # 显示所有commit的修改
  1. 查看某个文件gommit 内的修改
$ git show commit-id filename   # 显示某个commit里文件的修改
  1. 查看本地修改的差异
$ git diff filename   # 查看本地对某个文件做了那些具体修改

5.与某个commit 比较

$ git diff commit-id filename   # 显示与某个commit间所有的差异,commit-id可以替换成HEAD,比如HEAD~2

6.两个commit 之间的额差异

   $ git diff commit-id1 commit-id2   # 显示两个commit所有的差异

五、暂存文件

1.常用命令

$ git stash   # 将工作区的修改保存到缓存区,默然取名为:
          WIP on <branch_name><latest_commit_id> <latest_commit_message>
$ git stash save <name>   # 将工作区的修改保存到缓存区,且取名为name
$ git stash pop    # 取出缓存区栈顶(即最近一次)的内容,并且会删除此次pop的内容
$ git stash list   # 查看缓存里所有存储的修改
$ git stash apply stash@{X} #  取出stash里的内容,X为序号,但是不会删除stash@{X}
$ git stash drop stash@{X}  # 删除stash@{X}
$ git stash clear    # 删除缓存区里所有的记录

2. 暂存如何使用

两个分支:master FT-12345

        git stash   #  暂存修改
        git stash pop  # 从缓存里取出修改

调用git stash后就可以使用git checkout master分支上去修复bug了,修复完了之后再git checkout FT-12345后git stash pop


总结

文章主要是讲解本地仓库,回滚,查看提交记录等信息的命令

参考

Git教程

文章参考与<零声教育>的C/C++linux服务期高级架构系统教程学习:文章来源地址https://www.toymoban.com/news/detail-545040.html

到了这里,关于1.Git使用技巧-常用命令2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GIT高级使用技巧

    按照 哈希 - 作者名 作者邮箱地址 - 作者日期 : commit描述 的格式导出日志 筛选日志并按照从旧到新的顺序排序,且只要提交哈希值(用于批量cherry-pick等操作) 要批量应用 git cherry-pick 命令,可以使用 xargs 配合 git cherry-pick 使用。具体步骤如下: 将要应用的提交 ID 复制到一

    2024年02月09日
    浏览(36)
  • Git日常使用技巧 - 笔记

    Git是目前世界上最先进的分布式版本控制系统 学习资料 廖雪峰 学习视频 https://www.bilibili.com/video/BV1pX4y1S7Dq/?spm_id_from=333.337.search-card.all.clickvd_source=2ac127043ccd79c92d5b966fd4a54cd7 Git 命令在线练习工具 https://learngitbranching.js.org/?locale=zh_CN 1. 版本控制系统 1.1 集中式的版本控制系统 定

    2024年02月07日
    浏览(41)
  • Git Gui使用技巧

    https://www.runoob.com/w3cnote/git-gui-window.html 创建仓库→添加远程仓库→扫描目录→文件移动→提交→上传 注意填注释 创建文件.gitignore→编写内容

    2024年02月08日
    浏览(56)
  • 【Git使用小技巧】一个项目使用多个远程仓库

    目录 场景一:多远程仓库的基本操作 添加远程仓库 查看远程仓库 推送到全部远程仓库 同步指定目标仓库 更改远程仓库地址 删除远程仓库 场景二:所有仓库同步拉取/推送 场景三:一个仓库只拉取,一个仓库只推送 参考资料: 前言 当我们实际开发中,可能会遇到一个项目

    2024年01月19日
    浏览(66)
  • 【小技巧】MATLAB中的使用Git的工作流程

    目录 1.Git简介     2.Git操作步骤         MATLAB中的Git是一种版本控制工具,它使你能够跟踪和管理项目代码的变化。Git的核心思想是在开发过程中记录代码的不同版本,以便可以随时回溯到以前的版本或合并多个开发人员的更改。下面是MATLAB中的Git的一些关键概念和操作:

    2024年02月06日
    浏览(38)
  • 便捷开发技巧——在Vscode中使用Git-翻译自Vscode官网

    介绍 Want to easily manage your source code and collaborate with others? Git and GitHub are the tools you need! And with Visual Studio Code, you can set up and use them in a snap. Even if you’re a beginner, VS Code’s user-friendly interface guides you through common Git actions like pushing and pulling code, creating and merging branches, and committin

    2024年01月17日
    浏览(42)
  • Linux grep命令与$?命令结合使用技巧

    今天检查前同事留下的一个shell脚本时,其中一个脚本中有一个业务逻辑处理:要判断Oracle数据库实例是否启动,如果数据库实例处于OPEN状态的话,则执行/运行一些业务逻辑操作。脚本大体如下(脚本做了一下混淆和精简收缩) 其中chkdbup.sh脚本的内容如下: Review这个脚本时

    2024年02月15日
    浏览(40)
  • Vim学习(四)——命令使用技巧

    打开文本默认模式,按**【ESC】**重新进入 【/】 :搜索匹配 按**【i / a / o】**键均可进入文本编辑模式, 只是插入位置略有不同 按**【:】**进入

    2024年02月11日
    浏览(24)
  • 【git安装、使用、常用命令】

    1、下载链接: Git(Git 主程序)https://git-scm.com/downloads 根据自身电脑操作系统选择下载,默认安装,一直next就可以了。装好了,打开文件目录,右键单击“Git Bash Here”,即可弹出Git命令框。 2、可根据自身需要下载图形界面 图形界面操作工具,TortoiseGit: https://download.torto

    2023年04月23日
    浏览(90)
  • PyCharm 使用教程:PyCharm常用技巧指南,轻松学会

    在 PyCharm 中,打开已有的项目有 3 种方式。 欢迎界面中选择 open 菜单栏中选择 File-open 打开远程 Git 的项目 在 PyCharm 中,打开已有的项目可以在第一次打开的欢迎界面中选择 open 来打开你电脑中已经创建过的项目: 菜单栏中选择 File-open 选择已有的项目 获取仓库地址中的项目

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包