git操作一般分为三个阶段:

工作目录
文件系统中实际文件的状态,可以跟踪或取消跟踪,可以更改或删除。
暂存区或索引
我们根据其更改为新版本准备一组文件的区域
HEAD
它是当前分支中的指针,它具有完整的存储库历史记录
每个阶段的命令如下:
工作目录
git 命令 | 描述 |
---|---|
git init | 将普通文件夹初始化为 Git 存储库 |
git status | 显示工作目录和 INDEX 的更改 |
git status -sb | 将更改显示为列表 |
git add . | 将所有更改添加到索引 |
git add {file or folder} | 将特定更改添加到 INDEX |
git rm {file or folder} | 从工作目录中删除文件(用于新提交) |
git add -A . | 添加所有更改并删除到 INDEX |
git clean -d -f | 放弃更改(清理工作目录) |
git checkout {file} | 恢复文件内容(因为它在 HEAD 上) |
git stash | 保存未完成的工作(本地更改) |
git stash -m "WIP" | 保存未完成的工作(本地更改)并命名 |
git stash pop | 带回您保存的未完成工作 |
git stash list | 列出您当前拥有的 stash |
git stash pop [stash] | 删除单个隐藏状态并将其应用于当前分支 |
git stash apply [stash] | 像 pop,但不要从存储列表中删除状态 |
git stash -U [stash] | 存储更改添加未跟踪的文件 |
git log --since="1 weeks ago" | 显示上周的当前提交 |
git log [-p] {file} | 显示对特定文件的更改 |
git log {branch..master} | 两个分支的区别 |
git log -S 'text' | 显示与文本匹配的更改 |
git log {directory} | 显示特定目录的更改 |
git grep {something} | 列出与某事匹配的提交 |
git reflog | 像 git log,但显示已删除的提交(参见 git reset) |
暂存区
git 命令 | 描述 |
---|---|
git commit -m 'comment...' | 使用在 INDEX 上添加的更改创建提交 |
git commit -am 'comment...' | 添加(跟踪的文件)并创建提交 |
git commit --amend ['comment...'] | 将更改添加到最后一次提交 |
git restore --staged {file or folder} | 从暂存区域中删除文件/文件夹 – 撤消 git add |
git reset HEAD {file} | 撤消添加命令,将更改的文件保留在工作目录中 |
git reset HEAD | 撤消所有添加的文件,将更改保留在工作目录中 |
git remote prune origin | 通过删除远程删除的分支来清理本地分支 |
git ls-remote --refs origin | 列出远程分支,包括 PR 分支 (refs/pull/[PR_NUMBER]/head |
git fetch origin pull/[PR_NUMBER]/head:pr/[PR_NUMBER] | 获取 PR 代码到本地仓库 |
git checkout pr/[PR_NUMBER] | 对 PR 分支内容的更改(在上面的命令中获取) |
HEAD
git 命令 | 描述 |
---|---|
git show {sha1} | 显示当前提交详细信息 |
git checkout {sha1} | 签出(导航)到特定 sha1(提交)中的代码 |
git checkout HEAD | 结帐(导航)到 HEAD 中的代码 |
git revert {sha1} | 创建一个撤消特定提交的新提交 (sha1) |
git revert HEAD | 创建一个新的提交撤消上一次提交 |
git reset {sha1} | 将当前 HEAD 重置为指定状态 {sha1} |
git reset --merge {sha1} | 将当前 HEAD 重置为指定状态 {sha1},保持工作目录上的当前更改 |
git reset HEAD~1 --soft | 撤消最后一次提交,保留 INDEX 上的更改 |
git reset HEAD~1 | 撤消最后一次提交,保留工作目录上的更改 |
git reset HEAD~1 --hard | 撤消最后一次提交,丢弃所有更改 |
git reset HEAD --hard | 撤消对 INDEX 和工作目录的所有更改 |
git reflog | 列出所有 {sha} 并从重置中恢复 –hard |
git bisect start | 开始二分查找引入 bug 的变化 |
git bisect bad HEAD | 将 HEAD 标记为坏 |
git bisect good {sha1} | 将最后一次提交标记为良好 |
git bisect {good/bad} | 将中间提交标记为好或坏 |
git bisect reset | 返回到 git bisect start 之前签出的提交 |
git remote [add/rm] {repo_alias} {url} | 管理您跟踪其分支的存储库集 |
git remote add {repo_alias} -f {url} | 添加并获取远程存储库 |
git remote [-v] | 列出远程存储库 |
git push | 使用本地提交更新远程仓库 |
git rebase {branch} | 添加来自指定分支的当前分支提交 |
git rebase -i HEAD~3 | 进行一组最后三个提交 |
git clone {repo url} | 将存储库克隆到新目录 |
git clone -b {branch} {repo url} | 克隆存储库分支 |
git fetch | 从另一个存储库(.git/FETCH_HEAD)下载对象和引用 |
git pull {alias} [master] | 从另一个存储库中获取并与主库合并 |
git pull [-s strategy] [-X options] [alias] [branch] | 使用自定义选项从另一个存储库中获取并合并 |
git merge {branch} | 将当前分支与另一个指定分支合并 |
git merge {branch} --squash | 将当前分支与另一个指定分支合并,保留 INDEX 上的更改 |
git branch -a | 列出远程和本地分支 |
git branch {new_branch} | 创建一个新的本地分支 |
git branch -m {old-name} {new-name} | 重命名本地分支 |
git branch -rd origin/{branch} | 本地删除分支 |
git push origin --delete bugfix | 远程删除同一个分支 |
git checkout -b {new_branch} | 创建并更改到新的本地分支 |
git checkout {branch} | 更改到另一个现有分支 |
git switch {branch} | 更改到另一个现有分支 |
git switch -c {branch} | 创建并更改到新创建的分支 |
git push -u {repo_alias} {branch} | 将本地分支推送为远程分支 |
git branch -d {branch} | 删除本地分支 |
git push {repo_alias} --delete {branch} | 删除远程分支 |
git tag {v1.0} | 创建一个新标签 |
git push origin {v1.0} | 使用新标签更新远程存储库 |
git format-patch master --stdout > bugfix.patch | 针对主服务器创建补丁(提交不在主服务器中) |
git apply --stat bugfix.patch | 列出补丁的更改(不应用它) |
git am --signoff --ignore-whitespace ‹ bugfix.patch | 在当前分支上应用补丁 |
git merge second_repo/master -s recursive -X ours | 合并当前仓库 |
THE END
暂无评论内容