Java入职篇(4)——git的使用

Java入职篇(4)------git的使用

如何初始化一个Git仓库?

在现有目录中初始化一个新的Git仓库

如果已经有一个现有的项目目录,并且希望在其中初始化一个Git仓库,常常在于新项目本地建立了目录,搭了架子后。将在当前目录下创建一个新的Git仓库,并生成一个隐藏的.git目录,其中包含所有的版本控制信息。

bash 复制代码
git init

克隆一个现有的远程仓库

这是大多数的场景,从一个远程仓库开始克隆。

bash 复制代码
git clone <repository-url>

在特定目录中克隆一个远程仓库

bash 复制代码
git clone <repository-url> <directory-name>

如何查看当前仓库的状态?

bash 复制代码
git status

运行git status命令后,你会看到一些关于当前仓库状态的详细信息。比如当前分支、是否有未提交的更改、暂存区的文件未跟踪的文件、是否有合并冲突

ba 复制代码
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   file1.txt
    new file:   file2.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   file3.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    file4.txt

对应的含义:

On branch main :你当前在main分支。

Your branch is up to date with 'origin/main'. :你的本地分支与远程分支origin/main是同步的。

Changes to be committed :这些文件已经被暂存(使用git add),并将在下一次提交中被包含。

modified: file1.txt:文件file1.txt已被修改并暂存。

new file: file2.txt:文件file2.txt是新文件,已被暂存。

Changes not staged for commit :这些文件已被修改但尚未暂存(还未使用git add)。

modified: file3.txt:文件file3.txt已被修改,但尚未暂存。

Untracked files:这些文件是新文件,尚未被Git跟踪。

file4.txt:文件file4.txt是新文件,尚未被跟踪。

如何添加文件到暂存区?

添加特定目录中的文件

如果你只想添加特定目录中的文件,可以指定目录名:

bash 复制代码
git add <directory>

git add src/

添加多个文件

想一次性添加多个文件,可以列出这些文件名:

bash 复制代码
git add file1.txt file2.txt file3.txt

添加所有更改的文件

如果你想将所有已更改和未跟踪的文件添加到暂存区

bash 复制代码
git add .

或者:

git add -A

这两个命令的作用是相同的,都会将当前目录及其子目录下的所有更改和未跟踪的文件添加到暂存区。

添加特定目录中的文件

如果你只想添加特定目录中的文件,可以指定目录名:

bash 复制代码
git add <directory>

git add src/

添加匹配特定模式的文件

想添加匹配特定模式的文件,可以使用通配符,这将添加当前目录下所有扩展名为.txt的文件。

bash 复制代码
git add *.txt

如何提交更改?

确保文件已添加到暂存区

在提交之前,确保你已经使用git add命令将需要提交的文件添加到暂存区。

提交更改

使用git commit命令提交更改。

提交带有提交信息

最常见的方式是使用-m选项直接在命令行中提供提交信息:

bash 复制代码
git commit -m "你的提交信息"
git commit -m "修复了登录界面的错误"

提交并打开默认编辑器编写提交信息

如果你不使用-m选项,Git会打开默认的文本编辑器(如 Vim、Nano 等),让你编写详细的提交信息:

bash 复制代码
git commit

在编辑器中输入提交信息,保存并关闭编辑器即可完成提交。

如何查看提交历史?

基本的提交历史查看

bash 复制代码
git log

这将显示所有的提交记录,包括提交的哈希值、作者信息、提交时间和提交信息。

查看简洁的提交历史

bash 复制代码
git log --oneline

更简洁的提交历史,这将以单行格式显示每个提交,通常包括提交的哈希值和提交信息的第一行。

查看特定数量的提交

如果你只想查看最近几次提交,可以使用-n选项,这将显示最近的5次提交。

bash 复制代码
git log -n 5

如何创建和切换分支?

创建分支

使用git branch命令可以创建一个新的分支:

bash 复制代码
git branch <分支名>
git branch feature-jichi

切换分支

使用git checkout命令可以切换到另一个分支:

bash 复制代码
git checkout <分支名>
git checkout feature-jichi

创建并切换到新分支

你可以使用git checkout -b命令在创建新分支的同时切换到该分支:

bash 复制代码
git checkout -b <分支名>
git checkout -b feature-jichi

如何合并分支?

确保工作区干净

在合并分支之前,最好确保当前工作区是干净的,即没有未提交的更改。

bash 复制代码
git status

切换到目标分支

首先,切换到你希望将更改合并到的目标分支。通常,这个分支是mainmaster,但也可以是其他分支。

bash 复制代码
git checkout main

合并分支

使用git merge命令将另一个分支的更改合并到当前分支。例如,要将分支名分支的更改合并到main分支:

bash 复制代码
git merge <分支名>

处理合并冲突(如果有)

在合并过程中,可能会遇到冲突。Git会提示你哪些文件有冲突,并标记冲突部分。你需要手动编辑这些文件,解决冲突,然后标记冲突已解决:

bash 复制代码
# 编辑有冲突的文件,解决冲突
git add <冲突文件>
# 完成所有冲突解决后,提交合并结果
git commit

合并完成

合并完成后,你可以使用git log查看提交历史,确认合并是否成功。

如何删除分支?

删除已合并的分支

如果分支上的工作已经合并到其他分支(例如main),可以使用以下命令删除本地分支:

bash 复制代码
git branch -d <分支名>

强制删除未合并的分支

如果分支上的工作尚未合并,你仍然可以强制删除该分支,但这可能会导致丢失未合并的更改。使用以下命令强制删除分支:

bash 复制代码
git branch -D <分支名>

删除远程分支

推送删除指令到远程仓库

要删除远程分支,需要使用git push命令,并指定要删除的远程分支名。语法如下:

bash 复制代码
git push <远程名> --delete <分支名>

如何添加远程仓库?

准备远程仓库的URL

首先,你需要获取远程仓库的URL。这个URL可以是HTTPS、SSH或者Git协议。

添加远程仓库

使用git remote add命令添加远程仓库。语法如下:

bash 复制代码
git remote add <远程名> <仓库URL>

验证远程仓库

添加远程仓库后,可以使用git remote -v命令验证远程仓库是否添加成功:

bash 复制代码
git remote -v

输出将显示已添加的远程仓库的URL:

bash 复制代码
origin  <仓库URL> (push)

推送到远程仓库

如果你已经有一些提交在本地仓库,可以使用git push命令将这些更改推送到远程仓库:

bash 复制代码
git push -u origin <分支名>

从远程仓库拉取更新

使用git pull命令从远程仓库拉取更新:

bash 复制代码
git pull origin <分支名>

如何回滚到之前的提交?

使用git reset

git reset是一种强力的方法,可以用来移动当前分支的HEAD到指定的提交。根据不同的选项,git reset可以影响工作目录和暂存区。

软重置(保留工作目录和暂存区的更改)
bash 复制代码
git reset --soft <commit>

这将把当前分支的HEAD移动到指定的提交,但保留工作目录和暂存区的更改。

混合重置(保留工作目录的更改,但重置暂存区)
bash 复制代码
git reset --mixed <commit>

这将把当前分支的HEAD移动到指定的提交,但保留工作目录和暂存区的更改。

混合重置(保留工作目录的更改,但重置暂存区)
bash 复制代码
git reset --mixed <commit>

这是git reset的默认行为。它会把当前分支的HEAD移动到指定的提交,并重置暂存区,但保留工作目录的更改。

硬重置(丢弃工作目录和暂存区的更改)
bash 复制代码
git reset --hard <commit>

这将把当前分支的HEAD移动到指定的提交,并丢弃工作目录和暂存区的所有更改。

使用git revert

git revert用于创建一个新的提交,它会撤销指定的提交,而不是直接修改提交历史。这在需要保留提交历史的场景中非常有用。

bash 复制代码
git revert <commit>

这将创建一个新的提交,撤销指定的提交。

如何暂存当前工作?

在Git中,git stash命令允许你暂时保存当前工作目录和暂存区的更改,以便你可以切换分支或进行其他操作而不会丢失这些更改。后面你可以恢复这些暂存的更改。

基本语法

bash 复制代码
git stash

这将保存当前工作目录和暂存区的更改,并将工作目录恢复到上一次提交的干净状态。

暂存并添加描述信息
bash 复制代码
git stash save "Your stash message"

你可以添加一条描述信息来标记这次暂存,以便以后更容易识别。

暂存未跟踪的文件和忽略的文件

默认情况下,git stash不会暂存未跟踪(untracked)和忽略(ignored)的文件。如果你想包括这些文件,可以使用-u-a选项。

bash 复制代码
git stash -u  # 包括未跟踪的文件
git stash -a  # 包括未跟踪和忽略的文件

查看暂存列表

你可以使用git stash list来查看当前所有的暂存记录。

bash 复制代码
git stash list

这将显示所有暂存的条目,每个条目都有一个唯一的标识符,例如stash@{0}

恢复暂存的工作

恢复最近的暂存
bash 复制代码
git stash apply

这将应用最近的暂存记录,但不会删除它。

恢复并删除最近的暂存
bash 复制代码
git stash pop

这将应用最近的暂存记录并删除它。

恢复特定的暂存
bash 复制代码
git stash apply stash@{n}

删除暂存记录

删除最近的暂存
bash 复制代码
git stash drop
删除特定的暂存
bash 复制代码
git stash drop stash@{n}
删除所有暂存记录
bash 复制代码
git stash clear

创建分支并应用暂存

如果你想在新的分支上应用暂存的更改,可以使用git stash branch命令。

BASH 复制代码
git stash branch <branch-name>
相关推荐
2401_8848107412 分钟前
maven笔记
java·笔记·maven
霸王龙的小胳膊13 分钟前
SpringMVC-登录校验
java·mvc
字节源流14 分钟前
【SpringMVC】常用注解:@PathVariable
java·开发语言·servlet
tanyongxi6619 分钟前
Linux 中 Git 使用指南:从零开始掌握版本控制
linux·git
小安同学iter19 分钟前
SpringMVC(五)拦截器
java·开发语言·spring boot·spring·java-ee
栀栀栀栀栀栀32 分钟前
JVM 2015/3/15
java·开发语言·jvm
羊思茗52039 分钟前
Spring Boot中@Valid 与 @Validated 注解的详解
java·spring boot·后端
老朋友此林1 小时前
Redisson 实现分布式锁源码浅析
java·redis·分布式
爱分享的淘金达人1 小时前
25年教师资格认定材料及认定详细流程‼
java·python·考研·小程序·tomcat