首页 > 其他分享 >git使用指北

git使用指北

时间:2023-01-09 13:11:18浏览次数:29  
标签:指北 HEAD git -- rebase 使用 commit 分支

1、设置用户

  • 查看用户配置信息

    git config --list
    
  • 全局配置

    git config --global user.name 'aj'
    git config --global user.email '[email protected]'
    
  • 给单独的项目设置作者

    git config --local user.name 'aj'
    git config --local user.email '[email protected]'
    

2、设置缩写

  • 将$status$ 设置为 $st$

    git config --global alias.st status
    

3、初步使用

  • 初始化$git$

    git init
    
  • $git add .$

    • git add . 只执行当前目录及之下的所有改变
    • git add --all 执行这个项目中的异动
  • 提交

    git commit -m '描述信息'  //暂存区必须有内容
    git commit --allow-empty -m '描述信息'  //暂存区允许为空
    git commit -a -m '描述信息'  //不在暂存区但在工作区的文件(tracked file)
    
  • 查看commit

    git log
    git log --oneline -- graph  //可以查看到更多的commit
    :q                          //退出gitlog,光标在按空格或enter显示更多commit
    
  • 查找某些特定的commit

    //查看a和b的commit
    git log --oneline --author="a \| b"
    
    //查看包含有lol的commit
    git log --oneline --grep="lol"
    
    //在commit文件中找到rubby
    git log -S "rubby"
    
    //查找到今天早上9点到12点间的commit
    git log --oneline --since="9am" --until="12am"
    
    //查找2017年1月后早上9点到12点间的commit
    git log --oneline --since="9am" --until="12am" --after="2017-01"
    
    //查看指定文件的commit
    git log index.html
    
    //查看每次commit做了什么
    git log index.html -p
    
  • 删除文件

    git add delete.txt  //手动删除
    git rm delete.txt  //git自动删除
    git rm delete.txt --cached  //取消git的控制,但是不删除源文件
    
  • 修改commit记录

    • 修改最后一次

      git commit --amend -m 'description'
      
    • reset

      git reset e12d3ef^ //表示回退到e12d3ef的前一个,如果有两个^(^^)
      git reset e12d3ef~5,//表示回退到前5个
      git reset master^
      git reset HEAD^  //当HEAD和master都指向当前的commit时
      git reset e12d3ef //回退到e12d3ef commit
      
      • mixed :文件存放在工作区
      • soft : 文件存放在暂存区
      • hard :被删除
      • git reglog (git log -g)保留reset记录
  • 追加文件到最新的一次commit中

    git commit --amend --no-eidt  //表示不添加描述
    
  • 忽略某些文件

    • 在.gitignore中添加文件,注意,这个文件只针对在设置了.gitigore之后被管理的文件,之前的文件可以用下面的指令进行处理

      git rm --cached  //使得之前的文件也能被忽略
      git clean -fX  //清楚忽略的文件
      
    • 如果使用 git add -f 则无法忽略

  • 查看代码是在那一次commit中添加的

    git blame index.html
    git bleam -L 5,10 index.html  //查看index.html中的5到10行的代码
    
  • 挽回被删除的文件

    git checkout index.html
    git checkout HEAD~2  //表示使用两个版本前的文件覆盖当前工作区的内容,同时更新暂存区的状态
    
  • HEAD 通常指向当前的分支

4、分支

  • 查看分支

    git branch
    
  • 新增分支

    git branch cat
    
  • 修改分支名称

    git branch -m cat dog
    
  • 删除分支/恢复分支

    git branch -d dog
    git branch -D dog //强制删除
    git branch 分支名  SHA-1值
    
  • 切换分支

    git checkout sheep  //原本存在这个分支
    git checkout -b sheep  //原本不存在这个分支
    
  • 合并分支

    git merge 要被合并的分支名
    git rebase 要被合并的分支名
    
    //取消合并
    git reset HEAD^ --hard
    
    //rebase取消合并
    git reflog 查找到合并前的commit
    git reset commit --hard
    
    git reset ORIG_HEAD --hard // ORIG_HEAD记录危险操作之前HEAD的位置
    
    //合并发生冲突(文本)
    //merge,修改冲突文件
    git add .
    git commit -m ''
    
    //rebase 修改冲突文件
    git add .
    git rebase --continue
    
    //合并发生冲突(图片)
    git checkout --ours .jpg //使用当前分支的图片
    git checkout --theirs .jpg //使用另一个分支的图片
    

    $rebase$ 和 $merge$ 的区别

    • $merge$ 合并会产生一个额外的commit (保留原来的commit),指向合并的双方(无master)
    • rebase 丢弃原来的commit,根据合并的位置重新计算commit的值
  • 查看SHA-1的值

    git reflog
    
  • HEAD,指向当前分支

    HEAD^  //缩写@^
    
  • 在过去的commit上另开一个分支

    git checkout -b bird commit值
    

5、修改历史记录

  • 使用rebase 修改

    git rebase -i sha-1  //整理从sha-1到当前commit的所有提交信息
    pick 改为reward
    
  • 合并commit

    git rebase -i sha-1  //整理从sha-1到当前commit的所有提交信息
    pick 改为 squash
    
  • 增加commit

    pick 改为 edit
    
  • 调整commit顺序(修改弹窗内容)

  • 删除commit

    pick 改为 drop
    
  • revert 取消之前的commit(新增一个commit表示取消之前的commit)

    git revert HEAD --no-edit
    

6、标签

  • 标签和分支的区别

    标签不会移动,分支会随着commit的推进而往前移动

  • 添加删除标签

    git add 标签名 SHA-1值(不写默认当前的commit)  //轻量标签
    git add 标签名 SHA-1值(不写默认当前的commit)-a -m 信息  //附注标签
    

7、远端协作

  • 设置远端节点

    git remote add origin 地址
    
  • 推内容

    git push -u(可忽略) origin(远端) master(本地分支名):master(远程分支名)
    git push -u origin master//第一次简写
    git push  //-u表示git push默认推送到master分支上
    
  • 拉取内容

    // 通常是远端仓库和本地仓库提交的commit不一致时使用,比如提交到仓库后直接在远端修改文件生成一个commit
    git pull = git fetch + git merge   
    git puhh --rebase  //使用rebase合并
    
  • 克隆

    git clone -b dev 地址  //指定
    git clone 地址  //master
    
  • 删除服务器上的分支

    git push origin :cat
    

标签:指北,HEAD,git,--,rebase,使用,commit,分支
From: https://www.cnblogs.com/xxjing/p/17036728.html

相关文章

  • npm link 本地包调试 使用未发布包
    创建npm包软链接只需两步。第一步将未发布的包设置为全局包,在包根目录下,执行:npmlink在一个包文件夹内执行npmlink将在全局文件{prefix}/lib/node_modules/内......
  • pytorch中查看gpu信息、选择使用gpu(转)
    转自:https://blog.csdn.net/pearl8899/article/details/109503803pytorch中查看gpu信息、选择使用gpu前提:安装好Python3.6+,torch(GPU),登录一台开发机。一、GPU基本信息......
  • 关于vue :style 的几种使用方式
    :style的使用一,最通用的写法 <p:style="{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p>二,三元表......
  • mysql要不要使用外键约束
    以我现在的观点来看,只要不是什么超大型的并发量很高的应用(类似淘宝、京东这种),因为数据量超大,即使是0.00001的性能缺失也会被放大到可以明显感觉的程度那么用外键可以省事,......
  • 为什么使用消息队列?我这样回答,面试官直说讲得很清楚
    为什么要使用消息队列,六个字总结:解耦、异步、消峰1)解耦传统模式下系统间的耦合性太强。怎么说呢,举个例子:系统A通过接口调用发送数据到B、C、D三个系统,如果将来E系......
  • stunnel加密通道使用实践
    今天用了半天的时间把内网与外网服务器代理加密通道调通了。以后就可以以外网服务器的IP地址来访问网站了。下边是今天架设通道的经验总结,stunnel服务器端安装及设置我的服......
  • Vscode vim 使用中文版
    译者注:本中文版基于VSCodeVim/Vim的README.md(2022-04-26)进行翻译和更新,基础英文版本保存在The_original_En_version下,如果后续有更新,将以最新版本与该版本比对后,再进......
  • swagger-ui的使用
    引入依赖<!--接口文档依赖--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></depe......
  • 新建Module_Module服务被调用_配置文件的属性被使用
    一、新建Module  二、Module服务被调用新建META-INF/spring.factoriesorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.galileotime......
  • C# winform使用InstallShield2019打包
    C#winform使用InstallShield2019打包莫凭栏_于 2019-12-0420:08:59 发布1624收藏3分类专栏:软件文章标签:C#Installshield2019winform......