Git的三个阶段分别有哪些?每个阶段包含哪些命令?

2022-08-24 22:39:33 浏览数 (1)

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

合并当前仓库

0 人点赞