Git是一个开源的分布式版本控制系统,用于有效、高速地处理从很小到非常大的项目版本管理。以下是100个Git常用命令的归纳:
一、仓库创建与克隆
git init
:在当前目录初始化一个新的Git仓库。git clone [url]
:克隆远程仓库到本地。
二、文件操作
git add <file>
:将文件添加到暂存区。如果要添加当前目录中的所有文件,请使用.
代替。git add .
:将当前目录中的所有更改添加到暂存区域。git commit -m "<message>"
:提交暂存区的文件到本地仓库,并附上提交信息。git commit --amend
:修改最后一次提交的信息或内容。git reset <file>
:从暂存区撤销文件的更改。git rm <file>
:从版本库中删除文件。如果仅想从暂存区中删除,可以使用--cached
标志。git mv <current path> <new path>
:移动或重命名文件。git status
:显示工作区和暂存区的状态。git diff
:显示文件修改的差异。使用--staged
标志可以显示暂存区的更改。
三、分支管理
git branch
:列出所有本地分支。git branch -a
:列出所有本地和远程分支。git branch -r
:列出所有远程分支。git branch -v
:显示最后一次提交的分支信息。git branch -d <branch>
:删除一个分支。如果分支未合并,使用-D
强制删除。git checkout <branch>
:切换到指定分支。git checkout -b <branch>
:创建一个新的分支并切换到它。git merge <branch>
:合并指定分支到当前分支。git rebase <branch>
:将一个分支上的更改重新应用到另一个分支。git cherry-pick <commit>
:从一个分支选择性地应用更改到另一个分支。git rebase -i
:执行交互式rebase操作,可以合并、修改、删除提交等。
四、远程操作
git remote -v
:显示远程仓库的详细信息。git remote add <remote name> <url>
:添加一个新的远程仓库。git remote remove <remote name>
:移除一个远程仓库。git remote rename <old name> <new name>
:重命名远程存储库。git fetch <remote name>
:从远程仓库拉取最新变更,但不合并到本地仓库。git fetch <remote name> <branch>
:从特定分支获取更改。git pull <remote name> <branch>
:拉取远程分支并合并到本地分支。使用--rebase
参数可以避免产生Merge点。git push <remote name> <branch>
:将本地分支推送到远程仓库。git push <remote name>
:将当前分支推送到远程仓库(如果已设置跟踪)。git push -u <remote name> <branch>
:推送分支并设置上游(跟踪)关系。git push --force
:强制推送更改到远程仓库(慎用)。
五、撤销与重置
git reset --hard <commit id>
:重置当前分支到指定提交,并删除所有更改。git revert <commit id>
:撤销指定提交的更改,并创建一个新的提交。git checkout -- <file>
:恢复文件到最近一次提交的状态。
六、查看历史与日志
git log
:显示提交历史。git log --oneline
:以单行显示提交历史。git log --graph
:以图形方式显示提交历史,包括分支和合并情况。git log --pretty=oneline
:以简洁格式显示提交历史。git log --graph --pretty=oneline --abbrev-commit
:结合使用,以图形和简洁格式显示提交历史。git show <commit>
:显示某次提交的详细内容。git show-branch
:显示各个分支的提交情况。git shortlog
:根据作者将提交整理成摘要。
七、标签与版本
git tag
:列出标签。git tag <name>
:创建标签。git tag -d <name>
:删除标签。git checkout <tag>
:切换到指定标签的版本。
八、储藏与恢复
git stash
:暂存当前工作区的修改。git stash save "<message>"
:带消息地暂存当前工作区的修改。git stash list
:列出所有储藏。git stash apply <stash id>
:应用指定的储藏。git stash pop <stash id>
:恢复并删除指定的储藏。git stash drop <stash id>
:删除指定的储藏。git stash clear
:删除所有储藏。
九、配置与帮助
git config
:配置Git的各种选项和变量。git config --global
:全局配置Git选项。git config --list
:列出所有配置。git help <command>
:显示指定命令的帮助信息。git gui
:启动Git的图形用户界面(如果已安装)。
十、其他高级命令
git bisect
:用于二分查找引入bug的提交。git bisect start
:启动二分查找。git bisect bad
:标记当前提交包含bug。git bisect good <commit>
:标记指定提交为没有bug。git bisect reset
:结束二分查找并重置HEAD到原来的状态。
git blame
:显示每行代码是谁、在什么时间写入的。git grep <pattern>
:在代码库中搜索指定模式。git archive
:创建文件归档。git submodule
:管理子模块。git reflog
:查看引用日志,用于恢复误删除的提交或分支。git ls-files
:列出当前版本库中的文件。git rev-parse
:显示提交对象的标识符。git fsck
:检查Git仓库的完整性。git gc
:清理不必要的文件和优化存储。git instaweb
:启动图形化界面查看仓库(需要安装相关依赖)。git worktree
:管理多个工作树。
十一、与SVN交互(如果适用)
git svn clone [url]
:从SVN仓库克隆项目。git svn init [url]
:初始化Git仓库以与SVN仓库进行交互。git svn fetch
:从SVN仓库获取数据,但不应用到当前分支。git svn rebase
:从SVN仓库重新获取数据并应用到当前分支。git svn dcommit
:将本地提交推送到SVN仓库。git svn log
:查看SVN仓库的提交日志。git svn set-tree
:设置SVN仓库的树。git svn reset
:重置SVN仓库。git svn show-ignore
:显示SVN仓库的忽略列表。git svn info
:显示SVN仓库的信息。
十二、特定场景命令
- 使用某个commit新建分支:
git checkout -b <branch_name> <commit_id>
。 - 用远程分支新建本地分支:
git fetch origin <remote_branch_name>:<local_branch_name>
。 - 查看两次提交之间的变化:
git diff <commit_id_01> <commit_id_02>
。 - 恢复到之前的某个提交:
git checkout <commit_id>
(注意,这不会改变工作区或暂存区的状态,只是查看)。 - 查看并比较不同分支:可以使用IDE或
git diff
命令结合分支名进行比较。 - 设置远程仓库的HEAD:
git remote set-head <remote> <branch>
。 - 更新远程仓库引用:
git remote update
。 - 修改远程仓库的URL地址:
git remote set-url <remote> <new_url>
。 - 清理不再存在的远程分支:
git remote prune <remote>
。 - 显示将要删除的未跟踪文件(但不删除):
git clean -n
。