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 中提交代码是一个将本地更改保存到版本库的操作。以下是详细的步骤,帮助你完成代码的提交。


1. 查看当前状态

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

bash复制

git status

这个命令会显示:

  • 已修改的文件。

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

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


2. 添加文件到暂存区

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

添加所有更改的文件

bash复制

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

你可能感兴趣的:(git,笔记)