Git学习笔记二

git-study

commit, tree与blob的对应关系

  1. 一个commit对应一个tree(唯一一个)
  2. 一个tree可以看作是一次commit之后整个项目的一个快照
  3. 一个tree可能也会包含多个tree
  4. 一个blob对应一个文件

分离头指针注意的问题

    当切换到没有绑定分支的commit时,并对其当中的文件修改,最终提交commit保存后会出现"warning: you are leaving 1 sommit behind, not connected to any of your branches."
    这时的commit被git看作不重要,可能会被git所清理,如果你要保存这个commit就要新建分支(git branch new-branch-name [分支hash])

删除不需要的分支

    git branch -d [branch-name / hash]

修改commit和massage

  1. 修改最新的commit
    git commit --amend
  1. 修改老旧的commit
    git rebase -i [privious-commit-hash]
    # 按照提示修改
    # 将pick改为reward
  1. 合并多次的commit
    git rebase -i [oldest-commit-hash]
    # 按照提示修改
    # 将pick改为squash
  1. 合并不连续的commit
    git rebase -i [oldest-commit-hash]
    # 未显示出来的需要用到的commit要按照先后顺序手动添加进来
    # 把要合并的commit按照先后顺序放在一起
    # 将pick改为squash

文件操作

文件的差异

  1. 比较暂存区与head指向的文件差异
    git diff --cached
  1. 比较工作区与暂存区文件差异
    git diff
    # 所以说git diff命令默认比较的是工作区和暂存区的区别,默认所有文件
    
    git diff -- file.name
    # 指定文件的差异

文件提交与回退

  1. 暂存区恢复成和HEAD一样
    命令:git reset HEAD ...
    git reset HEAD
    # 清空暂存区所有文件(即取消暂存)
  1. 工作区恢复成和暂存区一样

    命令:git checkout -- ...

    git checkout -- file.name
  1. 取消暂存区部分文件的暂存

    命令git reset HEAD ...

    git resset HEAD -- file1.name file2.name # ...
  1. 清除最近几次提交
    git reset --hard [target-commit-hash]
  1. 查看不同提交的指定文件的差异
    # 比较两分支的差异
    git diff branch1 branch2
    # 比较特定文件
    git diff branch1 branch2 -- file.name

    # 直接比较两个commit
    git diff commit-hash-1 commit-hash-2 -- file.name
  1. 删除文件的正确方法
    git rm file.name
  1. 紧急任务处理
    # 保存当前状态以便处理紧急事件
    git stash
    # 处理完之后再恢复
    git stash pop # 或 git stash apply

    # pop 和 apply的区别
    # pop恢复并丢掉stash list内容,apply不会

    # 查看stash列表
    git stash list

指定不需要git管理的文件

.gitignore文件

你可能感兴趣的:(Git学习笔记二)