git使用指北

1、设置用户#

  • 查看用户配置信息

    git config --list
    
  • 全局配置

    git config --global user.name 'aj'
    git config --global user.email '123@qq.com'
    
  • 给单独的项目设置作者

    git config --local user.name 'aj'
    git config --local user.email '123@qq.com'
    

2、设置缩写#

  • status 设置为 st

    git config --global alias.st status
    

3、初步使用#

  • 初始化git

    git init
    
  • gitadd.

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

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

    git log--pretty=oneline)
    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"
    
    //查找20171月后早上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 //使用另一个分支的图片
    

    rebasemerge 的区别

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

    git reflog
    
  • HEAD,指向当前分支

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

    git checkout -b bird commit值
    

5、修改历史记录#

  • 撤销修改

    git checkout -- index.js //还未在暂存区中
    git reset HEAD index.js  //已放在暂存区中,head表示最新版本
    
  • 使用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
    

实际遇到的问题#

使用husky做代码提交的时候,由于验证失败,导致之前写的添加的文件和所有写代码都消失了,幸好找到了解决方法,使用git stash pop恢复,找回了丢失的代码

作者:xxjing

出处:https://www.cnblogs.com/xxjing/p/17036728.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   淡蓝色的点  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示