Git使用说明
git_branch_4">git branch
用于管理分支,包括查看、创建、删除、重命名分支等操作。
git branch
: 列出本地仓库中的所有分支,并标识当前所在的分支。git branch <branch-name>
: 创建一个新分支,名称为<branch-name>
。git branch -d <branch-name>
: 删除名为<branch-name>
的本地分支。需要注意,删除分支前需要确保分支中的工作已经合并到其他分支中,否则会丢失提交历史。git branch -m <old-branch-name> <new-branch-name>
: 将名为<old-branch-name>
的分支重命名为<new-branch-name>
。git branch -a
: 列出本地仓库中的所有分支,包括远程仓库中的分支。git branch -vv
: 显示本地分支的详细信息,包括每个分支的最新提交信息以及与远程分支的关联情况。git branch --merged
: 列出已合并到当前分支的分支。git branch --no-merged
: 列出尚未合并到当前分支的分支。
git_status_17">git status
git status
是一个非常常用的 Git 命令,用于查看当前工作目录的状态。以下是一些常用的 git status
方法:
- 已修改(modified)的文件:即工作区中已经修改但尚未添加到暂存区的文件。
- 已暂存(staged)的文件:即已经添加到暂存区但尚未提交到版本库的文件。
- 未跟踪(untracked)的文件:即工作区中尚未添加到 Git 的文件。
git status
: 显示当前工作目录的状态,包括已修改(但尚未暂存)、已暂存(但尚未提交)、未跟踪文件等信息。git status -s
或git status --short
: 显示简短的状态信息,只显示已修改、已暂存和未跟踪文件的摘要,以减少输出量。git status -b
或git status --branch
: 显示当前所在分支的状态,并提示是否有待提交的变更。这个选项还会显示当前分支的跟踪情况。git status -uno
或git status --untracked-files=no
: 不显示未跟踪文件的状态信息。
git_remote_30">git remote
git remote
命令用于管理远程仓库,包括查看、添加、删除、重命名远程仓库等操作。以下是 git remote
命令的一些常用方法:
git remote
: 列出所有远程仓库的名称。git remote -v
: 显示所有远程仓库的名称和对应的 URL。git remote add <remote-name> <url>
: 添加一个新的远程仓库,指定名称为<remote-name>
,URL 为<url>
。git remote remove <remote-name>
: 移除指定名称的远程仓库。git remote rename <old-name> <new-name>
: 将远程仓库的名称从<old-name>
重命名为<new-name>
。git remote show <remote-name>
: 显示指定远程仓库的详细信息,包括远程分支和本地分支的跟踪情况。
git_reset_41">git reset
git reset
命令用于撤销提交,可以将当前分支的 HEAD 移动到指定的提交,也可以取消已暂存的文件或取消已提交但尚未推送到远程仓库的提交。以下是一些常用的 git reset
方法:
git reset <commit>
:将 HEAD 移动到指定的提交,但保留当前工作目录的状态,将之前的提交视为未暂存状态。这种形式的 reset 称为软重置(soft reset)。git reset --hard <commit>
:将 HEAD 移动到指定的提交,并且重置暂存区和工作目录,丢弃之前的提交和修改。这种形式的 reset 称为硬重置(hard reset)。git reset HEAD <file>
:取消对指定文件的暂存,将文件从暂存区中移除,但保留工作目录中的修改。git reset --mixed <commit>
:这是git reset
的默认行为。它将 HEAD 移动到指定的提交,同时保留工作目录中的修改,但将这些修改标记为未暂存状态。这种形式的 reset 称为混合重置(mixed reset)。git reset --hard HEAD
:取消当前分支的所有修改,并将 HEAD 指向最新的提交。这可以用来撤销所有的本地变更,并回到最近的提交状态。git reset --soft HEAD^
:将 HEAD 移动到前一个提交,但保留当前修改和暂存状态,使得你可以重新提交之前的变更。
git_add_51">git add
git add
命令用于将文件或目录添加到暂存区,以准备将其包含在下一次提交中。以下是一些常用的 git add
方法:
git add <file>
: 将指定的文件添加到暂存区。可以使用相对路径或绝对路径指定文件。git add .
或git add --all
: 将当前目录下的所有修改过的文件和未跟踪的文件添加到暂存区。git add -u
或git add --update
: 将已跟踪的文件的修改添加到暂存区,但不包括未跟踪的文件。git add -p
或git add --patch
: 交互式地添加文件到暂存区,可以逐个确认要添加的修改。这个选项可以用来部分地暂存文件的部分修改。git add -i
或git add --interactive
: 进入交互式模式,可以按需选择要添加到暂存区的文件。
git_commit_60">git commit
git commit
命令用于将暂存区的文件提交到本地仓库中。以下是一些常用的 git commit
方法:
git commit -m "<commit-message>"
:提交暂存区中的文件,并附带一条提交消息,消息内容由<commit-message>
指定。这种方式适用于简单的提交,提交消息不需要跨越多行。git commit -a
或git commit --all
:提交暂存区中的所有修改过的文件,跳过使用git add
命令暂存文件的步骤。这个选项不会提交未跟踪的文件。git commit --amend
:修改上一次提交的内容。执行该命令后,会打开编辑器,允许你修改上一次提交的提交消息、添加缺失的文件或修改已暂存的文件。git commit -m "<new-commit-message>" --amend
:修改上一次提交的提交消息,并保持提交内容不变。git commit -v
或git commit --verbose
:提交文件时显示每个修改的差异,以便更容易理解提交的内容。git commit --no-verify
:跳过提交时的钩子检查。有时候你可能需要暂时禁用钩子来提交一些临时性的修改。
git_push_70">git push
git push
命令用于将本地仓库中的提交推送到远程仓库中。以下是一些常用的 git push
方法:
git push <remote-name> <branch-name>
: 将本地分支的提交推送到指定远程仓库的指定分支。例如,git push origin main
将本地的main
分支推送到远程仓库origin
上的main
分支。git push -u <remote-name> <branch-name>
: 将本地分支的提交推送到指定远程仓库的指定分支,并将本地分支与远程分支关联起来。使用-u
参数可以设置远程分支为默认的上游分支,之后的git pull
和git push
命令将自动使用该分支。git push --all <remote-name>
: 将本地所有分支的提交推送到指定远程仓库。git push --force <remote-name> <branch-name>
: 强制推送本地分支的提交到远程分支,即使远程仓库中的分支已经有了新的提交。注意:强制推送可能会导致远程仓库的提交丢失,慎用该命令。git push --tags <remote-name>
: 将本地所有的标签推送到指定远程仓库。git push origin --delete <branch-name>
: 删除远程仓库上的指定分支。这将从远程仓库中移除指定分支的所有提交。
git_merge_80">git merge
git merge
命令是 Git 中用于合并分支的主要工具之一。下面是一些 git merge
命令的常用方法:
-
合并指定分支到当前分支:
phpCopy code git merge <branch-name>
这个命令将
<branch-name>
分支上的修改合并到当前分支上。 -
普通合并(Non-Fast-Forward Merge):
sqlCopy code git merge --no-ff <branch-name>
使用
--no-ff
选项执行普通合并,即创建一个新的合并提交,而不是使用快进合并。这样可以保留分支的提交历史。 -
合并后压缩为一个提交(Squash Merge):
sqlCopy code git merge --squash <branch-name>
使用
--squash
选项将要合并的提交压缩成一个单独的提交,而不是直接合并提交历史。这个方法通常用于创建清晰的、整洁的提交历史。 -
合并冲突的解决: 在执行合并操作时,如果遇到冲突,Git 会提示你手动解决冲突。解决完冲突后,需要执行
git add
将解决后的文件标记为已解决,然后执行git commit
完成合并提交。 -
合并特定提交:
sqlCopy code git merge <commit-id>
你也可以合并特定的提交,而不是合并整个分支。这个方法通常用于处理特定的提交或补丁。
git_rebase_122">git rebase
git rebase
命令用于重新设置分支的基础,常用于将一条分支的修改应用到另一条分支上,或者重排提交历史。以下是一些 git rebase
命令的常用方法:
-
将当前分支的修改应用到目标分支上:
phpCopy code git rebase <target-branch>
这个命令将当前分支的提交应用到
<target-branch>
分支上,并将当前分支的基础设置为<target-branch>
分支的最新提交。这种方法通常用于将一个分支的修改应用到另一个分支上,并保持提交历史的线性。 -
交互式重新设置提交历史:
cssCopy code git rebase -i <commit-id>
使用
-i
选项可以进入交互式 rebase 模式,允许你对提交历史进行交互式的重新设置。在交互式模式中,你可以合并、编辑、删除提交,甚至重新排列提交顺序。 -
将当前分支的修改应用到目标分支上并保留合并提交:
cssCopy code git rebase --preserve-merges <target-branch>
使用
--preserve-merges
选项可以保留分支合并的信息,即保留合并提交。这在需要保留分支合并信息的情况下非常有用。 -
中止 rebase 操作:
cCopy code git rebase --abort
如果在 rebase 过程中出现问题,你可以使用
--abort
选项中止 rebase 操作,并恢复到 rebase 开始之前的状态。 -
继续 rebase 操作:
kotlinCopy code git rebase --continue
如果在解决冲突后需要继续 rebase 操作,你可以使用
--continue
选项继续进行 rebase。
git_pull_171">git pull
git pull
命令用于从远程仓库拉取更新,并将其合并到本地分支。以下是一些常用的 git pull
方法:
-
从远程仓库拉取更新到当前分支:
Copy code git pull
这个命令会从与当前分支关联的远程仓库中拉取更新,并将其合并到当前分支。
-
指定远程仓库和分支:
phpCopy code git pull <remote-name> <branch-name>
这个命令会从指定的
<remote-name>
远程仓库的<branch-name>
分支中拉取更新,并将其合并到当前分支。 -
拉取更新并重新应用本地修改:
cssCopy code git pull --rebase
使用
--rebase
选项可以在拉取更新后,重新应用本地提交而不是直接进行合并。这有助于保持提交历史的线性。 -
拉取更新但不自动合并:
cssCopy code git pull --no-commit
使用
--no-commit
选项可以在拉取更新后,不进行自动合并,而是保留更新的修改以便进行进一步处理。 -
拉取更新并强制合并:
cssCopy code git pull --force
使用
--force
选项可以在拉取更新后,强制进行合并。这在需要覆盖本地修改的情况下可能会有用,但需要小心使用以避免丢失本地修改。
git_checkout_220">git checkout
git checkout
是 Git 中一个非常常用的命令,用于切换分支、恢复文件、创建新分支等操作。以下是一些常见的用法:
-
切换分支:最常见的用法就是切换到已存在的分支。
bashCopy code git checkout branch_name
-
创建并切换到新分支:如果分支不存在,可以用
git checkout -b
创建并立即切换到新分支。bashCopy code git checkout -b new_branch_name
-
恢复文件:将工作区中的文件恢复到最近一次提交的状态。
bashCopy code git checkout -- file_name
-
切换到某个特定的提交:可以使用提交的哈希值或标签名进行切换。
bashCopy codegit checkout commit_hash git checkout tag_name
-
切换到上一个分支:如果需要在两个分支之间频繁切换,可以使用
-
标记来返回上一个分支。bashCopy code git checkout -