likes
comments
collection
share

Git 常用命令解析git 常用命令解析 初始化仓库 git init 克隆仓库 把需要克隆的仓库 克隆到指定的目录 r

作者站长头像
站长
· 阅读数 46

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.jsfile2.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 会执行以下操作:

  1. 识别当前分支的上游分支
    • Git 会从配置中读取当前分支的上游分支(tracking branch)。
    • 这通常是当前分支从远程仓库派生的分支(如 origin/mainorigin/develop)。
  2. 执行 git fetch
    • 从远程仓库拉取(fetch)上游分支的最新更新到本地仓库的 FETCH_HEAD
  3. 执行 git merge
    • FETCH_HEAD 的内容合并到当前分支。

例如,如果你的当前分支是 main 并且它的上游分支是 origin/main,运行 git pull 时会从 origin/main 拉取更新并合并到本地 main 分支。


git pull origin

运行 git pull origin <分支名称> 时,Git 会执行以下操作:

  1. 拉取指定远程分支
    • 从远程仓库 origin 上拉取指定的 <分支名称>
    • 例如,git pull origin feature-branch 会从 origin 拉取 feature-branch 分支的最新更新。
  2. 合并到当前分支
    • Git 会将拉取到的远程分支的内容合并到你当前的本地分支中。
    • 比如,如果你在 main 分支上运行 git pull origin feature-branchfeature-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> 就可以删除远程分支了;(在代码仓库中删除远程分支方便些)

⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;developmaster 分支不要删了

⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;developmaster 分支不要删了

⚠️在删除远程分支的时候,不要删除别人的远程分支,别人的东西不要动;developmaster 分支不要删了

回滚

待更新

转载自:https://juejin.cn/post/7420237597802577931
评论
请登录