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
切换到目标分支
首先,切换到你希望将更改合并到的目标分支。通常,这个分支是main
或master
,但也可以是其他分支。
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>