目录
[git status](#git status)
[git add](#git add)
[git commit](#git commit)
[git remote](#git remote)
[git push](#git push)
[git pull](#git pull)
[git fetch](#git fetch)
[git log](#git log)
[git branch](#git branch)
安装git
windows下安装git可以直接上git官网选择windows下的安装包进行下载。
注册gitee
gitee注册示例
- 访问gitee官网
- 使用我们的邮箱以及用户名注册一个账号,需要记住我们的用户名和邮箱
git账户配置
win + r 输入cmd打开命令提示符,输入:
cpp
git config --global user.name "gitee用户名"
git config --global user.email gitee注册邮箱
注意gitee用户名,应该是gitee.com后面跟着的,而不是头像旁边的。
生成SSH密钥
cpp
ssh-keygen -t rsa -C "gitee注册邮箱"
生成的密钥一般存放在**.ssh/id_rsa.pub**下,打开id_rsa.pub,复制里面的所有内容。
添加完成后,在命令提示符里输入:
bash
ssh -T git@gitee.com
验证SSH是否添加成功
使用git仓库
在本地生成一个git仓库
- 新建一个文件夹
- 进入新建的文件夹下
- 输入"git init"
这样一个git仓库就创建好了
创建文件并增加commit
在文件夹下随便创建一个.txt文件
输入"**git add"**命令用于将工作区的修改添加到暂存区,为后续的提交做准备。
输入git commit -m "提交信息",用于将暂存区的修改提交到本地仓库,记录项目的历史变化。这里的 "提交消息" 是对本次提交的简短描述,应该清晰地说明本次提交所做的更改内容。
命令详解
git status
在 Git 中,
git status
命令用于显示工作区和暂存区的状态。以下是其具体使用方法:一、基本信息展示
执行
git status
后,会显示以下几方面的信息:
- 当前所在分支:例如 "On branch master" 表示当前在 "master" 分支上。
- 工作区状态:
- 未跟踪的文件:列出工作区中未被 Git 跟踪的文件。例如 "Untracked files: newfile.txt" 表示有一个名为 "newfile.txt" 的文件还未被跟踪。
- 已修改但未暂存的文件:显示那些已经被修改但还没有添加到暂存区的文件。例如 "modified: existingfile.txt" 表示 "existingfile.txt" 文件已被修改。
- 暂存区状态:如果有文件被添加到暂存区,会显示类似 "Changes to be committed:",并列出暂存区中的文件。
二、常用选项
-s
或--short
:
- 作用:以简洁的格式显示状态信息。会用不同的字符表示不同的状态,例如 "M" 表示已修改,"A" 表示已添加到暂存区等。
- 示例:
git status -s
可能会输出 "M existingfile.txt""?? newfile.txt" 等简洁信息。
-b
或--branch
:
- 作用:显示当前分支以及与上游分支的相对关系。例如,如果当前分支落后于上游分支,会显示 "behind n commits";如果领先于上游分支,会显示 "ahead n commits"。
- 示例:
git status -b
可能会输出 "On branch master\nYour branch is ahead of 'origin/master' by 2 commits."。三、注意事项
git status
是一个非常有用的命令,可以帮助你随时了解项目的状态,在进行提交、拉取、推送等操作之前,最好先查看一下状态,确保没有遗漏或错误的操作。如果看到有未跟踪的文件或已修改但未暂存的文件,你需要决定是否要将它们添加到版本控制中或者忽略它们。如果要将未跟踪的文件添加到版本控制,可以使用
git add
命令;如果要忽略某些文件,可以在项目根目录下创建一个 ".gitignore" 文件,并在其中列出要忽略的文件模式。
git add
以下是对
git add
命令更详细的使用方法介绍:一、添加单个文件
如果你只想添加一个特定的文件,可以直接指定文件的路径和名称。例如:
git add src/main/java/MyClass.java
这将把位于 "src/main/java/" 目录下的 "MyClass.java" 文件添加到暂存区。
二、添加多个文件
- 逐个指定文件:
git add file1.txt file2.txt file3.css
可以依次列出多个文件进行添加。
- 使用通配符:
假设你有多个以 ".html" 结尾的文件要添加,可以使用通配符 "*"。
git add *.html
三、添加整个目录
要添加一个目录及其下的所有文件(包括子目录中的文件),可以指定目录的路径。
git add myFolder/
注意,这里目录名后面要有一个斜杠 "/",以明确表示是一个目录而不是与该目录同名的文件。
四、添加已修改和新建但未跟踪的文件
git add.
:这个命令会将当前目录及所有子目录下所有已修改和新建但未跟踪的文件添加到暂存区。它是一种比较常用的快捷方式,但要注意可能会添加一些不需要的文件,所以在执行前最好确认一下工作区的状态。
git add -u
:这个选项只会添加已跟踪文件的修改和删除操作,不会添加新文件。例如,如果你修改了一个已跟踪的文件并且删除了另一个已跟踪的文件,执行这个命令会将这些变化添加到暂存区。
git add -A
:这个选项会添加所有的变化,包括新文件、已跟踪文件的修改和删除操作。相当于同时执行了
git add.
和git add -u
。五、交互式添加
git add -i
提供了一个交互式的界面,让你可以更精细地选择要添加的文件。执行这个命令后,会出现一系列选项:
- "* staged changes*":显示当前已暂存的文件。
- "* unstaged changes*":显示未暂存的文件修改。
- "* untracked files*":显示未跟踪的文件。
你可以通过输入相应的数字或命令来选择文件进行添加、暂存或撤销暂存等操作。
六、注意事项
- 在执行
git add
之前,最好先使用git status
命令查看当前工作区和暂存区的状态,确保你添加的是正确的文件。- 如果不小心添加了错误的文件,可以使用
git reset HEAD <文件路径>
来撤销该文件的添加。- 当多人协作开发时,要注意在添加文件之前确保你的修改不会与其他人的冲突,并且遵循团队的提交规范。
git commit
在 Git 中,
git commit
命令用于将暂存区的修改提交到本地仓库,记录项目的历史变化。以下是其具体使用方法:一、基本语法
git commit -m "提交消息"
这里的 "提交消息" 是对本次提交的简短描述,应该清晰地说明本次提交所做的更改内容。例如:
git commit -m "修复了登录页面的 bug"
。二、其他常用选项
-a
:
- 作用:将所有已跟踪文件的修改添加到暂存区并直接提交,无需先执行
git add
。- 示例:
git commit -a -m "更新了多个文件的内容"
。
--amend
:
- 作用:修改上一次提交。可以在不增加新提交的情况下,修改上一次提交的提交消息或者添加遗漏的修改到上一次提交中。
- 示例:如果发现上一次提交的消息有误,可以使用
git commit --amend -m "正确的提交消息"
来修正。如果有新的修改需要添加到上一次提交,可以先进行修改,然后执行git add
添加修改,最后使用git commit --amend
提交。三、提交规范
良好的提交消息有助于团队成员理解项目的历史变化和追踪问题。一般推荐使用简洁明了的语言,遵循一定的格式,例如:
- 类型:说明本次提交的类型,如
feat
(新功能)、fix
(修复 bug)、docs
(文档修改)等。- 描述:对本次提交的具体描述。
例如:
fix: 修复了用户注册时的验证错误
。四、注意事项
- 在提交之前,确保你的修改已经经过充分的测试和审查,避免提交有问题的代码。
- 提交应该是有意义的小步骤,而不是一次性提交大量无关的修改,这样有助于更好地跟踪项目的历史和进行代码审查。
- 如果多人协作开发,在提交之前最好先执行
git pull
获取最新的代码,以避免冲突。
git remote
git remote
命令主要用于管理与远程仓库的连接。以下是对这个命令的进一步阐述:一、远程仓库信息的高级用法
查看远程仓库的特定分支信息:
git remote show <远程仓库名称> <分支名称>
可以显示关于特定远程仓库的特定分支的详细信息,包括该分支在远程仓库中的提交历史以及与本地分支的关系。检查远程仓库的连接状态:
- 虽然
git remote -v
可以显示远程仓库的 URL,但它不能直接确定连接是否正常。可以尝试使用git ls-remote <远程仓库名称>
来检查与远程仓库的连接。这个命令会列出远程仓库的引用(分支和标签等),如果连接有问题,会显示错误信息。二、远程仓库的别名使用
在使用
git remote
命令时,可以为远程仓库设置别名,以便更方便地引用。例如,如果你有一个复杂的远程仓库 URL,或者有多个远程仓库来自不同的服务提供商,可以使用别名来区分它们。
添加带有别名的远程仓库:
git remote add <别名> <远程仓库 URL>
。- 例如,
git remote add myfork https://github.com/myusername/myrepo.git
,这里 "myfork" 就是别名。使用别名进行操作:
- 后续的拉取、推送等操作可以使用别名代替远程仓库名称。例如,
git pull myfork master
表示从别名为 "myfork" 的远程仓库拉取 "master" 分支。三、多远程仓库管理
在某些情况下,一个项目可能需要与多个远程仓库进行交互。例如,你可能有一个主仓库和一个个人的 fork 仓库。
添加多个远程仓库:
- 按照添加单个远程仓库的方法,使用不同的名称或别名添加多个远程仓库。
- 例如,先添加主仓库
git remote add origin https://github.com/main/repo.git
,然后添加个人 fork 仓库git remote add myfork https://github.com/myusername/myrepo.git
。切换远程仓库进行操作:
- 在拉取、推送或查看远程仓库信息时,可以明确指定要操作的远程仓库。
- 例如,
git fetch origin
和git push myfork master
分别对不同的远程仓库进行操作。四、注意事项
- 当使用多个远程仓库时,要注意跟踪分支的设置,确保你在进行拉取和推送操作时操作的是正确的分支和远程仓库。
- 如果远程仓库的结构或权限发生变化,可能需要更新本地的远程仓库配置。例如,如果远程仓库添加了新的分支保护规则,可能会影响你的推送操作。
- 在删除远程仓库之前,确保你已经备份了重要的提交和数据,因为删除操作是不可逆的。
git push
在 Git 中,
git push
命令用于将本地仓库的提交推送到远程仓库。以下是其具体使用方法:一、基本语法
git push <远程仓库名称> <本地分支名称>:<远程分支名称>
例如,
git push origin master:master
表示将本地的 "master" 分支推送到远程仓库的 "master" 分支。如果本地分支和远程分支名称相同,可以简化为git push origin master
。二、常用选项
-u
或--set-upstream
:
- 作用:设置本地分支跟踪远程分支。在第一次推送时使用这个选项可以建立本地分支和远程分支的跟踪关系,后续可以直接使用
git push
或git pull
而无需指定远程分支名称。- 示例:
git push -u origin master
。
-f
或--force
:
- 作用:强制推送,覆盖远程仓库上的历史记录。这是一个危险的操作,应该谨慎使用,因为它可能会导致其他人的工作丢失。只有在你确定知道自己在做什么并且有充分理由的情况下才使用。
- 示例:
git push -f origin master
。三、注意事项
在推送之前,最好先拉取(
git pull
)远程仓库的最新变化,以避免冲突。如果有冲突,需要解决冲突后才能进行推送。如果远程仓库有分支保护规则,可能需要特定的权限才能进行推送。例如,在一些团队项目中,只有特定的人员可以推送某些分支。
推送操作会将你的本地提交永久地记录在远程仓库中,所以要确保你的提交是经过测试和审查的。
当多人协作开发时,频繁的推送可能会导致其他人在拉取时出现冲突。在推送之前,可以与团队成员沟通,协调好开发进度,以减少冲突的发生。
git pull
在 Git 中,
git pull
命令用于从远程仓库获取最新的提交并合并到当前分支。以下是其具体使用方法:一、基本语法
git pull <远程仓库名称> <远程分支名称>
例如,
git pull origin master
表示从名为 "origin" 的远程仓库拉取 "master" 分支的最新提交并合并到当前分支。如果当前分支已经设置了跟踪远程分支的关系,可以直接使用git pull
,无需指定远程仓库和分支名称。二、工作原理
git pull
实际上是两个命令的组合:git fetch
和git merge
。
git fetch
:从远程仓库获取最新的提交,但不会自动合并到当前分支。它只是将远程仓库的分支更新到本地的远程跟踪分支上。git merge
:将获取到的远程分支合并到当前分支。三、常用选项
-r
或--rebase
:
- 作用:使用变基(rebase)而不是合并来整合远程分支的变化。变基会将本地分支的提交在远程分支的基础上重新应用,使得提交历史更加线性。
- 示例:
git pull -r origin master
。
--no-commit
:
- 作用:执行合并操作但不自动提交。这允许你在合并后检查更改并手动决定是否提交。
- 示例:
git pull --no-commit origin master
。四、注意事项
在执行
git pull
之前,最好先使用git status
查看当前工作区的状态,确保没有未保存的更改或冲突。如果拉取过程中出现冲突,Git 会停止合并并提示你解决冲突。解决冲突后,需要使用
git add
将解决后的文件添加到暂存区,然后使用git commit
提交合并结果。当多人协作开发时,频繁的拉取可以确保你的本地分支始终与远程仓库保持同步,但也可能引入新的问题或冲突。在拉取之前,可以与团队成员沟通,了解远程仓库的变化情况,以便更好地处理可能出现的问题。
git fetch
在 Git 中,
git fetch
命令用于从远程仓库获取最新的提交,但不会自动合并到当前分支。以下是其具体使用方法:一、基本语法
git fetch <远程仓库名称>
例如,
git fetch origin
会从名为 "origin" 的远程仓库获取最新的提交。二、作用详解
更新远程跟踪分支:
- 当执行
git fetch
时,Git 会将远程仓库的分支信息下载到本地,并更新本地的远程跟踪分支。这些远程跟踪分支通常以 "remotes/< 远程仓库名称>/< 分支名称 >" 的形式命名。例如,如果远程仓库有一个 "master" 分支,执行git fetch
后,本地会有一个 "remotes/origin/master" 分支来跟踪远程的 "master" 分支。不影响当前分支:
git fetch
不会改变你的当前工作分支状态。它只是获取远程仓库的最新提交信息,让你可以在决定是否合并这些提交之前查看它们。三、常用选项
--all
:
- 作用:从所有已配置的远程仓库获取更新。如果你的项目配置了多个远程仓库,这个选项可以一次性从所有远程仓库获取最新提交。
- 示例:
git fetch --all
。
--prune
:
- 作用:删除本地不再存在于远程仓库的远程跟踪分支。如果远程仓库删除了一些分支,使用这个选项可以同步本地的远程跟踪分支列表,保持与远程仓库一致。
- 示例:
git fetch --prune origin
。四、注意事项
git fetch
只是获取远程仓库的提交信息,不会自动合并到你的工作分支。如果你想要将远程的提交合并到当前分支,可以使用git merge
或git rebase
命令。在执行
git fetch
之前,确保你有网络连接到远程仓库,并且有足够的权限获取更新。如果你的项目有多个远程仓库,要注意区分不同远程仓库的分支信息,以免混淆。可以使用
git remote -v
查看已配置的远程仓库及其 URL。
git log
在 Git 中,
git log
命令用于查看提交历史记录。以下是其具体使用方法:一、基本语法
git log
执行这个命令后,会显示项目的提交历史,包括提交的哈希值、作者、日期和提交消息。
二、常用选项
-n
:
- 作用:显示最近的 n 次提交。例如,
git log -n 5
将显示最近的 5 次提交。- 示例:你可以快速查看最近的几次提交,了解项目的近期变化。
--author=<作者名字>
:
- 作用:筛选出特定作者的提交。例如,
git log --author="John Doe"
将只显示由 "John Doe" 提交的历史记录。- 示例:当你想查看特定开发者的贡献时很有用。
--grep=<关键词>
:
- 作用:根据提交消息中的关键词进行筛选。例如,
git log --grep="fix bug"
将显示包含 "fix bug" 关键词的提交。- 示例:帮助你快速找到与特定问题修复或功能相关的提交。
--oneline
:
- 作用:以简洁的格式显示提交历史,每个提交只显示一行,包括提交哈希值和提交消息的简短摘要。
- 示例:
git log --oneline
可以让你在一屏中看到更多的提交信息,快速浏览项目的历史。
--graph
:
- 作用:以图形的方式显示提交历史,展示分支的合并和发展情况。
- 示例:
git log --graph
可以让你更直观地了解分支的结构和发展脉络。
--decorate
:
- 作用:显示提交所涉及的分支和标签信息。
- 示例:有助于了解每个提交在分支和标签体系中的位置。
三、注意事项
git log
命令显示的提交历史是按照时间顺序倒序排列的,最新的提交在最上面。你可以结合多个选项一起使用,以满足特定的查询需求。例如,
git log --oneline --author="Jane Smith" --grep="feature"
可以同时筛选特定作者和关键词,并以简洁格式显示提交历史。如果项目的提交历史非常庞大,
git log
可能会输出很多信息。你可以使用管道和其他工具(如less
或more
)来逐页查看输出,例如git log | less
。
git branch
在 Git 中,
git branch
命令用于管理分支。以下是其具体使用方法:一、查看分支
git branch
:
- 作用:列出本地仓库中的所有分支。当前所在的分支会在前面标有一个 "*" 号。
- 示例:执行该命令后,可能会看到类似 "* master""develop" 这样的输出,表示当前在 "master" 分支,本地还有一个 "develop" 分支。
二、创建分支
git branch <分支名称>
例如,
git branch new_feature
会创建一个名为 "new_feature" 的分支。新创建的分支会指向当前所在分支的同一提交。三、切换分支
git checkout <分支名称>
例如,
git checkout new_feature
会切换到 "new_feature" 分支。切换分支后,你的工作目录会反映出该分支上的文件状态。四、删除分支
删除本地分支:
git branch -d <分支名称>
:用于删除已经合并到当前分支的本地分支。如果分支未被合并,会提示错误,除非使用 "-D" 选项强制删除。- 例如:
git branch -d new_feature
尝试删除 "new_feature" 分支,如果该分支已合并到当前分支,则成功删除;否则会提示错误信息。删除远程分支:
git push <远程仓库名称> --delete <分支名称>
:用于删除远程仓库中的分支。- 例如:
git push origin --delete new_feature
会删除远程仓库 "origin" 上的 "new_feature" 分支。五、重命名分支
- 先删除原分支名称:
git branch -m <原分支名称> <新分支名称>
:用于在本地重命名分支。如果分支有未提交的更改,可能会导致错误,需要先提交或暂存更改。- 例如:
git branch -m old_name new_name
将本地分支 "old_name" 重命名为 "new_name"。六、注意事项
在删除分支之前,确保你不再需要该分支上的任何未合并的更改。如果不确定,可以先使用
git log
查看分支的提交历史,或者使用git diff
比较分支之间的差异。当切换分支时,确保你的工作区没有未提交的更改,或者将更改暂存起来,以免丢失工作。如果有未提交的更改并且尝试切换分支,Git 会提示你要么提交更改,要么暂存更改。
创建分支时,最好给分支取一个有意义的名称,以便于识别分支的用途。例如,"feature/login-improvement" 表示一个用于改进登录功能的分支。