git命令使用笔记

在 Git 中查看分支是一个非常常见的操作,你可以通过以下命令来查看本地分支、远程分支,或者同时查看两者。以下是具体的命令和说明:


一、git查看分支

1. 查看本地分支

要查看当前仓库的所有本地分支,可以使用以下命令:

git branch
  • 这个命令会列出所有本地分支,并在当前分支前显示一个星号(*)。

  • 示例输出:

    * main
      feature-branch
      bugfix-branch

如果你希望以更详细的方式查看分支,可以使用 -v 参数:

git branch -v
  • 这将显示每个分支的最后一次提交信息。


2. 查看远程分支

要查看远程仓库中的所有分支,可以使用以下命令:

git branch -r
  • 这个命令会列出所有远程分支,通常以 origin/ 开头。

  • 示例输出:

    origin/main
    origin/feature-branch
    origin/bugfix-branch

3. 同时查看本地和远程分支

如果你希望同时查看本地和远程分支,可以使用以下命令:

git branch -a
  • 这个命令会列出所有本地分支和远程分支。

  • 示例输出:

    * main
      feature-branch
      bugfix-branch
      remotes/origin/main
      remotes/origin/feature-branch
      remotes/origin/bugfix-branch

4. 查看分支的详细信息

如果你希望查看分支的详细信息,包括最后一次提交的哈希值和提交信息,可以使用以下命令:

git branch -vv
  • 示例输出:

    * main            1234abcd [origin/main] Merge branch 'feature-branch'
      feature-branch  5678efgh [origin/feature-branch] Add new feature
      bugfix-branch   9012ijkl [origin/bugfix-branch] Fix critical bug

5. 查看分支的提交历史

如果你希望查看某个分支的提交历史,可以切换到该分支,然后使用 git log 命令:

git checkout <分支名>
git log
  • 或者直接查看某个分支的提交历史而不切换分支:

    git log <分支名>

6. 检查远程分支是否最新

如果你不确定远程分支是否是最新的,可以先运行以下命令拉取最新的远程分支信息:

git fetch --all

然后再次运行 git branch -a 查看最新的分支列表。


总结

  • 查看本地分支:git branch

  • 查看远程分支:git branch -r

  • 同时查看本地和远程分支:git branch -a

  • 查看分支的详细信息:git branch -vv

  • 查看分支的提交历史:git log <分支名> 

二、 git切换分支

在 Git 中切换分支是一个非常常见的操作,它允许你在不同的开发线之间切换。以下是切换分支的具体步骤和方法:


1. 查看可用的分支

在切换分支之前,最好先查看当前仓库中有哪些分支。可以使用以下命令列出所有本地分支:

git branch

如果你希望同时查看本地和远程分支,可以使用:

git branch -a

2. 切换分支

当你确定要切换到的目标分支后,可以使用以下命令切换分支:

git checkout <分支名>

例如,如果你想切换到名为 feature-branch 的分支,可以运行:

git checkout feature-branch

如果你正在使用 Git 的较新版本(Git 2.23 以上),还可以使用 git switch 命令来切换分支,这是一个更直观的命令:

git switch <分支名>

3. 创建并切换到新分支

如果你需要创建一个新分支并立即切换到该分支,可以使用以下命令:

git checkout -b <新分支名>

或者使用 git switch-c 参数:

git switch -c <新分支名>

4. 处理未提交的更改

如果你当前的分支有未提交的更改,可能会导致切换分支失败。你可以选择以下操作之一:

  • 提交更改

    git add .
    git commit -m "提交当前更改"
  • 暂存更改

    git stash

    切换分支后,可以恢复暂存的更改:

    git stash pop

5. 强制切换分支

如果你确定当前分支的更改不会影响目标分支,可以强制切换分支:

git checkout -f <分支名>

或者使用 git switch--force 参数:

git switch --force <分支名>

注意:强制切换可能会丢失当前分支的未提交更改,因此请谨慎使用。


6. 检查当前分支

如果你不确定当前所在的分支,可以使用以下命令查看:

git branch

当前分支前会有一个星号(*)标记。


总结

  • 查看分支:git branchgit branch -a

  • 切换分支:git checkout <分支名>git switch <分支名>

  • 创建并切换到新分支:git checkout -b <新分支名>git switch -c <新分支名>

  • 处理未提交的更改:提交或暂存更改。

  • 强制切换分支:git checkout -f <分支名>git switch --force <分支名>

三、新分支与旧分支同步

在 Git 中,将新分支与旧分支同步,通常是指将旧分支(如主分支 mainmaster)的最新更改合并到新分支中。以下是几种常见的同步方法:


方法一:使用 git merge 合并

  1. 切换到新分支

    git checkout 新分支名
  2. 拉取旧分支的最新代码

    git pull origin 旧分支名
  3. 将旧分支合并到新分支

    git merge 旧分支名

    如果合并过程中出现冲突,Git 会提示你手动解决冲突。解决冲突后,运行以下命令提交合并结果:

    git add .
    git commit -m "Merge 旧分支名 into 新分支名"
  4. 推送到远程仓库

    git push origin 新分支名

方法二:使用 git rebase 重置

如果你希望保持提交历史的线性,可以使用 rebase

  1. 切换到新分支

    git checkout 新分支名
  2. 拉取旧分支的最新代码

    git pull origin 旧分支名
  3. 将新分支基于旧分支进行重置

    git rebase 旧分支名

    如果在 rebase 过程中出现冲突,Git 会暂停并提示你解决冲突。解决冲突后,运行以下命令继续 rebase

    git rebase --continue
  4. 推送到远程仓库

    git push origin 新分支名 --force

    注意:使用 --force 时需谨慎,因为这可能会覆盖远程分支的历史。


方法三:使用 git cherry-pick 同步特定提交

如果你只需要将旧分支中的某些特定提交同步到新分支,可以使用 cherry-pick

  1. 切换到新分支

    git checkout 新分支名
  2. 找到需要同步的提交哈希值

    git log 旧分支名
  3. 将特定提交应用到新分支

    git cherry-pick 提交哈希值

    如果有冲突,解决冲突后继续:

    git cherry-pick --continue
  4. 推送到远程仓库

    git push origin 新分支名

总结

  • 如果你希望保留完整的提交历史,使用 git merge

  • 如果你希望保持提交历史的线性,使用 git rebase

  • 如果你只需要同步特定的提交,使用 git cherry-pick

在执行这些操作之前,请确保你的本地分支是最新的,并且已经提交了所有未完成的更改。

四、创建一个新的分支

在 Git 中创建新分支是一个非常简单的操作。以下是创建新分支的步骤,以及如何切换到新分支并开始工作。


方法一:使用 git checkout -b 创建并切换到新分支

这是最常用的方法,可以直接创建一个新分支并立即切换到该分支。

git checkout -b 新分支名

例如,如果你想创建一个名为 feature-branch 的新分支,可以运行:

git checkout -b feature-branch

这条命令会执行两个操作:

  1. 创建一个名为 feature-branch 的新分支。

  2. 切换到这个新分支。


方法二:使用 git branch 创建分支,然后切换

如果你只想创建分支而不立即切换,可以使用 git branch 命令:

git branch 新分支名

然后,使用 git checkout 切换到新分支:

git checkout 新分支名

方法三:基于特定分支创建新分支

如果你希望基于某个特定的分支(例如 mainmaster)创建新分支,可以先切换到该分支,然后创建新分支:

git checkout 主分支名
git checkout -b 新分支名

例如,基于 main 分支创建一个名为 feature-branch 的新分支:

git checkout main
git checkout -b feature-branch

方法四:使用 git switch 创建并切换分支(Git 2.23+)

如果你使用的是 Git 2.23 或更高版本,可以使用 git switch 命令,这是一个更直观的命令:

git switch -c 新分支名

这条命令的作用与 git checkout -b 完全相同,会创建并切换到新分支。


总结

  • 快速创建并切换到新分支git checkout -b 新分支名git switch -c 新分支名

  • 仅创建分支git branch 新分支名,然后用 git checkout 新分支名 切换。

  • 基于特定分支创建新分支:先切换到目标分支,再创建新分支。


额外提示

  1. 查看分支:创建分支后,可以用以下命令查看当前所有分支:

    git branch

    当前所在的分支前会有一个星号(*)标记。

  2. 推送新分支到远程仓库:如果你希望将新分支推送到远程仓库,可以运行:

    git push -u origin 新分支名

    这会将本地分支推送到远程仓库,并设置上游分支,方便后续的推送和拉取操作。

五、新分支更新的文件合并到旧分支

在 Git 中,将新分支中的更改合并到旧分支是一个常见的操作,通常可以通过 git mergegit rebase 来完成。以下是详细的步骤和说明,帮助你将新分支中的文件和更改合并到旧分支中。


方法一:使用 git merge 合并更改

  1. 切换到旧分支
    首先,切换到你希望合并更改的目标分支(旧分支)。例如,如果你希望将更改合并到 mainmaster 分支,运行以下命令:

    git checkout main
  2. 拉取最新代码
    确保旧分支是最新状态,避免合并时出现冲突:

    git pull origin main
  3. 合并新分支到旧分支
    使用 git merge 命令将新分支的更改合并到旧分支:

    git merge 新分支名

    例如,如果你的新分支名为 feature-branch,则运行:

    git merge feature-branch
  4. 解决冲突(如果有)
    如果合并过程中出现冲突,Git 会提示你。你需要手动编辑冲突文件,解决冲突后,运行以下命令标记冲突已解决:

    git add 文件名

    然后完成合并:

    git commit
  5. 推送更改到远程仓库
    将合并后的更改推送到远程仓库:

    git push origin main

方法二:使用 git rebase 重新应用更改

如果你希望让新分支的更改在旧分支上重新应用(保持提交历史的线性),可以使用 rebase

  1. 切换到新分支
    首先切换到包含更改的新分支:

    git checkout 新分支名
  2. 将新分支基于旧分支重新应用
    使用 git rebase 将新分支的更改重新应用到旧分支上:

    git rebase 旧分支名

    例如:

    git rebase main
  3. 解决冲突(如果有)
    如果在 rebase 过程中出现冲突,Git 会暂停并提示你解决冲突。解决冲突后,运行以下命令继续 rebase

    git rebase --continue
  4. 切换到旧分支并合并更改
    完成 rebase 后,切换到旧分支:

    git checkout 旧分支名

    然后将新分支的更改合并到旧分支:

    git merge 新分支名
  5. 推送更改到远程仓库
    将合并后的更改推送到远程仓库:

    git push origin 旧分支名

方法三:使用 git cherry-pick 挑选特定提交

如果你只想将新分支中的某些特定提交合并到旧分支,可以使用 git cherry-pick

  1. 切换到旧分支
    切换到目标分支:

    git checkout 旧分支名
  2. 找到需要合并的提交哈希值
    在新分支中找到需要合并的提交哈希值:

    git log 新分支名
  3. 将特定提交应用到旧分支
    使用 git cherry-pick 将这些提交应用到旧分支:

    git cherry-pick 提交哈希值

    如果有冲突,解决冲突后继续:

    git cherry-pick --continue
  4. 推送更改到远程仓库
    将更改推送到远程仓库:

    git push origin 旧分支名

总结

  • 使用 git merge:直接将新分支的更改合并到旧分支,保留完整的提交历史。

  • 使用 git rebase:将新分支的更改重新应用到旧分支上,保持提交历史的线性。

  • 使用 git cherry-pick:只将新分支中的特定提交应用到旧分支。


额外提示

  1. 解决冲突:如果在合并或重新应用过程中出现冲突,Git 会标记冲突文件。你需要手动编辑这些文件,解决冲突后运行 git add 文件名,然后继续操作。

  2. 保持分支最新:在合并之前,确保旧分支是最新状态,避免不必要的冲突。

六、提交代码

在 Git 中提交代码是一个将本地更改保存到版本库的操作。以下是详细的步骤,帮助你完成代码的提交。


命令行指引

你还可以按照以下说明从你的电脑中上传现有文件或项目。

Git 全局设置

git config --global user.name "liberty0706"
git config --global user.email "liberty0706@noreply.gitcode.com"

创建一个新仓库

git clone https://gitcode.com/liberty0706/test.git
cd test
echo "# test" >> README.md
git add README.md
git commit -m "add README"
git branch -m main
git push -u origin main

推送现有的文件

cd existing_folder
git init
git remote add origin https://gitcode.com/liberty0706/test.git
git add .
git commit -m "Initial commit"
git branch -m main
git push -u origin main

推送现有的 Git 仓库

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitcode.com/liberty0706/test.git
git push -u origin --all
git push -u origin --tags
————————————————

1. 查看当前状态并且初始化git

在提交代码之前,最好先查看当前仓库的状态,确认哪些文件被修改或新增。运行以下命令:

git status
git init

这个命令会显示:

  • 已修改的文件。

  • 新增但尚未跟踪的文件。

  • 已暂存(准备提交)的文件。


2. 添加文件到暂存区

在 Git 中,提交前需要先将文件添加到暂存区(staging area)。你可以选择添加所有更改的文件,或者只添加特定文件。

添加所有更改的文件
git add .

这个命令会将所有修改和新增的文件添加到暂存区。

添加特定文件

如果你只想添加某个特定文件,可以指定文件名:

bash复制

git add 文件名

例如:

bash复制

git add README.md
添加所有新增的文件(不包括修改的文件)

如果你只想添加新增的文件,可以使用:

bash复制

git add -A

3. 提交更改

将暂存区的文件提交到本地仓库,需要使用 git commit 命令。提交时需要附带一条提交信息,描述本次更改的内容。

基本提交

bash复制

git commit -m "提交信息"

例如:

bash复制

git commit -m "修复了登录功能的错误"
提交所有更改(跳过暂存区)

如果你不想先添加文件到暂存区,可以直接提交所有更改:

bash复制

git commit -am "提交信息"

例如:

bash复制

git commit -am "修复了登录功能的错误"

注意-am 参数会自动添加所有已跟踪的文件更改,但不会添加新文件。


4. 推送到远程仓库

提交到本地仓库后,如果你希望将更改同步到远程仓库(如 GitHub、GitLab 或 GitCode),需要运行以下命令:

bash复制

git push origin 分支名

例如,如果你当前在 main 分支上,可以运行:

bash复制

git push origin main

如果你在新分支上,记得将分支名替换为实际的分支名,例如:

bash复制

git push origin feature-branch

5. 查看提交历史

提交完成后,你可以查看提交历史,确认提交是否成功:

bash复制

git log

这个命令会显示最近的提交记录,包括提交哈希值、提交信息、提交者和提交时间。


6. 常见问题及解决方法

问题 1:提交信息写错了怎么办?

如果你刚刚提交了代码,但发现提交信息写错了,可以使用以下命令修改提交信息:

bash复制

git commit --amend -m "新的提交信息"

然后再次推送:

bash复制

git push --force
问题 2:提交后发现遗漏了文件怎么办?

如果你提交后发现遗漏了文件,可以先添加遗漏的文件:

bash复制

git add 遗漏的文件名

然后使用 --amend 修正提交:

bash复制

git commit --amend --no-edit

最后再次推送:

bash复制

git push --force
问题 3:远程仓库拒绝推送怎么办?

如果远程仓库拒绝推送,可能是因为远程分支有新的更改。你需要先拉取最新的更改:

bash复制

git pull origin 分支名

然后再次尝试推送。


总结

  1. 查看状态git status

  2. 添加文件git add .git add 文件名

  3. 提交更改git commit -m "提交信息"

  4. 推送到远程仓库git push origin 分支名

七、git add添加文件添加错了,取消重新上传

如果你在使用 git add 添加文件时添加错了文件,可以使用以下方法取消暂存(unstage)文件,然后重新添加正确的文件。

以下是具体步骤:


1. 查看暂存区状态

在取消暂存之前,先确认哪些文件已经被添加到暂存区。运行以下命令:

bash复制

git status

这个命令会显示:

  • Changes to be committed(已暂存的更改):这些文件已经被添加到暂存区,准备提交。

  • Changes not staged for commit(未暂存的更改):这些文件已经被修改,但尚未添加到暂存区。


2. 取消暂存单个文件

如果你只想取消暂存某个特定文件,可以使用以下命令:

bash复制

git reset HEAD <文件名>

例如,如果你不小心添加了 wrong-file.txt,可以运行:

bash复制

git reset HEAD wrong-file.txt

这会将文件从暂存区移除,但不会影响文件的修改内容。


3. 取消暂存所有文件

如果你希望取消暂存所有文件(即清空暂存区),可以使用以下命令:

bash复制

git reset HEAD

或者更简洁的写法:

bash复制

git reset

这会将所有文件从暂存区移除,但保留文件的修改内容。


4. 重新添加正确的文件

取消暂存后,你可以重新添加正确的文件。例如:

bash复制

git add <正确的文件名>

或者添加所有需要提交的文件:

bash复制

git add .

5. 提交更改

完成文件的正确添加后,继续提交更改:

bash复制

git commit -m "正确的提交信息"

6. 如果你不想保留文件的修改

如果你不仅想取消暂存文件,还想撤销对文件的所有修改(即将文件恢复到最近一次提交的状态),可以使用以下命令:

bash复制

git checkout -- <文件名>

或者在 Git 2.23 及以上版本中,使用:

bash复制

git restore <文件名>

这会将文件的内容恢复到最近一次提交的状态,同时从暂存区移除。


总结

  • 查看暂存区状态git status

  • 取消暂存单个文件git reset HEAD <文件名>

  • 取消暂存所有文件git reset

  • 重新添加文件git add <文件名>git add .

  • 提交更改git commit -m "提交信息"

八、git提交代码步骤

在 Git 中提交代码需要经过几个步骤:查看状态、添加文件到暂存区、提交更改到本地仓库,以及将更改推送到远程仓库。以下是详细的步骤说明:


步骤 1:查看当前状态

在提交代码之前,最好先查看当前仓库的状态,确认哪些文件被修改或新增。运行以下命令:

bash复制

git status

这个命令会显示:

  1. 未跟踪的文件(Untracked files):这些文件是新添加的,但尚未被 Git 跟踪。

  2. 已修改的文件(Changes not staged for commit):这些文件已经被修改,但尚未添加到暂存区。

  3. 已暂存的文件(Changes to be committed):这些文件已经被添加到暂存区,准备提交。


步骤 2:添加文件到暂存区

将文件添加到暂存区(staging area)是提交前的必要步骤。你可以选择添加所有更改的文件,或者只添加特定文件。

添加所有更改的文件

bash复制

git add .

这个命令会将所有修改和新增的文件添加到暂存区。

添加特定文件

如果你只想添加某个特定文件,可以指定文件名:

bash复制

git add 文件名

例如:

bash复制

git add README.md
添加所有未跟踪的文件

如果你只想添加新增的文件,但不包括修改的文件,可以使用:

bash复制

git add -A

步骤 3:提交更改到本地仓库

将暂存区的文件提交到本地仓库,并附带一条提交信息,描述本次更改的内容。

bash复制

git commit -m "提交信息"

例如:

bash复制

git commit -m "添加了新的功能模块"

注意

  • 提交信息应该简洁明了,描述清楚本次提交的主要内容。

  • 如果需要更详细的提交信息,可以省略 -m 参数,直接运行 git commit,然后在打开的文本编辑器中输入提交信息。


步骤 4:推送到远程仓库

提交到本地仓库后,如果你希望将更改同步到远程仓库(如 GitHub、GitLab 或 GitCode),需要运行以下命令:

bash复制

git push origin 分支名

例如,如果你当前在 main 分支上,可以运行:

bash复制

git push origin main

如果你在新分支上,记得将分支名替换为实际的分支名,例如:

bash复制

git push origin feature-branch

步骤 5:查看提交历史

提交完成后,你可以查看提交历史,确认提交是否成功:

bash复制

git log

这个命令会显示最近的提交记录,包括提交哈希值、提交信息、提交者和提交时间。


额外提示

  1. 解决冲突:如果在推送时遇到冲突(例如远程仓库有新的更改),需要先拉取最新的更改:

    bash复制

    git pull origin 分支名

    然后解决冲突,再次提交并推送。

  2. 撤销暂存的文件:如果在 git add 后发现添加了错误的文件,可以取消暂存:

    bash复制

    git reset HEAD 文件名
  3. 撤销未暂存的更改:如果需要撤销对文件的所有修改,可以使用:

    bash复制

    git checkout -- 文件名

    或者在 Git 2.23 及以上版本中:

    bash复制

    git restore 文件名

总结

  1. 查看状态git status

  2. 添加文件到暂存区git add .git add 文件名

  3. 提交更改git commit -m "提交信息"

  4. 推送到远程仓库git push origin 分支名

  5. 查看提交历史git log

九、旧分支代码完全覆盖新分支代码

场景一:新分支与旧分支在本地仓库且有远程关联

如果你已经在本地有旧分支和新分支,并且它们都和远程仓库有对应关联,可按以下步骤操作:

1. 保存新分支未提交的修改(可选)

如果你在新分支上有未提交的修改,为了避免数据丢失,可以先将这些修改暂存起来:

git checkout new_branch
git stash
2. 确保旧分支是最新的

切换到旧分支并从远程仓库拉取最新代码:

git checkout old_branch
git pull origin old_branch
3. 切换回新分支并重置

切换回新分支,使用 git reset 命令将新分支的提交历史重置为旧分支的最新提交,同时使用 --hard 参数来丢弃新分支工作区和暂存区的所有修改:

git checkout new_branch
git reset --hard old_branch
4. 推送新分支到远程(如果需要)

如果需要将新分支的更新同步到远程仓库,可以使用以下命令:

git push -f origin new_branch

这里的 -f 是强制推送的意思,因为你重置了新分支的提交历史,和远程仓库的提交历史不一致,需要强制覆盖远程仓库的对应分支。

5. 恢复暂存的修改(如果之前暂存了)

如果你之前使用了 git stash 暂存修改,可以使用以下命令恢复:

收起

bash

git stash pop

场景二:只操作本地仓库

如果你只在本地仓库操作,不涉及远程仓库,可以简化步骤:

1. 保存新分支未提交的修改(可选)
git checkout new_branch
git stash
2. 重置新分支

直接将新分支重置为旧分支的状态:

git reset --hard old_branch
3. 恢复暂存的修改(如果之前暂存了)
git stash pop

命令解释

  • git stash:把当前工作区和暂存区的修改保存到一个栈中,让工作区回到干净的状态。
  • git pull <remote> <branch>:从指定的远程仓库拉取指定分支的最新代码,并合并到当前分支。
  • git reset --hard <commit>:将当前分支的 HEAD 指针重置到指定的提交,同时清空工作区和暂存区的修改。
  • git push -f <remote> <branch>:强制将本地分支推送到远程仓库,覆盖远程仓库上对应分支的内容。
  • git stash pop:从栈中取出最近一次暂存的修改,并应用到当前工作区。

请将命令中的 old_branch 替换为你实际的旧分支名称,new_branch 替换为新分支名称,origin 替换为你的远程仓库名称。

十、git合并两个分支代码

前提条件

在进行分支合并之前,需要确保:

  • 你已经了解当前所在的分支和要合并的目标分支。
  • 本地仓库的代码是最新的,可使用 git pull 拉取最新代码。

快进式合并(Fast-forward)

当目标分支的提交历史是当前分支提交历史的直接延续时,Git 会采用快进式合并。这种合并方式只是简单地将当前分支的指针向前移动到目标分支的最新提交。

步骤
  1. 切换到要合并到的目标分支:通常是将其他分支的代码合并到主分支(如 main 或 master)。
git checkout main
  1. 执行合并操作:使用 git merge 命令将另一个分支(如 feature-branch)合并到当前分支。
git merge feature-branch
  1. 推送合并后的代码到远程仓库:如果需要将合并后的代码同步到远程仓库,可以使用 git push 命令。
git push origin main

三方合并(Three-way merge)

当两个分支的提交历史存在分叉时,Git 会采用三方合并。这种合并方式会找到两个分支的共同祖先,然后将两个分支的修改合并到一起。

步骤
  1. 切换到要合并到的目标分支:同样,通常是将其他分支的代码合并到主分支。
git checkout main
  1. 执行合并操作:使用 git merge 命令将另一个分支(如 feature-branch)合并到当前分支。
git merge feature-branch
  1. 解决合并冲突(如果有):在三方合并过程中,可能会出现合并冲突,即两个分支对同一文件的同一部分进行了不同的修改。当出现合并冲突时,Git 会在冲突文件中标记出冲突的部分,你需要手动编辑这些文件,解决冲突。
# 查看冲突文件
git status
# 编辑冲突文件,解决冲突
# 解决冲突后,将文件添加到暂存区
git add <file>
# 提交合并结果
git commit
  1. 推送合并后的代码到远程仓库:解决冲突并提交合并结果后,将合并后的代码同步到远程仓库。
git push origin main

合并选项

  • --no-ff:即使可以进行快进式合并,也强制创建一个新的合并提交。这样可以保留分支的合并历史,方便后续查看。
git merge --no-ff feature-branch
  • --squash:将目标分支的所有提交合并为一个提交,然后将这个提交合并到当前分支。这种方式可以使提交历史更加简洁。
git merge --squash feature-branch
# 提交合并结果
git commit

合并后的检查

合并完成后,可以使用 git log 命令查看合并后的提交历史,确保合并结果符合预期。

git log --oneline --graph --decorate

通过以上步骤,你可以在 Git 中成功合并两个分支的代码。在合并过程中,要注意处理可能出现的合并冲突,确保代码的正确性。

十一、回滚操作

当你将本地分支的代码推送到远程分支后,若发现推送的内容存在问题,需要进行回滚操作。以下为你介绍几种常见的回滚场景及对应的操作方法。

场景一:回滚到指定提交版本

如果你希望将远程分支回滚到某个指定的提交版本,可以按以下步骤操作:

步骤

1.确定要回滚到的提交版本的哈希值:使用 git log 命令查看提交历史,找到你想要回滚到的提交版本的哈希值。

git log --oneline

此命令会以简洁的格式显示提交历史,每一行开头的字符串即为提交的哈希值。

2.在本地分支进行回滚操作:使用 git reset 命令将本地分支回滚到指定的提交版本。--hard 选项会同时重置工作区和暂存区,使它们与指定提交版本一致。

git reset --hard <commit-hash>

请将 <commit-hash> 替换为你要回滚到的提交版本的哈希值。

  1. 强制推送回滚后的本地分支到远程分支:由于你已经在本地回滚了分支,与远程分支的提交历史不一致,所以需要使用 -f(强制)选项进行推送。
git push -f origin <branch-name>

请将 <branch-name> 替换为你要回滚的远程分支的名称。

场景二:撤销某次提交

如果你只想撤销某次提交,而不是将整个分支回滚到某个版本,可以使用 git revert 命令。

步骤
  1. 确定要撤销的提交版本的哈希值:同样使用 git log --oneline 命令查看提交历史,找到要撤销的提交版本的哈希值。

  2. 使用 git revert 命令撤销指定提交:运行以下命令,Git 会创建一个新的提交,该提交的内容是撤销指定提交所做的更改。

git revert <commit-hash>

执行此命令后,会弹出一个文本编辑器,让你输入本次撤销提交的描述信息,输入完成后保存并退出编辑器。

        3. 将撤销提交推送到远程分支:使用普通的 git push 命令将本地的撤销提交推送到远程分支。

git push origin <branch-name>

注意事项

  • 强制推送的风险:使用 git push -f 进行强制推送时要格外谨慎,因为这会覆盖远程分支的提交历史,可能会导致其他团队成员的工作丢失或出现冲突。在执行强制推送之前,最好与团队成员沟通协调。
  • git revert 的特点git revert 不会改变提交历史,而是创建一个新的提交来撤销指定提交的更改,适合在公共分支上使用,避免影响其他团队成员的工作。

通过以上方法,你可以根据具体需求将推送到远程分支的代码进行回滚操作。

十二、拉取代码

场景一:从远程仓库克隆项目

如果你还没有本地项目副本,需要从远程仓库克隆一个全新的项目到本地,可按以下步骤操作:

1. 打开终端或命令提示符

在 Windows 系统中,可以使用命令提示符(CMD)或 PowerShell;在 macOS 和 Linux 系统中,可以使用终端。

2. 定位到要存放项目的目录

使用cd命令切换到你想要存放项目的目录,例如:

cd /Users/yourusername/Documents/projects  # macOS/Linux
cd C:\Users\yourusername\Documents\projects  # Windows
3. 执行克隆命令

使用git clone命令克隆远程仓库到本地,命令格式如下:

git clone <远程仓库地址>

例如,要克隆一个名为example-project的 GitHub 仓库,可以使用以下命令:

git clone https://github.com/username/example-project.git

如果使用 SSH 协议克隆,可以使用类似以下命令:

git clone git@github.com:username/example-project.git

执行该命令后,Git 会自动从远程仓库下载项目文件到本地指定目录。

场景二:从远程仓库拉取已有项目的最新更新

如果你已经在本地有一个项目副本,需要从远程仓库拉取最新的代码更新,可以按以下步骤操作:

1. 打开终端或命令提示符,并进入项目目录

使用cd命令切换到项目所在的本地目录,例如:

cd /Users/yourusername/Documents/projects/example-project  # macOS/Linux
cd C:\Users\yourusername\Documents\projects\example-project  # Windows
2. 查看当前分支

使用git branch命令查看当前所在的分支:

git branch

通常,默认分支名为mastermain

3. 拉取最新更新

使用git pull命令从远程仓库拉取最新的代码更新到本地当前分支,命令格式如下:

git pull <远程仓库名称> <分支名称>

一般情况下,远程仓库名称默认为origin,如果你要拉取main分支的更新,可以使用以下命令:

git pull origin main

如果当前分支已经和远程分支建立了跟踪关系,也可以直接使用git pull命令:

git pull

可能遇到的问题及解决方法

  • 冲突问题:如果本地代码和远程代码有冲突,git pull命令会提示冲突信息。你需要手动解决冲突,编辑冲突文件,然后使用git addgit commit命令提交解决后的代码。
  • 权限问题:如果没有足够的权限访问远程仓库,会提示权限错误。你需要检查远程仓库的访问权限,或者使用正确的认证方式(如用户名和密码、SSH 密钥等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值