一、配置Git
1.1 设置本地的用户名和用户邮箱
这两条命令是用来配置Git用户信息的,它们会将用户名和用户邮箱设置为Git配置的一部分。
git config --global user.name "teduweb" //(用户名) git config --global user.email "web@tedu.com" //(用户邮箱)
- git config --global user.name "teduweb": 这条命令设置全局用户名为"teduweb"。--global标志表示这个用户名会被应用到这台计算机上所有的Git仓库。如果你没有为特定的Git仓库设置局部用户名,Git会使用这个全局用户名。
- git config --global user.email "web@tedu.com": 这条命令设置全局用户邮箱为"web@tedu.com"。同样,--global标志表示这个邮箱地址会被应用到这台计算机上所有的Git仓库。这个邮箱地址用于关联你的提交操作到你的身份,通常也是服务如GitHub或GitLab用来关联提交到具体用户的方式。
这些设置非常重要,因为每次你进行提交(commit)时,Git都会使用这些用户信息来标记谁做了这些改动。这样,团队中的其他成员就可以看到每个改动是谁做的,同时也允许你的工作被正确地归属到你名下。
1.2 要查看Git配置信息
运行git config --list命令可以显示所有Git配置级别的当前设置,包括本地、全局和系统级别的配置。这是查看所有当前Git配置的快捷方式,可以帮助你了解Git是如何配置的,以及可能需要调整哪些设置。
git config --list
- 本地配置:针对特定仓库的配置,存储在项目目录下的.git/config文件中。
- 全局配置:适用于当前用户在本机上的所有仓库,配置存储在用户主目录下的配置文件中,例如Linux和macOS上的~/.gitconfig或~/.config/git/config文件,以及Windows上的C:\Users\<用户名>\.gitconfig。
- 系统配置:适用于系统上所有用户的所有仓库,配置文件通常位于/etc/gitconfig(Linux或macOS)或C:\ProgramData\Git\config(Windows)。
当你运行git config --list命令时,它会列出所有当前的配置,包括用户名、邮箱、别名等设置。如果相同的配置项在不同的配置级别中被设置了不同的值,Git会按照以下的优先级来决定使用哪个值:本地 > 全局 > 系统。这意味着本地配置会覆盖全局和系统配置,全局配置会覆盖系统配置。
如果你只想查看特定级别的配置,可以使用以下命令:
- git config --local --list:仅显示当前仓库的配置。
- git config --global --list:仅显示当前用户的全局配置。
- git config --system --list:仅显示适用于所有用户的系统级别配置。
- git config user.name:仅查看特定的配置项,例如用户名
- git config user.email:仅想查看电子邮件配置
请注意,出于安全原因,某些配置信息(如密码)可能不会直接显示在git config --list的输出中。
1.3 初始化Git仓库
git init 是一个Git命令,用于在当前目录中初始化一个新的Git仓库。执行这个命令后,Git会在当前目录下创建一个名为 .git 的子目录,其中包含了初始化的Git仓库所必需的所有文件和目录结构。
git init
1.4 博客详解:
二、提交项目和版本回退
2.1 常看当前工作目录的状态
git status 是一个Git命令,用于显示Git仓库中当前工作目录的状态。它是查看仓库中哪些文件处于暂存状态、哪些文件有更改但还没有暂存,以及哪些文件还没有被Git跟踪(即新文件)的非常有用的命令。
git status
2.2 往暂存区中添加
git add . 是一个Git命令,用于将当前目录(包括所有子目录)下的所有更改(包括新文件、修改过的文件和删除的文件)添加到Git的暂存区。这个命令中的.表示当前目录。
git add .
当你执行git add .时,Git会执行以下操作:
- 跟踪新文件:如果当前目录中有任何未被Git跟踪的新文件,git add .会将这些文件添加到暂存区,使它们准备好被包含在下一个提交中。
- 暂存修改的文件:对于已经存在于Git仓库中但被修改过的文件,git add .会将这些修改添加到暂存区。
- 暂存删除的文件:如果文件被删除,git add .会将这个删除操作添加到暂存区,以便在提交时记录这个删除。
- 忽略.gitignore文件:git add .会忽略那些在.gitignore文件中指定的应该被忽略的文件和目录。
使用git add .是一个快速将所有更改添加到暂存区的方法,尤其是当你想要提交当前目录下的所有更改时。然而,这也意味着你可能会不小心添加一些不打算提交的文件,因此在使用这个命令时要小心。
在执行git add .之后,你可以使用git status来查看哪些文件已经被添加到暂存区,以及哪些文件还没有被添加。然后,你可以使用git commit来提交这些暂存的更改到版本历史。
2.3 添加到本地仓库
git commit 是 Git 版本控制系统中的一个核心命令,用于将更改记录(commit)到你的本地仓库的历史记录中。在你使用 git add 命令将更改添加到暂存区之后,你就可以使用 git commit 来实际保存这些更改到仓库中。
当你执行 git commit -m "提交说明" 时,-m 参数后面跟随的是本次提交的消息,这个消息应该清晰准确地描述你所做的更改,以便其他协作者(包括未来的你)能够理解这次提交的目的和内容。
git commit -m "提交说明"
- git commit: 这是 Git 命令,用于创建一次新的提交。
- -m: 这是一个命令行选项,用于指定后面紧跟的是一次提交的消息。
- "提交说明": 这部分是你应该替换成具体描述的地方。提交说明应该是一段简短但描述性的文本,用于记录这次更改的主要信息。
例如,如果你修改了一个名为 index.html 的文件,并且更改了页面的标题,你的提交信息可能会是这样的:
git commit -m "Update page title in index.html"
此命令将创建一个新的提交,包含所有你已经用 git add 添加到暂存区的文件的更改,并且这个提交会带有一个消息 "Update page title in index.html"。
2.4 查看提交日志
git log 是一个非常有用的 Git 命令,它允许你查看 Git 仓库的提交历史。这个命令显示了一系列提交(commits),其中包括每个提交的唯一识别码(SHA-1哈希)、作者的信息、提交日期以及提交消息。
git log
- git log -n <limit>: 显示最近的 <limit> 条提交。
- git log --oneline: 显示每个提交的信息在一行内,通常只包含哈希的前几位和提交消息。
- git log --graph: 以图形的方式展示分支和合并历史。
- git log --author="Author Name": 只显示特定作者的提交。
- git log --since=2.weeks: 列出最近两周内的提交。
- git log --pretty=format:"%h - %an, %ar : %s":按特定格式显示日志
- git log --after="YYYY-MM-DD":在特定日期之后的提交
- git log --grep="<keyword>": 搜索提交信息中包含特定关键字的提交
2.5 版本回退
git reset --hard <commit> 是一个强有力的 Git 命令,它用于将当前分支的 HEAD(即当前分支的最新提交)重置到指定的提交 <commit>,并且会重置暂存区和工作目录以匹配那个提交。这里的 <commit> 指的是你想要回退到的目标提交的哈希值(版本ID号)。
要注意的是,使用 --hard 选项会导致工作目录中的所有未提交的更改和暂存的更改都被清除,换句话说,所有在 <commit> 之后的更改都将丢失。这是一个不可逆的操作,因此在执行它之前,你需要确保不会因此而丢失重要的数据。
git reset --hard commit //这里的commit是版本id号
- HEAD移动:这个命令首先将当前分支的HEAD指针移动到指定的 <commit>。从此处开始,该分支的最新提交现在是该 <commit>。
- 暂存区重置:接下来,暂存区(即索引或缓存)被更新,以便所有文件的状态都匹配到了在 <commit> 中的状态。这意味着所有在 <commit> 后被暂存的更改都将丢失。
- 工作目录重置:最后,工作目录中的文件也会被更新,以确保它们的内容匹配到 <commit> 中的内容。此操作会删除所有 <commit> 之后的更改。
2.6 博客详解:
三、分支操作
git branch 命令在 Git 中被用于多种与分支相关的操作。它可以列出、创建、删除分支,以及执行其他分支管理的任务
git branch
3.1 列出分支:
只输入 `git branch` 会列出你的本地仓库中所有的分支。当前分支会被标记并以星号 (*) 高亮显示。
使用 `git branch -a` 可以查看本地和远程追踪分支。
3.2 创建分支:
执行 `git branch <branch-name>` 可以基于当前的 HEAD 创建一个新的分支。
3.3 删除分支:
`git branch -d <branch-name>` 用于删除本地分支。这个命令会有安全检查,只允许删除已经被合并的分支。
`git branch -D <branch-name>` 强制删除一个分支,即使它包含未合并的更改。
3.4 重命名分支:
使用 `git branch -m <old-name> <new-name>` 可以重命名分支。
3.5 查看分支:
`git branch -v` 会列出每个分支的最后一次提交。
`git branch --merged` 列出所有已经合并到当前分支的分支。
`git branch --no-merged` 列出所有尚未合并到当前分支的分支。
3.6 切换分支:
git checkout new-feature
可以使用 git checkout new-feature 命令。这将会更新你的工作目录以匹配 new-feature 分支的内容,同时也会更新 Git 的 HEAD 指针来指向该分支,意味着任何新的提交都将会被作为这个分支的一部分。
3.7 合并分支:
git merge feature-branch 命令用于将指定的分支 feature-branch 合并到当前分支。执行这个命令时,Git 会尝试将 feature-branch 分支上的更改与当前分支的最新提交进行合并。
1.确保你在目标分支上:在执行合并之前,确保你当前所在的分支是你想要合并到的目标分支。例如,如果你想要将 feature-branch 合并到 main 分支,你需要先切换到 main 分支:
git checkout main
2.执行合并:使用 git merge 命令来合并 feature-branch
git merge feature-branch
3.解决冲突(如果存在): 如果 feature-branch 和当前分支有冲突(即它们修改了相同的文件的相同部分),Git 会暂停合并过程并提示你解决这些冲突。你需要手动编辑这些文件来解决冲突,然后使用 git add 命令标记这些文件为已解决,最后使用 git commit 来完成合并。
4.完成合并: 如果没有冲突,或者冲突已经解决,Git 会自动创建一个新的合并提交,将 feature-branch 的更改集成到当前分支。
5.清理:合并完成后,你可能想要删除 feature-branch 分支(如果不再需要):
git branch -d feature-branch
3.8 博客详解:
四、远程仓库:
4.1 向远程仓库推送
在Git中,git push -u 远程仓库地址 分支名称 是一个用于将本地分支推送到远程仓库并设置上游分支的命令。这个命令通常在你第一次推送本地分支到远程仓库时使用,以便于后续的推送和拉取操作更加简便。
git push -u 远程仓库地址 分支名称
- git push: 这是Git的基本命令之一,用于将本地仓库的更改推送到远程仓库。
- -u: 这是一个选项,代表“上游”(upstream)。当你使用-u选项时,Git会设置一个跟踪关系,即本地分支与远程分支之间的关联。这样,你之后可以使用git push和git pull命令而不需要指定远程仓库和分支名称,Git会默认使用这个关联的分支。
- 远程仓库地址: 这是远程仓库的URL或名称。例如,如果远程仓库在GitHub上,这可能是https://github.com/username/repository.git或简写为origin。
- 分支名称: 这是你想要推送的本地分支的名称。例如,master、main、feature/new-feature等。
- 将本地分支feature/new-feature的更改推送到远程仓库origin。
- 在远程仓库origin上创建一个同名的分支feature/new-feature(如果它还不存在)。
- 设置本地分支feature/new-feature跟踪远程分支origin/feature/new-feature。
4.2 博客详解:
五、常用命令简介:
- git init
- 初始化一个新的Git仓库。在项目目录中运行此命令会创建一个.git子目录,其中包含仓库的所有必要文件。
- 示例:git init
- git clone [url]
- 克隆一个远程仓库到本地。这会复制远程仓库的所有历史记录和分支。
- 示例:git clone https://github.com/user/repo.git
- git add [file]
- 将文件的更改添加到暂存区,准备提交。
- 示例:git add file.txt
- git commit -m "message"
- 提交暂存区的更改到本地仓库,并附带一条描述性的提交消息。
- 示例:git commit -m "Add new feature"
- git status
- 显示工作目录和暂存区的状态,包括哪些文件被修改了,哪些文件被添加到了暂存区。
- 示例:git status
- git push [remote] [branch]
- 将本地分支的更改推送到远程仓库。
- 示例:git push origin main
- git pull [remote] [branch]
- 从远程仓库拉取更改并合并到当前分支。
- 示例:git pull origin main
- git branch
- 列出、创建或删除分支。
- 示例:git branch 列出所有分支。
- 示例:git branch new-feature 创建一个新分支。
- git checkout [branch]
- 切换到指定的分支。
- 示例:git checkout new-feature
- git merge [branch]
- 将指定分支的更改合并到当前分支。
- 示例:git merge new-feature
- git log
- 查看提交历史,包括每个提交的作者、日期和消息。
- 示例:git log
- git diff
- 显示工作目录和暂存区之间的差异,或者两个提交之间的差异。
- 示例:git diff 显示工作目录和暂存区之间的差异。
- git reset [commit]
- 撤销指定提交之后的所有提交,并将更改保留在本地工作目录。
- 示例:git reset HEAD~1 撤销上一次提交。
- git stash
- 临时保存工作目录和暂存区的更改,以便切换到其他分支进行工作。
- 示例:git stash 保存当前更改。
📝大佬觉得本文有所裨益,不妨轻点一下👍给予鼓励吧!
❤️❤️❤️本人虽努力,但能力尚浅,若有不足之处,恳请各位大佬不吝赐教,您的批评指正将是我进步的动力!😊😊😊
💖💖💖若您认为此篇文章对您有所帮助,烦请点赞👍并收藏🌟,您的支持是我前行的最大动力!
🚀🚀🚀任务在默默中完成,价值在悄然间提升。让我们携手共进,一起加油,迎接更美好的未来!🌈🌈🌈