Git 命令大全

Git 命令大全:全面详解

Git 是目前最流行的分布式版本控制系统,被广泛应用于软件开发中。无论是个人项目还是团队协作,掌握 Git 命令可以帮助你更有效地管理代码版本和协作开发。本文将详细介绍常用的 Git 命令,涵盖从基础操作到高级使用场景。


一、Git 基础命令

1. 初始化仓库

git init

用于在当前目录下初始化一个新的 Git 仓库。

git init

git clone <repository>

从远程仓库克隆一个项目到本地。

  git clone https://github.com/user/repository.git

2. 配置 Git 用户信息

git config --global user.name "Your Name"

设置全局用户名。

  git config --global user.name "Your Name"

git config --global user.email "your.email@example.com"

设置全局用户邮箱。

  git config --global user.email "your.email@example.com"

git config --list

查看所有配置。

  git config --list

3. 查看仓库状态

git status

查看当前仓库的状态,显示有哪些文件发生了变化、哪些文件需要提交。

  git status

4. 添加文件到暂存区

git add <file>

添加指定文件到暂存区。

  git add README.md

git add .

添加当前目录下的所有变化到暂存区。

  git add .

5. 提交更改

git commit -m "commit message"

提交暂存区中的更改,并添加提交信息。

  git commit -m "Initial commit"

git commit -a -m "commit message"

将所有已跟踪的文件的更改提交(包括未暂存的变化),并添加提交信息。

  git commit -a -m "Updated files"

6. 查看提交历史

git log

显示提交历史的日志信息。

  git log

git log --oneline --graph

以图形化方式显示简洁的提交历史。

  git log --oneline --graph

二、分支管理

1. 创建和切换分支

git branch <branch-name>

创建新分支。

  git branch feature-branch

git checkout <branch-name>

切换到指定分支。

  git checkout feature-branch

git checkout -b <branch-name>

创建并切换到新分支。

  git checkout -b new-feature

2. 合并分支

git merge <branch-name>

将指定分支的内容合并到当前分支。

  git merge feature-branch

3. 删除分支

git branch -d <branch-name>

删除本地分支。如果分支未被合并,Git 会阻止删除操作。

  git branch -d feature-branch

git branch -D <branch-name>

强制删除本地分支,无论是否合并。

  git branch -D feature-branch

4. 查看分支

git branch

查看本地分支列表,当前分支会标有 *

  git branch

git branch -a

查看本地和远程的所有分支。

  git branch -a

三、远程仓库操作

1. 查看远程仓库

git remote

查看配置的远程仓库。

  git remote

git remote -v

查看远程仓库的详细信息,包括 fetchpush 的 URL。

  git remote -v

2. 添加远程仓库

git remote add <name> <url>

添加一个新的远程仓库。

  git remote add origin https://github.com/user/repository.git

3. 推送到远程仓库

git push <remote> <branch>

将本地分支推送到远程仓库。

  git push origin main

git push -u <remote> <branch>

推送并设置默认上游分支,以后可以直接用 git push 推送。

  git push -u origin main

4. 拉取远程仓库的变化

git pull <remote>

拉取远程仓库的最新变化并合并到当前分支。

  git pull origin main

git fetch <remote>

从远程仓库拉取最新的变化但不合并。

  git fetch origin

四、标签管理

1. 创建标签

git tag <tag-name>

为当前分支的最新提交创建一个标签。

  git tag v1.0.0

git tag -a <tag-name> -m "message"

创建带有注释的标签。

  git tag -a v1.0.0 -m "Initial release"

2. 查看标签

git tag

查看所有标签。

  git tag

git show <tag-name>

查看指定标签的详细信息。

  git show v1.0.0

3. 推送标签到远程仓库

git push <remote> <tag-name>

将指定标签推送到远程仓库。

  git push origin v1.0.0

git push --tags

推送所有标签到远程仓库。

  git push --tags

4. 删除标签

git tag -d <tag-name>

删除本地标签。

  git tag -d v1.0.0

git push <remote> --delete <tag-name>

删除远程仓库的标签。

  git push origin --delete v1.0.0

五、查看与比较

1. 查看提交差异

git diff

查看工作区与暂存区之间的差异。

  git diff

git diff --staged

查看暂存区与最后一次提交之间的差异。

  git diff --staged

git diff <branch1>..<branch2>

比较两个分支之间的差异。

  git diff main..feature-branch

2. 查看文件历史

git log <file>

查看指定文件的提交历史。

  git log README.md

git blame <file>

查看文件每一行的提交者和修改时间。

  git blame README.md

3. 撤销操作

git checkout -- <file>

撤销工作区中对指定文件的更改。

  git checkout -- README.md

git reset HEAD <file>

取消暂存区中的更改。

  git reset HEAD README.md

git revert <commit>

还原指定提交,并生成一个新的提交。

  git revert 123abc

git reset --hard <commit>

将当前分支重置到指定提交,同时重置工作区和暂存区的状态。

  git reset --hard 123abc

六、暂存与恢复

1. 暂存修改

git stash

暂存当前工作区的修改。

  git stash

git stash save "message"

使用描述信息暂存修改。

  git stash save "WIP: unfinished work"

2. 查看和恢复暂存

git stash list

查看暂存列表。

  git stash list

git stash apply

应用最近一次暂存的内容。

  git stash apply

git stash pop

应用最近一次暂存的内容并删除该暂存。

  git stash pop

git stash drop <stash>

删除指定的暂存。

  git stash drop stash@{0}

七、Git 高级命令

1. 修改最后一次提交

git commit --amend

修改最后一次提交的提交信息或追加更改。

  git commit --amend -m "Updated commit message"

2. Rebase 操作

git rebase <branch>

将当前分支的提交应用到指定分支的基础之上。

  git rebase main

git rebase -i <commit>

交互式 rebase,可以合并、重排、删除历史提交。

  git rebase -i HEAD~3

3. Cherry-pick 操作

git cherry-pick <commit>

将指定提交的更改应用到当前分支。

  git cherry-pick 123abc

4. 变基冲突解决

git rebase --continue

继续进行 rebase,通常在解决冲突后使用。

  git rebase --continue

git rebase --abort

取消当前的 rebase 操作,恢复到 rebase 前的状态。

  git rebase --abort

八、Git 与 GitHub 协作

1. 生成 SSH 密钥

ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

生成 SSH 密钥,用于与 GitHub 进行安全通信。

  ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

2. 添加远程仓库 URL

git remote set-url origin <new-url>

修改现有远程仓库的 URL。

  git remote set-url origin git@github.com:user/repository.git

3. Fork 和 Pull Request

Fork 项目

在 GitHub 上 Fork 你想要参与的项目。

git remote add upstream <url>

为 Fork 的仓库添加上游仓库。

  git remote add upstream https://github.com/original/repository.git

git fetch upstream

获取上游仓库的最新更改。

  git fetch upstream

git merge upstream/main

将上游仓库的更改合并到本地分支。

  git merge upstream/main

Pull Request

在 GitHub 上发起 Pull Request,提交你对原始项目的贡献。


九、总结

掌握 Git 命令是开发人员必备的技能之一,从项目初始化、分支管理、远程协作到高级操作,Git 提供了丰富的工具来帮助开发者高效管理代码。本文介绍的命令只是 Git 功能的一部分,通过不断实践和探索,你将能够更灵活地运用 Git 进行版本控制和团队协作。

相关推荐
m0_629776921 天前
CI/CD中gitlab和jenkins讲解
git·ci/cd·gitlab·jenkins
qq_586475431 天前
Jenkins、Ansible 和 Git 的自动化部署教程
git·ansible·jenkins
一只积极向上的小咸鱼1 天前
git常用命令总结
大数据·git·elasticsearch
刘心奶黄包qaq1 天前
Git学习笔记
笔记·git·学习
黑不溜秋的2 天前
C++ 在项目中使用Git
开发语言·c++·git
程序员-杨胡广2 天前
Redis重要知识点:哨兵是什么?哨兵如何选择Redis主服务器
redis·git·bootstrap·github
problc2 天前
CTF比赛中的Git相关题目解题思路
git
晓风残月Yuperman2 天前
mac 电脑 git credential osxkeychain问题之二
git·mac
机器学习Zero2 天前
让效率飞升的秘密武器:解锁编程高效时代的钥匙
git·python·github·aigc
蓝瑟柳絮2 天前
学习之git的团队协作
git·学习