git使用

git练习网站
git菜鸟教程

本地

  • HEAD 当前分支的最新提交
  • 分离HEAD:git switch 节点哈希值 :让head指向了某个具体的提交记录而不是分支名

查看分支状态

  • git status
    • -s --short 简洁模式
    • Untracked files
    • not staged
    • to be committed

image

添加到暂存区

  • git add . 将工作区所有更改添加到暂存区stage
    • .gitignore 文件中的文件会被忽略

提交

  • git commit -m "描述" 提交stage的一个快照到本地仓库
  • git commit --amend 修改最近一次提交(如某个文件多/少/错提交了)

撤销

  • git reset 重置当前分支到指定提交点,之后的节点记录会被移除(适用个人分支/本地分支)
    --mixed:保留工作区,移除暂存区(默认)
    --soft:保留工作区和暂存区
    --hard:移除工作区和暂存区(不建议)

    • git reset HEAD 撤销stage中add的所有内容
    • git reset <file> 撤销stage中add的指定文件
    • git reset HEAD^ 撤销一次commit(重置分支的 HEAD 到 HEAD 的父提交)
  • git rm --cached <file> 从暂存区删除某文件

  • git revert 撤销某次提交;通过创建一个新的提交来实现撤销,从而保持了提交历史的完整性(适用协作的公共分支)

    • git revert HEAD 撤销最近一次的提交

整理提交记录

  • git cherry-pick <提交号> 将指定的提交节点复制到当前分支
    • 如dubug分支的记录不想提交,可以cherry-pick debug后的分支到main
  • git rebase -i HEAD~3 交互式rebase 会有一个UI窗口

标签

  • git tag tag_name <提交号> 给某个提交打标签,默认给HEAD打

分支管理

新建分支

  • git branch name 在当前节点上创建一个名为name的分支
    • git branch -f main HEAD~3 将 main 分支强制指向 HEAD 的第 3 级 parent 提交

分支切换

  • git switch name 切换到分支name上
  • git checkout -b name 新建并切换
  • git checkout -- <file> 会用暂存区指定的文件替换工作区的文件
  • git checkout HEAD . 或者 git checkout HEAD <file> 会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件

分支合并

  • git merge name 将name分支合并到当前分支(会新建节点)如果有冲突的话会报冲突,需要解决冲突
  • git rebase name 将name分支取出放到当前分支下 (可用于移动分支指针)

远程

远程分支:仓库名/分支名 远程分支反映了远程仓库在你最后一次与它通信时的状态

  • 切换到远程分支时会进入分离HEAD状态,因为本地的修改必须push上去才能改变远程分支的状态

拉取

  • git fetch 从远程仓库下载缺失的记录到本地&更新远程分支的指针
    • 不会改变你本地仓库的状态
  • git pull 下载并和当前分支合并
    • == fetch + merge
  • git pull --rebase 下载并rebase

上传

  • git push 上传提交的内容并合并远程分支
  • ``
posted @ 2024-07-02 14:44  不要肥宅  阅读(2)  评论(0编辑  收藏  举报