Git 常用命令解析git 常用命令解析 初始化仓库 git init 克隆仓库 把需要克隆的仓库 克隆到指定的目录 r
git 常用命令解析
初始化仓库
git init
描述:
使用当前目录作为 Git 仓库,我们只需使它初始化。
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
- 该命令执行完后会在当前目录生成一个 .git 目录。使用我们指定目录作为Git仓库。
git init
git init <directory>
这个命令是在根目录创建一个独立的仓库,而根目录
不需要执行
git init 命令,比如我的根目录为root
,我在root 下
执行 git init newrepo 那么root
文件夹下就会出现一个newrepo
的仓库,而这个仓库是个独立的仓库,并且也不需要执行 ==git init== 进行初始化;我再次在root
根目录下执行 git init newFile 那么root
根目录下又会多出一个名为newFile
的独立的仓库,并且也不需要执行 git init 进行初始化; 执行命令之后 目录如下:root/ ├── newrepo/ │ ├── .git/ # newrepo 目录中的 Git 仓库 │ └── ... # 其他项目文件 ├── newFile/ │ ├── .git/ # newFile 目录中的 Git 仓库 │ └── ... # 其他项目文件
克隆仓库
git clone <repo>
把需要克隆的仓库 克隆到指定的目录
git clone <repo> <directory>
- repo Git 仓库
- directory 本地目录
切换分支
git checkout '你要去的分支名称'
一般我们克隆了仓库代码之后,默认的
master
分支,一般情况下我们要切换到develop
主分支上去,才能看到最新的完整的代码;develop
分支应该是代码存放的分支(具体的话 按照公司的来,这里说的时默认的情况下);
创建并切换分支
git checkout -b '新建分支名称'
这个命令是
创建并切换到
我们新建的分支里去;此时 你上一个分支的代码将会存在 你新建的这个分支里;不需执行git pull
重新拉取; 然而当我们开发新的需求,或者更改某些BUG时,一般是要新建一个分支的,并切换到这个分支上;以免破环develop
主分支;
将更改提交到暂存区:
git add .
- 作用:
git add .
会将当前目录下的所有文件(包括子目录中的文件)的所有更改添加到 Git 的暂存区(staging area)。- 细节:
- 暂存区是一个临时存储区域,它记录了哪些文件和修改将包含在下一次的提交中。
.
是当前目录的符号,意味着将所有在当前目录及其子目录中的修改、删除或新建的文件添加到暂存区。- 这个命令不会将未追踪(untracked)的文件(即从未被
git add
过的文件)自动添加到暂存区,除非这些文件已经被追踪。举例:
- 修改了
file1.js
和file2.html
。- 新建了
file3.css
。- 删除了
file4.txt
。运行
git add .
后,这些文件的修改、新增和删除都会被添加到暂存区,为下一个提交做准备。
将暂存区的更改提交到本地仓库
git commit -m '描述'
作用:
git commit -m '描述'
会将暂存区中的所有更改提交到本地仓库,并创建一个带有描述信息的快照(commit)。细节:
- 这个命令会把所有已经在暂存区中的更改记录为一次提交(commit),这些更改随后可以推送到远程仓库。
-m '描述'
参数用于提供本次提交的简短描述或说明。这应该是对所做更改的简洁描述,帮助理解本次提交的目的和内容。- 提交是一个不可变的操作,它创建一个新的快照,可以在以后查看或恢复。
拉取最新代码
git pull / git pull origin '远程分支名称'
git pull
运行
git pull
命令时,Git 会执行以下操作:
- 识别当前分支的上游分支:
- Git 会从配置中读取当前分支的上游分支(tracking branch)。
- 这通常是当前分支从远程仓库派生的分支(如
origin/main
或origin/develop
)。- 执行
git fetch
:
- 从远程仓库拉取(fetch)上游分支的最新更新到本地仓库的
FETCH_HEAD
。- 执行
git merge
:
- 将
FETCH_HEAD
的内容合并到当前分支。例如,如果你的当前分支是
main
并且它的上游分支是origin/main
,运行git pull
时会从origin/main
拉取更新并合并到本地main
分支。
git pull origin
运行
git pull origin <分支名称>
时,Git 会执行以下操作:
- 拉取指定远程分支:
- 从远程仓库
origin
上拉取指定的<分支名称>
。- 例如,
git pull origin feature-branch
会从origin
拉取feature-branch
分支的最新更新。- 合并到当前分支:
- Git 会将拉取到的远程分支的内容合并到你当前的本地分支中。
- 比如,如果你在
main
分支上运行git pull origin feature-branch
,feature-branch
的内容将被合并到main
。区别
git pull
:
- 使用当前分支的上游分支作为默认拉取目标。
- 适合于同步当前分支与其关联的远程分支。
git pull origin <分支名称>
:
- 拉取指定的远程分支,而不是默认的上游分支。
- 适用于需要从远程仓库的特定分支拉取更新的情况。
设置上游分支
git push --set-upstream origin feature-branch / git branch --set-upstream-to=origin/feature-branch
设置上游分支之后,后续操作这个分支的代码之后,pull / push 无需在 加上
origin <branch-name>
;(远程分支不存在)首次推送设置上游分支
git checkout -b <branch-name> # 修改代码之后 提交到暂存区 git add . # 把暂存区的文件推送到本地仓库 git commit -m '描述' # 把本地仓库的代码推送到远程分支,并设置 上游分支 git push --set-upstream origin <branch-name> # - 后续 只需 git pull / git push 即可
(远程分支已存在)设置上游分支
# 切换 要 设置上游分支的 分支里面去; git checkout feature-branch # 设置 上游分支 git branch --set-upstream-to=origin/feature-branch
验证当前分支的上游分支
要查看当前分支是否已经设置了上游分支,可以运行以下命令
:git branch -vv
如果显示类似
[origin/feature-branch]
的信息,说明该分支已经设置了上游分支。
推送远程分支(将本地提交推送到远程仓库)
git push origin '远程分支名称'
将本地仓库中的提交推送到远程仓库的指定分支,更新远程分支的内容。
推荐 完成的推送流程
# 1.克隆仓库
git cloen '仓库地址[https||ssh]' (仓库代码 目前 clone 的是 master 分支的)
# 2.切换分支(一般克隆之后都在 master分支上,这里我的代码在 develop 主分支上,我要拉取最新的代码)
git checkout develop (仓库代码 目前是 develop 主分支的代码)
# 3.在你工作之前(新需求/改bug)都会创建并切换一个新的分支的,再次之前我们需要确保我们的 develop 分支的代码是最新的;
git pull origin develop | git pull (再次拉取 develop 的代码,确保你拉的代码是最新的,以减少冲突的概率)
# 4.确定了新的功能之后 开始创建并切换一个新的 功能分支
git checkout -b '分支名称'
# 5.对文件做了一些更改,删除或者添加操作;将最新的改动添加到暂存区;
git add . ( . 是当前目录的符号,意味着将所有在当前目录及其子目录中的修改、删除或新建的文件添加到暂存区;)
# 6.将暂存区提交的更改保存到本地仓库
git commit -m '描述'
# 7. 当前分支 拉取主分支(develop)的代码 以保证是最新代码;
git pull origin develop(默认主分支,具体主分支以仓库为准)
# 8.如果执行以上步骤没有冲突的话,则执行这个命令,推送到远程仓库;否则先解决冲突在进行推送;
git push origin <指定推送的分支名称>
# 或者 [这是 首次推送 并 设置上游分支;后续再次分支上 只需要 git pull / git push 即可]
git push --set-upstream origin <branch-name>
合并分支
git merge '被合并的分支名称'
合并分支的流程
首先合并的主分支一般为
develop
,那么在我们合并分支时,首先要注意的是我们当前所在的分支是否为develop
分支,如果不是evelop
分支的话,请执行git checkout develop
切换到develop
分支上,然后我们在 执行git merge
要被合并的分支名称`,合并完成之后,我们合并的代码将会保存到本地,需要先执行
git pull
,(因为你不知道别人是否更新了代码,所以要先拉取再推送)拉取最新的代码,在执行git push
进行远程推送; 👍即🉑
查看本地所有分支
git branch
查看所有的本地分支,带 * 的则表示当前的分支名称
查看远程和本地的所有分支
git branch -a
列出所有本地和远程的分支,无论它们是否已经合并到当前分支。 - a 意思为 all
查看远程的所有分支
git branch -r
查看所有的远程分支
-r
是--remotes
的缩写。 远程分支是指在远程仓库(比如 GitHub、GitLab 或 Bitbucket 等)上存在的分支。 这个命令通常用来查看哪些分支存在于远程仓库,而不包括本地分支。
查看未合并分支
git branch --no-merged
列出所有未合并的分支 ⚠️不能在功能分支执行此命令,需要在
dev
分支或者其他的主分支执行此命令
查看已合并的分支
git branch --merged
列出已经合并到当前分支的本地分支
⚠️不能在功能分支执行此命令,需要在
dev
分支或者其他的主分支执行此命令
删除本地分支
git branch -d <branch-name> / git branch -D <branch-name>
git branch -D <branch-name>
如果你尝试删除一个还没有被合并到任何其他分支上的分支,
git branch -d
命令会失败,并显示一个错误消息,防止你丢失未合并的工作。在这种情况下,如果你确实想要删除该分支,可以使用-D
选项强制删除:
删除远程分支
git push origin -d '远程分支名称'
值得注意的是:
当您获得允许删除远程分支后,首先要切换到 主分支上(
develop
)去,然后执行命令,一般情况下要先执行git branch --merged
查看哪些分支进行了合并;或者执行git branch -r
查看所有的远程分支;确定所有的远程分支都合并之后,开始执行删除远程分支的命令git push origin -d <barnch-name>
就可以删除远程分支了;(在代码仓库中删除远程分支方便些)⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;
develop
和master
分支不要删了⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;
develop
和master
分支不要删了⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;
develop
和master
分支不要删了
回滚
待更新
转载自:https://juejin.cn/post/7420237597802577931