Git进阶一
git 常见命令补充
git status
查看分支(在远程分支origin/main的后几个commit)、文件状态(untraked 还是 to be committed)git log
查看提交历史git log -n 2 --oneline
:-n 2
显示最近的2次提交,--oneline
是格式化选项,将每个提交的输出限制为一行,只显示提交哈希和提交消息git log -n 1 --oneline
: 显示当前HEAD
指针指向的提交1 2 3 4
(base) PS C:\Users\yuy4o\Desktop\sourcetree> git log -n 3 --oneline 4e4d1cb (HEAD -> main) 3 5de4eb3 2 b71dd2d (origin/main) 1
git commit --amend -m "..."
修改提交信息git commit --date="Aug 19 21:05:20 2024 +0800" -am "lidf"
自定义提交日期时间
git add 回滚
git add <filename>
后跟踪文件位于暂存区
git restore --stage <filename>
跟踪文件从暂存区回退到未暂存区
git commit 回滚
git commit -m "..."
后跟踪文件位于版本库
git reset --soft HEAD^
跟踪文件从版本库回退到暂存区git reset --mixed HEAD^
跟踪文件从版本库回退到未暂存区git reset --hard HEAD^
将HEAD
移到指定的提交,丢弃版本库及本地目录中的所有更改疑问:直接执行
git reset
怎么回退
这里的 HEAD^
表示要将 HEAD
移动到前一次提交。你也可以使用具体的提交哈希值(git reset --mixed b71d
)或者分支名作为目标
疑问
问1:git中分支 origin/main和main什么区别
答1:在Git中,origin/main 和 main 通常表示远程仓库和本地仓库中的分支。以下是它们的一些基本区别:
origin/main: origin 是默认的远程仓库名称,通常指向项目的中央仓库(例如 GitHub 或 GitLab)。 origin/main 表示远程仓库中的 main 分支。在一些仓库中,main 可能被命名为 master 或其他名称,具体取决于项目的设置。
main: main 表示本地仓库中的分支,是你当前所在的工作分支。这是你正在本地工作的分支,可以进行修改、提交等操作。 main 可以与远程仓库的分支同步,例如,你可以将本地的 main 推送到远程的 origin/main。 通常情况下,你在本地仓库上执行的操作(例如创建、修改、合并分支等)是在 main 分支上进行的。当你需要与远程仓库同步时,你会使用 git pull 或 git push,这会涉及到与远程仓库的分支进行交互,如 origin/main。
总的来说,origin/main 是远程仓库中的 main 分支,而 main 是你本地仓库中的 main 分支。在正常的工作流程中,你会在本地的 main 上进行工作,然后将其推送到远程仓库的 origin/main 分支。
1
2
3
4
5
6
7
# 当前HEAD指针指向分支main,本地分支 main 和远程分支 origin/main 一致
(base) PS C:\Users\yuy4o\Desktop\sourcetree> git log
commit b71dd2dc03370be80b4c7abafcce341d71ef0d85 (HEAD -> main, origin/main)
Author: yuy4o <yuyao.jiang22@gmail.com>
Date: Sat Dec 2 11:57:12 2023 +0800
1
问2:git中分支和head什么区别
答2:在Git中,分支(Branch)和 HEAD 是两个关键的概念,它们用于管理代码库的版本和状态。
分支(Branch):
分支是指代码库中的一个独立的、可独立发展的线索。通过创建分支,你可以在不影响主要代码线的情况下开发新功能、修复错误等。 每个分支都包含了代码库的完整历史记录。当你创建一个新分支时,它会包含当前分支的所有提交历史。在新分支上的任何提交都会影响该分支的历史,而不会影响其他分支的历史。分支的切换通过 git checkout 或 git switch 命令来实现。例如,你可以创建一个新分支并在该分支上进行开发:git checkout -b feature-branch
HEAD:
HEAD 是一个特殊的指针,它指向当前所在的分支或提交(commit)。HEAD 通常指向当前工作目录所在的分支的最新提交。 当你在Git中进行提交时,HEAD 将会移动到最新的提交,反映了当前的工作状态。 如果你切换分支,HEAD 将会随之移动到新的分支。HEAD 的移动代表了当前工作目录所处的状态。 例如,当你在主分支上时,HEAD 可能指向主分支的最新提交:
1
2
3
4
5
6
7
8
9
10
11
A---B---C (main)
^
HEAD
切换到新创建的分支,HEAD 将移动到该分支的最新提交:
A---B---C (main)
\
D (feature-branch)
^
HEAD
总的来说,分支是一种逻辑上的隔离,让你可以在不影响主要代码线的情况下进行开发。HEAD 则是一个指针,指向当前工作目录所在的分支或提交,反映了当前工作状态。通过使用这两个概念,你可以在Git中方便地进行代码的版本控制和管理。
附录
推荐使用Sourcetree,方便高效。还有文件中只暂存行的功能
Comments powered by Disqus.