常用Git指令

以下是一个 全面的 Git 指令大全,涵盖了从基本操作到高级用法。


1. 配置 Git

初始化 Git 配置

git config --global user.name "Your Name"  # 设置用户名
git config --global user.email "you@example.com"  # 设置邮箱
git config --global core.editor "vim"  # 设置默认编辑器
git config --global core.autocrlf input  # 处理换行符(Linux/Mac)
git config --global core.autocrlf true   # 处理换行符(Windows)

查看配置

git config --list  # 查看所有配置信息

2. 基本操作

初始化 Git 仓库

git init  # 初始化一个本地 Git 仓库

克隆远程仓库

git clone <repository-url>  # 克隆远程仓库到本地

3. 分支操作

查看分支

git branch          # 列出本地分支
git branch -r       # 列出远程分支
git branch -a       # 列出所有分支(本地 + 远程)

创建分支

git branch <branch-name>  # 创建新分支

切换分支

git checkout <branch-name>  # 切换到某个分支
git switch <branch-name>    # 新版切换分支命令

创建并切换分支

git checkout -b <branch-name>  # 创建并切换到新分支
git switch -c <branch-name>    # 新版创建并切换

删除分支

git branch -d <branch-name>   # 删除本地分支(已合并)
git branch -D <branch-name>   # 强制删除本地分支(未合并)

推送本地分支到远程

git push origin <branch-name>

删除远程分支

git push origin --delete <branch-name>

4. 提交代码

添加文件到暂存区

git add <file-name>       # 添加单个文件
git add .                 # 添加当前目录的所有文件
git add *.txt             # 添加所有 .txt 文件

查看当前状态

git status  # 查看工作区和暂存区的状态

提交代码到本地仓库

git commit -m "commit message"  # 提交并附带提交信息
git commit                      # 启动编辑器进行提交

修改最后一次提交

git commit --amend  # 修改上一次的提交信息或文件

5. 查看历史

查看提交历史

git log                         # 查看完整提交历史
git log --oneline               # 简化输出(每个提交一行)
git log --graph --oneline       # 显示分支图
git log -p                      # 查看每次提交的代码改动

查看某文件的修改历史

git log -- <file-name>  # 查看某个文件的历史

6. 回滚与撤销

撤销文件修改

git checkout -- <file-name>  # 撤销工作区文件修改(本地未 add)

撤销暂存区文件

git reset HEAD <file-name>  # 将暂存区文件撤回到工作区

回滚到指定提交

git reset --soft <commit-id>  # 回滚到某提交,保留工作区文件和暂存区
git reset --mixed <commit-id> # 回滚到某提交,保留工作区文件,清空暂存区
git reset --hard <commit-id>  # 回滚到某提交,清空工作区和暂存区

7. 同步远程仓库

查看远程仓库

git remote -v  # 查看远程仓库地址

添加远程仓库

git remote add origin <repository-url>  # 绑定远程仓库

拉取代码

git pull origin <branch-name>  # 拉取远程分支代码并合并到当前分支

推送代码

git push origin <branch-name>  # 推送当前分支到远程仓库

8. 合并与冲突解决

合并分支

git merge <branch-name>  # 将指定分支合并到当前分支

解决冲突

  1. 打开冲突文件,手动解决冲突。
  2. 将解决冲突后的文件添加到暂存区:
    git add <file-name>
    
  3. 提交合并:
    git commit
    

9. 标签操作

创建标签

git tag <tag-name>                     # 创建轻量级标签
git tag -a <tag-name> -m "message"     # 创建带注释的标签

查看标签

git tag            # 查看所有标签

推送标签到远程

git push origin <tag-name>      # 推送指定标签
git push origin --tags          # 推送所有标签

删除标签

git tag -d <tag-name>            # 删除本地标签
git push origin --delete <tag-name>  # 删除远程标签

10. Stash(存储现场)

保存当前工作现场

git stash           # 保存未提交的修改
git stash save "message"  # 保存并附加描述

查看所有存储的现场

git stash list

恢复工作现场

git stash apply          # 应用最近一次存储的现场
git stash apply stash@{n}  # 应用指定的现场

删除存储的现场

git stash drop stash@{n}  # 删除指定的存储
git stash clear           # 清空所有存储

11. 高级操作

比较差异

git diff                   # 查看工作区和暂存区的差异
git diff --cached          # 查看暂存区和上一次提交的差异
git diff <branch-name>     # 比较当前分支和指定分支的差异
git diff <commit-id1> <commit-id2>  # 比较两次提交的差异

Rebasing(变基)

git rebase <branch-name>   # 将当前分支的提交变基到指定分支

Cherry-pick(挑拣提交)

git cherry-pick <commit-id>  # 应用某次提交到当前分支

12. 清理操作

删除未追踪的文件

git clean -f              # 删除未追踪的文件
git clean -fd             # 删除未追踪的文件和文件夹

清理缓存

git rm --cached <file-name>  # 从暂存区删除文件但保留在工作区

13. 常见问题解决

忽略某些文件

创建 .gitignore 文件并写入需要忽略的文件或文件夹:

*.log
*.pyc
node_modules/

修改远程仓库地址

git remote set-url origin <new-url>

以上是一个较为全面的 Git 指令清单,基本涵盖了常用和高级操作。根据你的实际需求选择使用!

1. 安装 Git

  1. 检查是否已安装 Git
    打开 Git Bash,运行以下命令检查 Git 是否已安装:
    git --version
    
    如果未安装,可以从 Git 官网 下载并安装。

2. 配置 Git

在安装好 Git 后,需要配置用户名和邮箱信息(这些信息会记录在提交中)。

配置用户名和邮箱

运行以下命令:

git config --global user.name "Your Name"      # 设置用户名
git config --global user.email "you@example.com"  # 设置邮箱

验证配置

运行以下命令查看配置信息:

git config --list

3. 配置 SSH(推荐方式,便于操作)

为了方便地从 GitHub 克隆代码,需要配置 SSH 密钥 来免密操作。

步骤 1: 检查是否已有 SSH 密钥

运行以下命令检查是否已有 SSH 密钥:

ls -al ~/.ssh

如果文件夹中有 id_rsaid_rsa.pub 文件,说明已有 SSH 密钥,可跳过生成密钥的步骤。


步骤 2: 生成新的 SSH 密钥

如果没有密钥,可以运行以下命令生成一个新的 SSH 密钥:

ssh-keygen -t rsa -b 4096 -C "you@example.com"
  • 提示输入保存路径时,直接按 Enter(默认保存为 ~/.ssh/id_rsa)。
  • 提示设置密码时,可按 Enter 跳过或输入密码(建议不设置密码,方便操作)。

生成的密钥会存储在 ~/.ssh 文件夹中:

  • 私钥:id_rsa
  • 公钥:id_rsa.pub

步骤 3: 添加 SSH 密钥到 SSH 代理

运行以下命令启动 SSH 代理:

eval "$(ssh-agent -s)"

然后将私钥添加到代理中:

ssh-add ~/.ssh/id_rsa

步骤 4: 将 SSH 公钥添加到 GitHub

  1. 查看 SSH 公钥内容:

    cat ~/.ssh/id_rsa.pub
    

    复制输出的公钥内容。

  2. 打开 GitHub 网站,登录你的账号:

    • 点击右上角头像 -> Settings -> SSH and GPG keys -> New SSH key
    • 在 “Title” 中填写描述(如 “My Laptop”)。
    • 将复制的公钥粘贴到 “Key” 中并保存。
  3. 验证是否配置成功:

    ssh -T git@github.com
    

    输出如下说明成功:

    Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
    

4. 克隆 GitHub 上的代码

现在你可以使用 SSH 方式克隆代码。

步骤 1: 获取仓库地址

在 GitHub 项目页面:

  • 点击 Code 按钮。
  • 选择 SSH,复制仓库地址,如:
    git@github.com:username/repository.git
    

步骤 2: 使用 Git Bash 克隆代码

在目标文件夹中运行以下命令:

git clone git@github.com:username/repository.git

克隆完成后,你可以在本地目录中看到该项目的所有文件。


5. 如果使用 HTTPS(不推荐)

如果不想配置 SSH,也可以使用 HTTPS 克隆,但需要每次操作时输入用户名和密码。

步骤 1: 获取 HTTPS 地址

在 GitHub 项目页面:

  • 点击 Code 按钮。
  • 选择 HTTPS,复制仓库地址,如:
    https://github.com/username/repository.git
    

步骤 2: 克隆代码

运行以下命令:

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

每次拉取或推送代码时,GitHub 会要求你输入用户名和密码。


6. 配置全局 Credential Helper(HTTPS 自动免密方式)

如果必须使用 HTTPS,可以配置 Credential Helper 来免密:

git config --global credential.helper store

运行以上命令后,第一次拉取或推送代码时,输入用户名和密码后会被自动保存,以后不会再要求输入。


7. 常见问题

问题 1: SSH 克隆时报错

报错:

Permission denied (publickey).

解决方法:

  1. 确保你正确添加了 SSH 公钥到 GitHub。
  2. 确保 SSH 代理已启动,并添加了私钥:
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

通过以上步骤,就可以在 Git Bash 上完成 GitHub 仓库的克隆操作。

1. 基本操作

1.1 克隆远程仓库

将 GitHub 上的仓库克隆到本地:

git clone <仓库地址>
  • 示例(SSH 地址):
    git clone git@github.com:username/repository.git
    
  • 示例(HTTPS 地址):
    git clone https://github.com/username/repository.git
    

1.2 查看仓库状态

查看当前工作区和暂存区的状态:

git status

1.3 添加文件到暂存区

将工作区的修改添加到暂存区:

git add <文件名>        # 添加单个文件
git add .              # 添加当前目录下的所有文件

1.4 提交更改到本地仓库

将暂存区的更改提交到本地仓库:

git commit -m "提交信息"

1.5 查看提交历史

查看项目的提交历史:

git log                # 完整历史记录
git log --oneline      # 简化每个提交为一行
git log --graph        # 显示分支和合并图

1.6 推送代码到远程仓库

将本地仓库的更改推送到远程仓库:

git push origin <分支名>
  • 示例:
    git push origin main
    

1.7 从远程仓库拉取代码

获取远程仓库的代码并合并到当前分支:

git pull origin <分支名>
  • 示例:
    git pull origin main
    

1.8 查看远程仓库

查看当前项目关联的远程仓库:

git remote -v

2. 分支管理

2.1 创建新分支

创建一个新分支:

git branch <分支名>

2.2 切换分支

切换到某个分支:

git checkout <分支名>        # 旧指令
git switch <分支名>          # 新指令

2.3 创建并切换分支

创建一个新分支并切换到该分支:

git checkout -b <分支名>    # 旧指令
git switch -c <分支名>      # 新指令

2.4 合并分支

将指定分支合并到当前分支:

git merge <分支名>
  • 示例:
    git merge feature-branch
    

2.5 删除分支

删除本地分支:

git branch -d <分支名>      # 删除已合并的分支
git branch -D <分支名>      # 强制删除未合并的分支

删除远程分支:

git push origin --delete <分支名>

3. 协作操作

3.1 添加远程仓库

为本地项目绑定一个远程仓库:

git remote add origin <仓库地址>
  • 示例:
    git remote add origin git@github.com:username/repository.git
    

3.2 查看并同步远程分支

查看所有分支(包括远程分支):

git branch -a

同步远程分支到本地(下载分支,但不切换):

git fetch origin

3.3 解决冲突

  1. 合并分支时出现冲突:
    git merge <分支名>
    
  2. 打开冲突文件,手动解决冲突。
  3. 将解决后的文件添加到暂存区:
    git add <冲突文件>
    
  4. 提交合并:
    git commit
    

3.4 查看远程仓库状态

查看远程仓库是否有更新:

git remote show origin

3.5 重命名远程分支

  1. 重命名本地分支:
    git branch -m <旧分支名> <新分支名>
    
  2. 推送新分支:
    git push origin <新分支名>
    
  3. 删除旧分支:
    git push origin --delete <旧分支名>
    

4. 高级操作

4.1 回滚到某次提交

回滚到某次提交,但保留当前文件的修改:

git reset --soft <提交ID>

回滚到某次提交,丢弃暂存区的修改,但保留工作区文件:

git reset --mixed <提交ID>

回滚到某次提交,丢弃所有更改(不可恢复):

git reset --hard <提交ID>

4.2 删除未追踪的文件

删除工作区中未被 Git 管理的文件(慎用):

git clean -f
git clean -fd  # 删除未追踪的文件和目录

4.3 储存工作现场

当需要切换分支但不想提交当前修改时,可以临时储存工作:

git stash

查看储存的工作现场:

git stash list

恢复某次储存的工作:

git stash apply stash@{n}  # 恢复但保留储存记录
git stash pop              # 恢复并删除储存记录

4.4 比较差异

查看工作区与暂存区的文件差异:

git diff

查看暂存区与上次提交的文件差异:

git diff --cached

4.5 Cherry-pick(挑选提交)

将另一个分支的某次提交应用到当前分支:

git cherry-pick <提交ID>

4.6 Tag(标签管理)

创建标签:

git tag <标签名>
git tag -a <标签名> -m "描述信息"  # 创建带注释的标签

查看标签:

git tag

推送标签到远程:

git push origin <标签名>
git push origin --tags        # 推送所有标签

删除本地标签:

git tag -d <标签名>

删除远程标签:

git push origin --delete <标签名>

4.7 修改最后一次提交

如果需要修改最后一次提交的内容或信息:

git commit --amend

5. 实用小技巧

查看简化的分支结构图

git log --oneline --graph --decorate --all

强制覆盖本地分支

将本地分支完全重置为远程分支的状态:

git reset --hard origin/<分支名>

强制覆盖远程分支

将本地分支强制推送到远程(慎用):

git push origin <分支名> --force


从错误信息看,当前在 `login_yz` 分支上,但是尝试推送到 `develop` 分支,而本地没有 `develop` 分支。

有几种解决方案:

## 方案1:推送当前分支到远程
```bash
# 推送当前分支(login_yz)到远程
git push origin login_yz

# 如果是第一次推送这个分支,使用:
git push -u origin login_yz

方案2:如果你想推送到develop分支

# 先查看所有分支
git branch -a

# 如果远程有develop分支,切换到develop并合并
git checkout develop
git merge login_yz
git push origin develop

# 如果本地没有develop分支,从远程拉取
git checkout -b develop origin/develop
git merge login_yz
git push origin develop

方案3:创建新的develop分支

# 基于当前分支创建develop分支
git checkout -b develop
git push -u origin develop

推荐做法:

先查看当前状态:

# 查看当前分支
git branch

# 查看远程分支
git branch -r

# 查看所有分支
git branch -a
``
### 常用 Git及其用途 #### 初始化仓库 `git init` 是用来初始化一个新的Git仓库的命。当此命被执行后,它将在当前目录下创建一个名为 `.git` 的子目录,这个目录包含了项目所需的所有元数据[^1]。 ```bash $ git init ``` #### 添加文件到暂存区 为了跟踪新的或者已修改过的文件,在提交之前需要先将其加入到索引(即暂存区域)。可以使用 `git add` 来完成这项操作: - 将单个文件添加至暂存区: ```bash $ git add filename ``` - 或者一次性把所有更改后的文件都加进来 ```bash $ git add . ``` #### 查看状态 通过运行 `git status` ,可以看到哪些文件被改动过但是还没有被放到暂存区里等待提交;也可以看到那些已经被放入暂存区准备好了要一起打包进下一个版本里的东西。 ```bash $ git status ``` #### 提交变更 一旦准备好了一组完整的更新——无论是新添的内容还是对现有内容所做的调整——就可以把这些变化正式记录下来成为历史的一部分了。这一步骤叫做“提交”,需要用到如下指令: ```bash $ git commit -m "描述性的消息" ``` 如果想跳过单独做一次add的过程而直接连同本次commit一并处理,则可以在上述基础上加上参数 `-a` : ```bash $ git commit -am "描述性的消息" ``` #### 版本回滚 对于尚未推送出去的历史记录来说,有时候可能想要撤销最近的一次或几次提交。这时可以用到 `git reset` 。具体做法取决于你想达到什么样的效果以及这些改变是否已经推送到远程库去了。 - 如果只是简单地希望取消最新的那次提交而不影响任何实际的工作副本中的文件的话,那么就采用软重置的方式即可。 ```bash $ git reset --soft HEAD~1 ``` - 若要彻底抹去某次特定提交所带来的全部变动,并且让工作树回到那个时间点之前的模样,就需要硬重置了。 ```bash $ git reset --hard <commit-id> ``` 另外还有些场景涉及到如何应对不同状态下想要撤消某些动作的情况,比如在没有调用 `git add` 缓存代码前可以通过 `git checkout` 放弃本地修改[^2]。 #### 切换分支/恢复文件 随着项目的进展可能会频繁地在这之间来回穿梭或是偶尔需要还原某个文件的状态。在过去我们通常依赖于单一的 `git checkout` 实现这两个目的,不过自 Git 2.23 起推荐分别利用更加直观清晰的新工具来进行对应的操作:`git switch` 和 `git restore` [^3]. - 使用 `git switch` 创建和切换分支 ```bash $ git switch new_branch_name ``` - 应用 `git restore` 还原工作区内的文件为最后一次提交的样子或者其他指定版本的形式 ```bash $ git restore path/to/file ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值