经验笔记:Git 基础操作指南

推荐一下Gitee最好的Git操作教程:Learn Git Branching

经验笔记:Git 基础操作指南

1. 安装 Git

首先确保您的计算机上已安装 Git。如果还没有安装,可以从 Git官网 下载并安装。

2. 配置 Git

安装完成后,打开命令行工具,配置您的 Git 账户信息,包括用户名和邮箱。

  • 用户名 (user.name)邮箱 (user.email) 用于记录每次提交的信息。这些信息会显示在提交历史中,帮助团队成员了解谁做了哪些更改。
  • 注意:这里的用户名和邮箱不是用于 SSH 验证的用户名和邮箱。SSH 验证使用的是 SSH 密钥对,而不是这些配置信息。

这一步对于记录您的贡献非常重要:

git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# git config --local user.email "you@example.com"
# git config --system user.email "you@example.com"
# 可以使用下面的命令查看设置结果
# 该命令用于列出所有当前配置的 Git 设置:全局配置与当前本地仓库配置
# git config --list 
# 如果已经初始化过,但是想要修改用户名与邮箱,可以用以下命令修改:
# git config --global --replace-all user.name "输入你的用户名"
# git config --global --replace-all user.email "输入你的邮箱" 
  • git: Git 命令行工具。
  • config: 配置命令,用于设置 Git 的各种配置选项。
  • --global: 表示这是一个全局配置,适用于所有 Git 仓库,仅对当前用户有效。
  • --local: 表示这是一个局部配置,适用于当前 Git 仓库,仅对当前用户有效。
  • --system: 表示这是一个全局配置,适用于所有 Git 仓库,对整台计算机的用户都有效。
  • user.name: 设置用户的姓名。
  • user.email: 设置用户的邮箱。
  • "Your Name": 您的名字,例如 “John Doe”。
  • "you@example.com": 您的邮箱地址,例如 “john.doe@example.com”。
  • --global: 用于指定配置项是全局的,即对系统中所有的仓库都生效。当你使用 git config --global 命令时,Git 会将设置保存到你的主目录下的 .gitconfig 文件中。

3. 创建一个新的 Git 仓库

接下来,创建一个项目文件夹,并将其初始化为 Git 仓库:

mkdir my-project
cd my-project
git init
  • mkdir: 创建目录的命令。
  • my-project: 新创建的目录名。
  • cd: 变更目录的命令。
  • my-project: 进入刚刚创建的目录。
  • git: Git 命令行工具。
  • init: 初始化命令,用于将当前目录初始化为一个 Git 仓库。

4. 创建并添加文件

在项目中创建一个文件,例如 README.md,并添加一些初始内容:

echo "# My Project" > README.md
  • echo: 输出文本的命令。
  • "# My Project": 要输出的文本内容。
  • >: 重定向操作符,将输出的内容写入文件。
  • README.md: 要创建的文件名。

将此文件添加到 Git 的跟踪列表中:

git add README.md
  • git: Git 命令行工具。
  • add: 添加命令,用于将文件添加到暂存区。
  • README.md: 要添加的文件名。

5. 丢弃更改

如果您想丢弃这些更改,可以使用 git restore 命令:

git restore README.md
  • 未添加到暂存区的更改:

    如果更改尚未被 git add 添加到暂存区,git restore 可以恢复工作区中的文件到上次提交的状态。
  • 已添加到暂存区的更改:

    如果更改已经被 git add 添加到暂存区,git restore 可以将更改从暂存区移回工作区。


6. 提交更改

提交您刚才添加的文件到本地仓库,并附带一条有意义的提交信息:

git commit -m "Initial commit with README file"
# git commit -a -m "Initial commit with README file"
  • git: Git 命令行工具。
  • commit: 提交命令,用于将暂存区的内容提交到本地仓库。
  • -m: 消息选项,用于指定提交信息。
  • -a: 功能选项,自动将所有已跟踪文件的更改添加到暂存区,以便在一次命令中完成添加更改和提交。
  • "Initial commit with README file": 提交信息,描述本次提交的内容。

7. 修改文件并提交

编辑 README.md 文件,添加更多内容,例如项目特性:

echo "## Features" >> README.md
echo "- Feature 1" >> README.md
echo "- Feature 2" >> README.md
  • echo: 输出文本的命令。
  • "## Features": 要输出的文本内容。
  • >>: 重定向操作符,将输出的内容追加到文件末尾。
  • README.md: 要追加内容的文件名。

查看暂存区的更改:

git diff --cached

这将显示暂存区中即将提交的更改:

输出中的a文件代表版本,b文件代表新版本。


再次将文件添加到暂存区并提交:

git add README.md
git commit -m "Add project features to README"
  • git: Git 命令行工具。
  • add: 添加命令,用于将文件添加到暂存区。
  • README.md: 要添加的文件名。
  • commit: 提交命令,用于将暂存区的内容提交到本地仓库。
  • -m: 消息选项,用于指定提交信息。
  • "Add project features to README": 提交信息,描述本次提交的内容。

8. 查看提交历史与状态

查看项目的提交历史和当前工作区的状态:

# git log --oneline
git log
git status
  • git: Git 命令行工具。
  • log: 日志命令,用于查看项目的提交历史。
  • status: 状态命令,用于查看当前工作区和暂存区的状态。
  • oneline: 表示每个提交只显示一行信息,通常包括提交的哈希值和提交信息的简短描述。
  • q 键:退出分页器,返回到命令行

9. 创建与切换分支

为了开发新功能,创建一个新分支 feature-branch 并切换到该分支:

git branch feature-branch
git checkout feature-branch

或者

git checkout -b feature-branch
  • git: Git 命令行工具。
  • checkout: 切换命令,用于切换到指定的分支。
  • branch: 分支命令,用于创建和管理分支。
  • -b: 创建并切换到新分支的选项。
  • feature-branch: 新创建的分支名。

在新分支上继续工作,比如添加新的特性说明:

echo "## New Feature" >> README.md
echo "- Feature 3" >> README.md
  • echo: 输出文本的命令。
  • "## New Feature": 要输出的文本内容。
  • >>: 重定向操作符,将输出的内容追加到文件末尾。
  • README.md: 要追加内容的文件名。

再次将文件添加到暂存区并提交:

git add README.md
git commit -m "Add new feature description"
  • git: Git 命令行工具。
  • add: 添加命令,用于将文件添加到暂存区。
  • README.md: 要添加的文件名。
  • commit: 提交命令,用于将暂存区的内容提交到本地仓库。
  • -m: 消息选项,用于指定提交信息。
  • "Add new feature description": 提交信息,描述本次提交的内容。

10. 切换回主分支

完成新特性的开发后,切换回主分支(通常是 mainmaster):

git checkout main
  • git: Git 命令行工具。
  • checkout: 切换命令,用于切换到指定的分支。
  • main: 要切换到的分支名(如果是 master 分支,可以将 main 替换为 master)。

11. 合并与解决冲突

feature-branch 分支的更改合并到主分支。如果存在冲突,Git 会提示您解决它们:

git merge feature-branch
# git merge --no-ff feature-branch
  • git: Git 命令行工具。
  • merge: 合并命令,用于将一个分支的更改合并到当前分支。
  • --no-ff: No Fast-Forward,表示在合并时不要使用快进(fast-forward)模式。
  • 可以保留分支的历史,明确显示合并点,有助于追踪代码的演变过程。
  • 更容易地回滚到合并前的状态,因为有一个明确的合并提交。
  • feature-branch: 要合并的分支名。

解决完任何可能的冲突后,再次提交更改以完成合并过程:

git add <conflicted-file>
git commit -m "Resolve conflicts after merging feature-branch"
  • <conflicted-file>: 发生冲突的文件名。
  • commit: 提交命令,用于将暂存区的内容提交到本地仓库。
  • -m: 消息选项,用于指定提交信息。
  • "Resolve conflicts after merging feature-branch": 提交信息,描述本次提交的内容。

12. 清理分支

合并完成后,可以安全地删除 feature-branch 分支:

git branch -d feature-branch
  • git: Git 命令行工具。
  • branch: 分支命令,用于创建和管理分支。
  • -d: 删除分支的选项。
  • feature-branch: 要删除的分支名。

13. 丢弃更改

如果您想丢弃工作区中的更改,可以使用以下命令:

13.1 丢弃单个文件的更改

如果您想丢弃某个文件的更改,可以使用以下命令:

git checkout -- <file>
  • git: Git 命令行工具。
  • checkout: 切换命令,用于切换到指定的分支或恢复文件。
  • --: 分隔符,用于区分命令和文件名。
  • <file>: 要恢复的文件名。

13.2 丢弃所有未提交的更改

如果您想丢弃所有未提交的更改,可以使用以下命令:

git reset --hard <commit-hash>
# git reset <file> # 撤销暂存区中的更改
  • git: Git 命令行工具。
  • reset: 重置命令,用于将工作区和暂存区恢复到指定的状态。
  • <commit-hash>:指定需要丢弃的提交的哈希值,不指定则丢弃所有
  • --soft : 选项,表示软重置,仅移动 HEAD 指针,不影响工作目录和暂存区。
  • --mixed : (默认)选项,表示混合重置,移动 HEAD 指针,取消暂存更改,但保留工作目录中的更改。
  • --hard: 选项,表示强制重置,移动 HEAD 指针,取消暂存更改,并丢弃工作目录中的更改。
    • reset 并不是一个 commit,而是一个命令,用于改变当前分支的状态。使用 reset 时要谨慎,特别是在团队协作中,因为改变提交历史可能会给其他开发者带来问题。

示例

假设您修改了 README.md 文件,但决定不保留这些更改:

git checkout -- README.md

如果您想丢弃所有未提交的更改:

git reset --hard

14. 交互式补丁

对于复杂的更改,您可以使用交互式补丁来逐行选择要添加的内容。这种方式特别适合当您只想提交部分更改,而不是整个文件的所有更改时。

步骤 1: 修改文件

假设您已经修改了 README.md 文件,但只想提交其中的一部分更改。

步骤 2: 使用交互式补丁

运行以下命令启动交互式补丁模式:

git add -p
  • git: Git 命令行工具。
  • add: 添加命令,用于将文件添加到暂存区。
  • -p: 选项,表示进入交互式补丁模式。

步骤 3: 选择要添加的更改

Git 会逐块显示文件的更改,并询问您是否要添加每个块。您可以选择以下选项:

  • y - 是,将此块添加到暂存区。
  • n - 否,跳过此块。
  • q - 退出,不再处理剩余的块。
  • a - 将所有剩余的块都添加到暂存区。
  • d - 不将任何剩余的块添加到暂存区。
  • e - 手动编辑当前块。
  • ? - 显示帮助信息。

步骤 4: 提交更改

选择完要添加的块后,提交更改:

git commit -m "Add specific changes from README.md"
  • git: Git 命令行工具。
  • commit: 提交命令,用于将暂存区的内容提交到本地仓库。
  • -m: 消息选项,用于指定提交信息。
  • "Add specific changes from README.md": 提交信息,描述本次提交的内容。

15. 高级操作

15.1 合并提交

使用交互式变基来合并多个提交。这在您想将多个小的提交合并成一个大的提交时非常有用。

步骤 1: 开始交互式变基

假设您想合并最近的3个提交:

git rebase --interactive HEAD~3
  • git: Git 命令行工具。
  • rebase: 变基命令,用于将一个分支的更改应用到另一个分支。
  • --interactive: 选项,表示进入交互式变基模式。
  • HEAD~3: 表示从当前提交向前数3个提交。
步骤 2: 编辑提交

Git 会打开一个文本编辑器,列出最近的3个提交。每个提交前面都有一个 pick 关键字,表示将保留该提交。您可以将 pick 更改为 squashs 来合并提交。

例如,假设您的提交历史如下:

pick abc1234 First commit message
pick def5678 Second commit message
pick ghi9012 Third commit message

您可以修改为:

pick abc1234 First commit message
squash def5678 Second commit message
squash ghi9012 Third commit message
步骤 3: 编辑合并后的提交信息

保存并关闭编辑器后,Git 会再次打开编辑器,让您编写合并后的提交信息。您可以编辑或保留默认的提交信息。

步骤 4: 完成变基

保存并关闭编辑器后,变基过程完成,您的提交历史将更新。

15.2 重写提交信息

在交互式变基过程中,您还可以修改提交信息。

步骤 1: 开始交互式变基

假设您想修改最近的3个提交:

git rebase --interactive HEAD~3
  • git: Git 命令行工具。
  • rebase: 变基命令,用于将一个分支的更改应用到另一个分支。
  • --interactive: 选项,表示进入交互式变基模式。
  • HEAD~3: 表示从当前提交向前数3个提交。
步骤 2: 编辑提交

Git 会打开一个文本编辑器,列出最近的3个提交。每个提交前面都有一个 pick 关键字,表示将保留该提交。您可以将 pick 更改为 rewordr 来修改提交信息。

例如,假设您的提交历史如下:

pick abc1234 First commit message
pick def5678 Second commit message
pick ghi9012 Third commit message

您可以修改为:

reword abc1234 First commit message
pick def5678 Second commit message
pick ghi9012 Third commit message
步骤 3: 编辑提交信息

保存并关闭编辑器后,Git 会再次打开编辑器,让您重新输入第一个提交的信息。您可以编辑或保留默认的提交信息。

步骤 4: 完成变基

保存并关闭编辑器后,变基过程完成,您的提交信息将更新。

15.3 删除提交

在交互式变基过程中,您还可以删除提交。

步骤 1: 开始交互式变基

假设您想删除最近的3个提交中的一个:

git rebase --interactive HEAD~3
  • git: Git 命令行工具。
  • rebase: 变基命令,用于将一个分支的更改应用到另一个分支。
  • --interactive: 选项,表示进入交互式变基模式。
  • HEAD~3: 表示从当前提交向前数3个提交。
步骤 2: 编辑提交

Git 会打开一个文本编辑器,列出最近的3个提交。每个提交前面都有一个 pick 关键字,表示将保留该提交。您可以将 pick 更改为 dropd 来删除提交。

例如,假设您的提交历史如下:

pick abc1234 First commit message
pick def5678 Second commit message
pick ghi9012 Third commit message

您可以修改为:

pick abc1234 First commit message
drop def5678 Second commit message
pick ghi9012 Third commit message
步骤 3: 完成变基

保存并关闭编辑器后,变基过程完成,指定的提交将被删除。

15.4 回退提交

如果您想撤销某个提交,可以使用 git revert 命令:

git revert <commit-hash>
  • git: Git 命令行工具。
  • revert: 回退命令,用于撤销指定的提交。
  • <commit-hash>: 要撤销的提交的哈希值。
    • revert 会生成一个新的 commit,这个 commit 的内容正好与被撤销的 commit 相反。
    • 当你想要撤销一个已经推送到远程仓库的提交,并且不希望改变提交历史时,可以使用 revert。

示例

假设您想撤销哈希值为 abc1234 的提交:

# 修改文件并提交
echo "This will be revert." >> README.md
git add
git commit -m "a test commit will be revert"
# 查看提交历史,记下要撤销的提交的哈希值。
git log --oneline
# 将last_commit_hash_value替换成实际的撤销的提交的哈希值
git revert last_commit_hash_value
# 实际上git revert也可以被git revert

15.5 保存工作区

如果您想暂时保存工作区中的更改,可以使用 git stash 命令:

步骤 1: 保存更改

保存当前工作区的更改:

# 修改文件
echo "This is a change." >> README.md
# 保存更改到 stash
git stash
  • git: Git 命令行工具。
  • stash: 保存命令,将工作区和暂存区的更改保存到一个临时存储区:
  • git stash 命令将当前工作区和暂存区的所有更改保存到一个临时存储区(stash),并清空工作区和暂存区。
  • 这样,您可以干净地切换到其他任务,然后再恢复这些更改。
步骤 2: 查看所有保存的更改

查看所有保存的更改:

git stash list
  • list: 列表命令,用于查看所有保存的更改。
  • 每个保存的更改都会有一个唯一的标识符,例如 stash@{0}。
步骤 3: 恢复最近一次保存的更改

恢复最近一次保存的更改:

git stash pop
  • pop: 恢复命令,将最近一次保存的更改从临时存储区(stash)移除并应用到工作区。
步骤 4 (可选): 恢复指定的 stash 更改,但不从 stash 存储区中移除

恢复指定的 stash 更改,但不从 stash 存储区中移除:

git stash apply stash@{0}

将 stash@{0} 的更改应用到工作区,但 stash@{0} 仍然保留在临时存储区(stash)中。


16. 工作流整合

16.1 拾取提交

如果您想将一个分支中的某个提交应用到另一个分支上,可以使用 git cherry-pick 命令:

git cherry-pick <commit-hash>
  • git: Git 命令行工具。
  • cherry-pick: 拾取命令,用于将指定的提交应用到当前分支。
  • <commit-hash>: 要拾取的提交的哈希值。

示例

假设您想将哈希值为 <commit-hash-of-feature_n-commit> 的提交应用到当前分支:

# 查看提交历史,方便比较cherry-pick的效果
git log --oneline
# 创建并切换到新分支 feature_n
git checkout -b feature_n
# 在 feature_n 分支上进行提交
echo "Feature 1" >> README.md
git add README.md
git commit -m "Add feature N"
# 查看提交历史,并记下哈希值
git log --oneline
# 切换回主分支 main
git checkout main
# 拾取 feature1 分支上的提交
git cherry-pick <commit-hash-of-feature_n-commit>
# 其中 <commit-hash-of-feature_n-commit> 是 feature_n 分支上 Add feature N 提交的哈希值
# 查看提交历史
git log --oneline

16.2 变基

将当前分支的更改基于另一个分支的最新状态:

git rebase <base-branch>
  • git: Git 命令行工具。
  • rebase: 变基命令,用于将一个分支的更改应用到另一个分支。
  • <base-branch>: 基础分支,通常是 mainmaster

示例

假设您想将当前分支的更改基于 main 分支的最新状态:

# 切换到分支 feature_n
git checkout feature_n
# 查看提交历史,方便比较rebase的效果
git log --oneline
# 将 `feature_n` 分支的更改基于 `main` 分支的最新状态
git rebase main
# 解决冲突(如果有)
git add <conflicted-file>
# 如果在变基过程中出现冲突,Git 会提示您解决冲突。解决冲突后,使用以下命令继续变基
git rebase --continue
# 查看提交历史
git log --oneline

17. 远程仓库操作

17.1 添加远程仓库

如果你有一个新的本地仓库,并且想要将其与远程仓库关联起来,可以使用 git remote add 命令。

git remote add <remote_name> <repository-url>
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <repository-url>: 远程仓库的URL,可以是HTTPS或SSH格式。

示例
假设你要将本地仓库与GitHub上的仓库关联起来,URL为 https://github.com/username/repo.git

git remote add origin https://github.com/username/repo.git

17.2 重命名远程仓库

如果你已经关联了一个远程仓库,并且想要重命名,可以使用 git remote rename 命令。

git remote rename <old_name> <new_name>
  • <old_name>: 远程仓库的旧名称,默认为 origin
  • <new_name>: 远程仓库的新名称。

示例
假设你想要重命名一个远程仓库,旧名称为 origin,新名称为 new_name_origin

git remote rename origin new_name_origin

17.3 设置远程仓库的URL

如果你需要更改远程仓库的URL,可以使用 git remote set-url 命令。

git remote set-url <remote_name> <new-url>
# git remote set-url --add <remote_name> <url>
# git remote set-url --push <remote_name> <push-url>
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <new-url>: 新的远程仓库URL。
  • --add: 用于为现有的远程仓库添加一个额外的URL。
  • --push: 用于为现有的远程仓库设置一个专门用于推送的URL。
    • 这个命令不会影响 fetch 的URL,只会修改 push 的URL。

示例1
假设你要将 origin 远程仓库的URL更改为 https://github.com/username/new-repo.git

git remote set-url origin https://github.com/username/new-repo.git

示例2
假设你已经有一个名为 origin 的远程仓库,现在你想为它添加一个额外的URL https://github.com/username/repo.git

git remote set-url --add origin https://github.com/username/repo.git

示例3
假设你已经有一个名为 origin 的远程仓库,现在你想为其设置一个专门用于推送的URL ssh://git@github.com/username/repo.git

git remote set-url --push origin ssh://git@github.com/username/repo.git

17.4 查看远程仓库信息

查看当前项目中配置的远程仓库信息,可以使用 git remote 命令。

git remote -v
  • -v: 显示详细的远程仓库信息,包括URL。

示例

git remote -v

输出可能如下:

origin  https://github.com/username/repo.git (fetch)
origin  ssh://git@github.com/username/repo.git (push)
  • origin: 远程仓库的名称。
  • https://github.com/username/repo.git: 远程仓库的用于fetch的URL。
  • ssh://git@github.com/username/repo.git: 远程仓库的用于push的URL。
  • (fetch): 表示这个URL用于从远程仓库获取数据。
  • (push): 表示这个URL用于将本地数据推送到远程仓库。

17.5 获取所有分支

如果你需要从远程仓库获取所有分支,可以使用 git fetch 命令。

git fetch <remote_name>
  • <remote_name>: 远程仓库的名称,默认为 origin

示例
假设你要从 origin 远程仓库获取所有分支。

git fetch origin

17.6 同步远程分支

如果你需要将本地分支与远程分支同步,可以先获取远程分支的最新更改,然后合并到本地分支。

git fetch <remote_name>
git merge <remote_name>/<branch>
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <branch>: 远程分支的名称。

示例
假设你要将 origin 远程仓库的 main 分支同步到本地 main 分支。

git fetch origin
git merge origin/main

17.7 拉取远程仓库的数据

从远程仓库拉取最新的更改并合并到当前分支,可以使用 git pull 命令。

git pull <remote_name> <branch>
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <branch>: 远程分支的名称,通常与本地分支同名。

示例
假设你要从 origin 远程仓库的 main 分支拉取最新的更改。

git pull origin main

17.8 推送本地仓库的数据到远程仓库

将本地仓库的更改推送到远程仓库,可以使用 git push 命令。

git push <remote_name> <branch>
git push <remote_name> --all
git push origin --tags
git push <remote_name> <branch> --set-upstream
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <branch>: 本地分支的名称。
  • --all: 表示一次性推送所有本地分支到远程仓库。
  • --tags: 用于将所有本地标签推送到指定的远程仓库(默认为 origin)。但它并不会推送所有分支,只会推送标签。
  • --set-upstream: 表示设置本地分支与远程分支之间的上下游关系。

示例
假设你要将本地 main 分支的更改推送到 origin 远程仓库的 main 分支。

git push origin main

17.9 为本地分支与远程分支设置上下游关系

如果你想要简化推送和拉取操作、自动跟踪远程分支,可以使用git branch 命令的--set-upstream 选项。

git branch --set-upstream-to=<remote_name>/<remote_branch> <local_branch>
git push <remote_name> <branch> --set-upstream
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <remote_branch>: 远程分支的名称。
  • <local_branch>: 本地分支的名称。
  • --set-upstream: 表示设置本地分支与远程分支之间的上下游关系。

示例1
假设你有一个本地分支 feature-x,并且希望将其与远程仓库 originfeature-x 分支建立上游关系,可以使用以下命令:

git branch --set-upstream-to=origin/feature-x feature-x

示例2
假设你有一个远程仓库,并且本地仓库刚新建主分支(main),已经完成远程仓库(origin)的添加(add),但是还没有进行过推送(push),希望在本地仓库与远程仓库( origin)之间的主分支(main)建立上下游关系,可以使用以下命令:

git push origin main --set-upstream
为分支设置上下游关系的好处
  1. 简化推送和拉取操作

    • 推送
      git push
      
      无需指定远程仓库和分支名称,Git 会自动将本地分支的更改推送到其对应的远程分支。
    • 拉取
      git pull
      
      同样,无需指定远程仓库和分支名称,Git 会自动从其对应的远程分支拉取最新的更改。
  2. 自动跟踪远程分支

    • 查看分支状态
      git status
      
      这条命令会显示本地分支与远程分支之间的差异,帮助你了解是否有新的提交需要推送或拉取。
    • 查看分支跟踪信息
      git branch -vv
      
      这条命令会显示所有本地分支及其对应的远程分支信息。
  3. 更好的协作体验

    • 在团队协作中,设置上游分支关系可以帮助团队成员更容易地同步和管理代码。每个人都可以轻松地推送和拉取更改,而不需要记住复杂的命令和参数。
  4. 自动处理合并冲突

    • 当本地分支和远程分支之间存在冲突时,设置上游分支关系可以帮助 Git 自动处理这些冲突。在拉取远程分支的更改时,Git 会尝试合并更改,并在必要时提示你解决冲突。
  5. 保持分支的一致性

    • 设置上游分支关系有助于保持本地分支和远程分支的一致性。这在长期的项目开发中尤为重要,可以避免分支之间的混乱和不一致。

17.10 删除远程仓库

如果你不再需要某个远程仓库,可以使用 git remote remove 命令删除它。

git remote remove <remote_name>
  • <remote_name>: 远程仓库的名称,默认为 origin

示例
假设你要删除名为 origin 的远程仓库。

git remote remove origin

17.11 删除远程分支

如果你不再需要某个远程分支,可以使用 git push 命令删除它。

git push <remote_name> --delete <branch>
  • <remote_name>: 远程仓库的名称,默认为 origin
  • <branch>: 要删除的远程分支的名称。

示例
假设你要删除 origin 远程仓库的 feature-x 分支。

git push origin --delete feature-x

18. 最终检查

最后,再次检查项目的提交历史和状态,确保一切符合预期:

git log
git status
  • git: Git 命令行工具。
  • log: 日志命令,用于查看项目的提交历史。
  • status: 状态命令,用于查看当前工作区和暂存区的状态。
  • q 键:退出分页器,返回到命令行

希望这份详细的 Git 操作指南能帮助您高效地管理和协作您的代码项目。如果您有任何疑问或需要进一步的帮助,请随时查阅 Git 的官方文档或社区资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-二叉树_堆

目录 1.二叉树的概念 ​编辑1.1树的概念与结构 1.2树的相关语 1.3 树的表示 2. ⼆叉树 2.1 概念与结构 2.2 特殊的⼆叉树 2.2.2 完全⼆叉树 2.3 ⼆叉树存储结构 2.3.1 顺序结构 2.3.2 链式结构 3. 实现顺序结构⼆叉树 3.2 堆的实现 3.2.2 向下调整算法 1.二叉树的概…

独家原创 | SCI 1区 高创新预测模型!

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD变体分解效果最好算法——CEEMDAN&#xff08;五&#xff09;-CSDN博客 拒绝信息泄露&#xff01;VMD滚动分…

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问题…

Arcgis 地图制作

地图如下,不同历史时期&#xff1a;

【K8S系列】Kubernetes 中如何调试imagePullSecrets配置详细步骤介绍

调试 imagePullSecrets 配置是确保 Kubernetes 能够成功拉取私有镜像所需的关键步骤。以下是详细的调试步骤和建议。 1. 确认 imagePullSecrets 配置 首先&#xff0c;确保在 Pod 的 YAML 配置中正确引用了 imagePullSecrets。其基本结构如下&#xff1a; apiVersion: v1 kin…

山东春季高考-C语言-综合应用题

&#xff08;2018年&#xff09;3.按要求编写以下C语言程序&#xff1a; &#xff08;1&#xff09;从键盘上输入三个整数a、b、c&#xff0c;判断能否以这三个数为边构成三角形&#xff0c;若可以则计算机三角形的面积且保留两位小数&#xff1b;若不可以则输出“不能构成三角…

UE5 第一人称射击项目学习(二)

在上一章节中。 得到了一个根据视角的位置创建actor的项目。 现在要更近一步&#xff0c;对发射的子弹进行旋转。 不过&#xff0c;现在的子弹是圆球形态的&#xff0c;所以无法分清到底怎么旋转&#xff0c;所以需要把子弹变成不规则图形。 现在点开蓝图。 这里修改一下&…

如何实现点击目录跳转到指定位置?【vue】

需求&#xff1a;实现目录点击跳转到指定位置&#xff0c;点击后直接定位到指定模块 效果&#xff1a; 实现方法&#xff1a; &#xff08;1&#xff09;a标签跳转 普通使用&#xff1a; <!DOCTYPE html> <html><head><title>a-Demo</title>&l…

使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题

本地环境 主机MacOs Sequoia 15.1虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 服务器版本 最小安装 开发环境 编辑器编译器调试工具数据库http服务web开发防火墙Vim9Gcc13Gdb14Mysql8Apache2Php8.3Iptables 第一坑 数…

deepin系统下载pnpm cnpm等报错

deepin系统下载pnpm cnpm等报错 npm ERR! request to https://registry.npm.taobao.org/pnpm failed, reason: certificate has expired 报错提示证书过期&#xff0c;执行以下命令 npm config set registry https://registry.npmmirror.com下载pnpm npm install pnpm -g查…

零基础上手WebGIS+智慧校园实例(1)【html by js】

请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 等下再更新一下1. WebGIS矢量图形的绘制&#xff08;超级详细&#xff01;&#xff01;&#xff09;&#xff0c;2. WebGIS计算距离&#xff0c; 以及智慧校园实例 with 3个例子&#xff01;&#xff01;…

Matlab 答题卡方案

在现代教育事业的飞速发展中&#xff0c;考试已经成为现代教育事业中最公平的方式方法&#xff0c;而且也是衡量教与学的唯一方法。通过考试成绩的好与坏&#xff0c;老师和家长可以分析出学生掌握的知识多少和学习情况。从而老师可以了解到自己教学中的不足来改进教学的方式方…

【实操之 图像处理与百度api-python版本】

1 cgg带你建个工程 如图 不然你的pip baidu-aip 用不了 先对图片进行一点处理 $ 灰度处理 $ 滤波处理 参考 import cv2 import os def preprocess_images(input_folder, output_folder):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_fol…

Python小游戏28——水果忍者

首先&#xff0c;你需要安装Pygame库。如果你还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; 【bash】 pip install pygame 《水果忍者》游戏代码&#xff1a; 【python】 import pygame import random import sys # 初始化Pygame pygame.init() # 设置屏幕尺寸 …

基于SpringBoot的校园二手商品在线交易系统+含项目运行说明文档

一、项目技术栈 二、项目功能概述 管理员可以完成的功能包括管理员登录、管理员首页展示、系统设置、物品管理、学生管理、评论管理、举报管理、新闻公告、网站设置等&#xff0c;前台的客户可以进行查看所有商品分类、搜索商品、登录或注册、发布商品、求购商品等。 三、部分…

最新Kali安装详细版教程(附安装包,傻瓜式安装教程)

本文主要详细介绍 kali 的安装过程&#xff0c;以及安装完成后的基本设置&#xff0c;比如安装增强工具&#xff0c;安装中文输入法以及更新升级等操作。 文章目录 实验环境准备工作步骤说明安装虚拟机安装 Kali安装增强工具安装中文输入法更新升级 实验环境 VMware &#x…

将网站地址改成https地址需要哪些材料

HTTPS&#xff08;安全超文本传输协议&#xff09;是HTTP协议的扩展。它大大降低了个人数据&#xff08;用户名、密码、银行卡号等&#xff09;被拦截的风险&#xff0c;还有助于防止加载网站时的内容替换&#xff0c;包括广告替换。 在发送数据之前&#xff0c;信息会使用SSL…

React基础知识一

写的东西太多了&#xff0c;照成csdn文档编辑器都开始卡顿了&#xff0c;所以分篇写。 1.安装React 需要安装下面三个包。 react:react核心包 react-dom:渲染需要用到的核心包 babel:将jsx语法转换成React代码的工具。&#xff08;没使用jsx可以不装&#xff09;1.1 在html中…

VUE:基于MVVN的前端js框架

文章目录 vue框架v-show vue框架 注意是 先写函数名&#xff0c;再写function。 handle:function (){}下面是错误的 function:handle(){}3 v-show 本质上等于号后面还是判断条件&#xff0c;所以不能写赋值语句&#xff0c;下面是正确的 下面是错误的 v-show " ge…

六、卷积神经网络(CNN)基础

卷积神经网络&#xff08;CNN&#xff09;基础 前言一、CNN概述二、卷积层2.1 卷积2.2 步幅(Stride)2.3 填充(Padding)2.4 多通道卷积2.5 多卷积计算2.6 特征图大小计算2.7 代码演示 三、池化层3.1 池化层计算3.1.1 最大池化层3.1.2 平均池化层 3.2 填充(Padding)3.3 步幅(Stri…