基本用法
git init
- 将普通文件夹初始为 Git 管理的文件夹 (仓库).
git add
- **跟踪: **将文件从 Untracked 状态变为 Tracked 状态.
- **暂存: **将文件从 Unstaged 状态变为 Staged 状态.
git commit -m
- **提交: **将文件从 Staged 状态变为 commited 状态 (提交到仓库中) .
git status
版本穿梭
git log
- 显示 HEAD 指针及其祖先的 commit 历史.
git reflog
git reset --hard (HEAD^/commit_id)
- 穿梭到相应的版本. 通常可以搭配
git log
和 git reflog
使用.
git restore <files>
- 丢弃修改. 将文件从 Unstaged 状态变回上一个状态 (可能是 Staged 状态也可能是 commited 状态).
- 可以用
git checkout -- <files>
达到相同的效果, 但是不建议.
git restore --staged <files>
- 丢弃修改. 将文件从 Staged 状态变回 Unstaged 状态.
- 可以用
git reset HEAD <fiels>
达到相同的效果, 但是不建议.
远程仓库
git clone <url> [<dir>]
git remote add <remote> <url>
- 关联远程仓库.
- 例如:
git remote add https://github.com/ame-lm/hi
.
git remote rm <remoete>
git push <remote> <branch>
git pull <remote> <branch>
git fetch <remote> <branch>
分支管理
git branch
git branch <branch>
git switch <branch> / git checkout <branch>
git merge <branch>
git merge --abort
git branch -d <branch>
git stash
git stash apply
git cherry-pick <commit_id>
- 将特定的 commit 再次提交.
- 例如你正在维护 v1 和开发 v2 版本, 在 v1 中发现了一个 bug, 该 bug 在 v2 的某个 commit 中得到了修复. 此时你肯定不想在 v1 中再次编写同样的代码, 但是又不能合并整个 v2 分支到 v1, 这样会造成版本混乱. 这时可以使用
git cherry-pick <commit_id>(v2 中的某个提交 commit_id)
, 来修复此 bug.
- 这会在 v1 分支中重新提交该 commit. 但是拥有不同的 commit_id.
- 如果发生了冲突, 需要解决冲突后使用
git add ...
, 然后再 git cherriy-pick --continue
继续提交.
- 冲突时, 也可以
git cherriy-pick --abort
放弃此次提交.
git rebase
分支管理策略
master / main
- master / main 分支通常用来发布稳定的正式版本.
dev
- dev 分支通常用来进行开发, 包含项目的所有代码, 但是并不稳定, 当有稳定版本的时候合并到master / main 分支即可.
git merge --no-ff -m "..." dev.
- 禁止 fast-forward 合并. 这可能会丢失合并信息.
标签管理
git tag
git tag <tag>
git tag <tag> <commit_id>
git tag -a <tag> -m "..." <commit>
- 给特定的 commit 打上标签, 并添加 comment 信息.
git tag -d <tag>
git push <remote> <tag>
- 删除标签.
- 例如:
git push origin : refs/tags/v1.23.9
.
posted @
2020-10-08 19:22
燈心
阅读(
75)
评论()
编辑
收藏
举报