git详细下令

打印 上一主题 下一主题

主题 1008|帖子 1008|积分 3024

1. 前言

Git是一种版本控制系统,它常用于以下方面:
   

  • 代码管理:Git可以跟踪代码的每一次更改,帮助开发者检察汗青记录、比力差别版本之间的差别。
  • 多人协作:Git支持多个开发者同时在同一个项目上工作,通太过支管理功能,开发者可以独立工作,然后合并他们的更改。
  • 错误追踪:当代码出现问题时,Git可以帮助开发者快速定位问题发生的时间和缘故起因。
  • 自动化测试:Git可以与持续集成/持续部署(CI/CD)工具集成,自动化测试代码更改。
  • 远程仓库管理:Git可以与GitHub、GitLab、Bitbucket等远程仓库服务集成,方便代码的共享和备份。
  • 版本控制:Git可以创建差别的版本,方便在差别时间点对代码进行快照。
  • 分支管理:Git的分支利用非常快速和简单,支持创建、合并、删除和比力分支。
  • 文档管理:除了代码之外,Git也可以用于管理文档和其他类型的文件。
  • 实验和原型开发:开发者可以在分支上实验新想法,而不影响主分支的稳固性。
  • 代码检察:Git支持代码检察流程,帮助团队成员检察和讨论代码更改。
  11 .备份和规复:Git提供了强大的备份和规复功能,确保代码安全。
  

  • 跨平台支持:Git可以在多种利用系统上运行,包罗Linux、macOS和Windows。
  Git的使用不仅限于软件开发,它也可以用于其他需要版本控制的范畴,如文档编写、设置文件管理等。
  2. Git安装

在使用Git前我们需要先安装 Git,Git 现在支持 Linux/Unix,Mac和 Windows 平台上运行,下载地址:http://git-scm.com/downloads
本文windows下安装,教程参考博主:https://blog.csdn.net/mukes/article/details/115693833
3. 公钥

3.1 天生公钥

要设置下令行 Git 使用 SSH 密钥,起首需要天生一对 SSH 密钥。

  • 打开下令行终端,并输入以下下令
  1. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
复制代码
其中,your_email@example.com 应替换为你的邮箱地址。

  • 随后系统会提示你输入密钥文件的生存路径,默认情况下会天生在用户目录的 .ssh 子目录下,文件名为 id_rsa 和 id_rsa.pub,可以按回车键使用默认路径和文件名。
  • 接下来,系统会要求你输入一个密码,这个密码用于掩护私钥文件,在每次使用私钥时都需要输入。假如你希望方便地进行远程利用,可以选择不设置密码,直接按回车键跳过。
  • 完成以上步骤后,系统会天生一对 SSH 密钥,其中 id_rsa 是私钥文件,而 id_rsa.pub 则是公钥文件。
3.2 设置SSH 密钥



  • 打开下令行终端在公钥位置检察公钥(天生时有默认位置):cat XXX 大概直接打开文件检察。
  • 再到 github 添加公钥的地方 点击 “Add SSH Key” 或雷同的按钮,并将刚才复制的公钥粘贴到相应的输入框中。
  • 接下来,打开下令行终端,并使用以下下令来设置 Git 使用 SSH 密钥:
  1. git config --global user.email "your_email@example.com"
  2. git config --global user.name "Your Name"
  3. git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa"
复制代码

  • 现在,你就可以使用下令行 Git 来进行远程利用了,而无需每次都输入密码。
4. 设置用户名和邮箱

在 Git 中设置用户名和邮箱信息非常重要,主要缘故起因如下:
   

  • 身份识别:Git 使用设置的用户名和邮箱作为提交(commit)时的作者信息,这有助于识别是谁进行了代码的更改。
  • 责任归属:当多人协作开发同一个项目时,正确的用户名和邮箱可以帮助团队成员了解每次提交的来源,明确责任归属。
  • 记录汗青:Git 的提交汗青记录中包含了用户名和邮箱信息,这有助于在回首项目汗青时,快速找到干系责任人。
  • 沟通协调:假如项目中出现问题,大概需要讨论某个特定的提交,拥有正确的联系信息可以方便团队成员之间的沟通和协调。
  • 贡献记录:对于开源项目,贡献者的用户名和邮箱信息会被记录在项目的贡献者列表中,这是对贡献者的承认。
  • 安全性:设置用户名和邮箱可以作为 Git 利用的根本验证,固然不是严酷的安全步伐,但有助于维护利用的透明性。
  • 工具集成:许多集成开发情况(IDE)和持续集成/持续部署(CI/CD)工具会使用 Git 设置的用户名和邮箱信息来表现提交者信息。
  • 邮件关照:一些 Git 服务和工具会根据提交中的作者信息发送邮件关照,正确的邮箱地址确保了关照的正确性。
  1. git config --global user.name "Your Name"
  2. git config --global user.email "your_email@example.com"
复制代码
这里的 “Your Name” 是你希望在提交汗青中表现的名字,“your_email@example.com” 是你希望与提交关联的电子邮件地址。使用 --global 选项设置的用户名和邮箱会应用于你盘算机上所有的 Git 仓库,你也可以在特定仓库中使用不带 --global 选项的下令来为该仓库单独设置用户名和邮箱。
检察当前 Git 设置:git config --list
编辑Git设置文件:git config -e [–global]
查抄关联的远程仓库:git remote -v
5. git常用下令

5.1 创建仓库下令

5.1.1 git init下令

   git init 是 Git 下令行工具中的一个下令,它的作用是初始化一个新的 Git 仓库。当你在一个项目目录中运行 git init 下令时,Git 会在该目录中创建一个名为 .git 的隐藏文件夹,这个文件夹包含了所有 Git 仓库所需的元数据和对象数据库。
详细来说,git init 下令实行后,会完成以下几个步骤:
  

  • 创建 .git 目录:在当前目录下创建一个名为 .git 的隐藏文件夹,这是 Git 仓库的设置和元数据存储的地方。
  • 设置文件:在 .git 目录中创建设置文件,如 config 文件,用于存储仓库的设置信息,比方仓库的名称、作者信息等。
  • 对象数据库:初始化 Git 的对象数据库,用于存储所有提交的快照和干系数据。
  • 引用日记:创建引用日记,记录当前分支的指向以及其他重要的引用信息。
  • 钩子脚本:固然 git init 不会自动创建钩子脚本,但 .git 目录中会包含钩子脚本的模板,开发者可以根据需要创建和使用这些脚本。
  • 准备跟踪文件:此时,仓库中还没有任何文件被跟踪。你可以使用 git add 下令将文件添加到仓库中,然后使用 git commit 下令进行提交。
  使用 git init 初始化仓库是开始使用 Git 进行版本控制的第一步(你希望仓库在哪个目录下就在哪个目录下 git init)。一旦仓库初始化完成,你就可以开始添加文件、提交更改,并享受 Git 提供的所有版本控制功能。
5.1.2 git clone[url] 下令

   git clone 下令用于从现有的 Git 仓库(可以是本地的也可以是远程的)复制一个完整的副本到一个新的目录。这个副本包含了所有分支、标签和提交汗青记录。以下是 git clone 下令的一些关键作用:
  

  • 创建本地副本:从远程仓库克隆一个完整的本地副本,包罗所有的分支、标签和提交记录。
  • 保留汗青信息:克隆的仓库包含了原始仓库的所有汗青信息,可以检察任何时间点的代码状态。
  • 开始新的开发:开发者可以通过克隆仓库来开始新的项目开发,大概为现有项目贡献代码。
  • 备份和迁徙:可以用来备份远程仓库,大概将仓库从一个位置迁徙到另一个位置。
  • 分支管理:克隆的仓库中包含了所有分支,可以方便地切换到差别的分支进行工作。
  • 离线工作:克隆的仓库是完全独立的,可以在没有网络毗连的情况下进行工作。
  • 与远程仓库同步:克隆后,可以使用 git fetch、git pull 或 git push 等下令与远程仓库同步更改。
  • 创建多个工作情况:可以克隆同一个仓库到差别的目录,用于差别的开发情况或目的。
  比方,克隆一个名为 example 的远程仓库到当前目录:
git clone https://github.com/user/example.git
   详细使用:
1. 克隆到特定目录:你可以使用 --name 选项为克隆的目录指定一个差别的名称:
git clone https://github.com/user/repo.git 【my_directory_name】
这会在当前目录下创建一个名为 my-directory-name 的目录(或指定哪个目录),并将仓库内容克隆到这个目录中。
2. 克隆特定分支
默认情况下,git clone 会克隆所有分支。假如你想克隆特定的分支,可以使用 --branch选项:
git clone --branch https://github.com/user/repo.git
这将只克隆指定的分支(将repo仓库的某分支克隆过来)。
3. 限制克隆深度
假如你不需要整个汗青记录,可以使用 --depth 选项来限制克隆的提交数量。这在节省时间和带宽方面非常有用:
git clone --depth 1 https://github.com/user/repo.git
这将只克隆最新的提交。
4. 克隆子模块
假如仓库包含子模块,你可以使用 --recurse-submodules 选项来同时克隆子模块:
git clone --recurse-submodules https://github.com/user/repo.git
5. 设置远程仓库
使用 --origin 选项可以为克隆的远程仓库设置差别的名称:
git clone --origin [自定义仓库名字] https://github.com/user/repo.git
这将设置远程仓库的名称为 自定义仓库名字 而不是默认的origin。
  5.2 add 增加 / 删除文件 (跟踪文件)

本地修改的代码需要先添加 add 到暂存区然后再commit 到本地仓库
下令阐明git add [file1] [file2] …添加指定文件到暂存区*git add .txt匹配加入git add [dir]添加指定目录到暂存区,包罗子目录git add .添加当前目录的所有文件到暂存区git rm [file1] [file2] …删除工作区文件,而且将这次删除放入暂存区git rm --cached [file]制止追踪指定文件,但该文件会保留在工作区git mv [file-original] [file-renamed]改名文件,而且将这个改名放入暂存区 5.3 代码提交

下令阐明git commit -m “阐明”提交暂存区到仓库区git commit [file1] [file2] … -m [message]提交暂存区的指定文件到仓库区git commit -a提交工作区自前次commit之后的变化,直接到仓库区git commit -v提交时表现所有diff信息git commit --amend -m [message]使用一次新的commit,替代上一次提交
假如代码没有任何新变化,则用来改写上一次commit的提交信息git commit --amend [file1] [file2] …重做上一次commit,并包罗指定文件的新变化 5.4 分支

远程仓库有差别的分支,提交代码可以提交到 主分支 还可以在别的分支,

然后本地代码也可以有差别分支,可以在差别分支写代码。
   git 为什么创建新分支?
  

  • 隔离开发:创建新分支可以让你在隔离的情况中开发新功能或进行实验,而不会影响主分支(通常是 master 或 main)的稳固性(包管主分支能正常运行)。
  • 特性开发:每个特性或用户故事可以在单独的分支上开发,这样有助于组织代码和跟踪进度(可单独只验证你的功能)。
  • 错误修复:创建分支来修复特定错误,可以集中精力解决问题,同时保持主分支的代码不受干扰(假如你改的代码在主分支出错了,别的功能代码也受影响)。
  • 实验性变更:在新分支上实验实验性变更,假如结果不满意,可以轻易地扬弃该分支,而不会影响其他工作。(分支的代码假如修改导致错误太多,可扬弃该分支代码,重新拉一个分支)
  • 代码检察:在新分支上开发的代码可以在合并到主分支前进行代码检察,确保代码质量和项目标准。
  • 多人协作:在团队中工作时,差别的开发者或团队可以在差别的分支上工作,减少直接在主分支上的辩论。
  • 特性开关:有时使用分支作为特性开关,通过切换分支来控制功能的开启或关闭。(切换分支可选择是否增加这个功能
  • 准备发布:在发布新版本前,可以在新分支上进行终极的测试和准备,包罗更新文档和版本号。(比如在终极版本加维测日记测试功能是否正常,包管主分支代码整体整齐
  • 并行开发:允许多个开发者或团队并行工作在差别的功能或使命上,进步开发服从。(互不影响
  • 版本控制:通太过支管理差别的版本或迭代,使得在差别版本间切换和维护变得更加轻易。(这个版本有问题可切换版本
  下令阐明git branch列出所有本地分支git branch -r列出所有远程分支git branch -a列出所有本地分支和远程分支git branch [branch-name]新建一个分支,但依然停顿在当前分支git checkout -b [branch]新建一个分支,并切换到该分支git branch [branch] [commit]新建一个分支,指向指定commitgit branch --track [branch] [remote-branch]新建一个分支,与指定的远程分支建立追踪关系git checkout [branch-name]切换到指定分支,并更新工作区git checkout -切换到上一个分支git branch --set-upstream [branch] [remote-branch]建立追踪关系,在现有分支与指定的远程分支之间git merge [branch]合并指定分支到当前分支git cherry-pick [commit]选择一个commit,合并进当前分支git branch -d [branch-name]删除分支git push origin --delete [branch-name]或git branch -dr [remote/branch]删除远程分支   本地新分支合并到远程主分支要包管新分支是最新的吗?
是的,通常在将本地分支合并到远程主分支之前,需要确保本地分支是最新的。这意味着你的本地分支应该包含远程主分支上所有最新的提交。这样做可以减少合并辩论,确保代码的一致性,并使得合并过程更加顺利。
以下是确保本地分支是最新状态的步骤:
  

  • 获取远程分支的最新更改:
    使用 git fetch 下令从远程仓库拉取最新的更改。这会更新你的远程跟踪分支,比方 origin/main 或 origin/master。
  • 查抄当前状态:
    使用 git status 检察当前工作目录的状态,确保没有未提交的更改。
  • 切换到你的本地分支:
    假如你的更改在一个特定的本地分支上,使用 git checkout <你的本地分支名> 切换到该分支。
  • 合并远程主分支:
    在本地分支上,使用 git merge origin/main(或 origin/master,取决于你的远程主分支名称)将远程主分支的更改合并到你的本地分支。
  • 解决合并辩论(假如有的话):
    假如在合并过程中出现辩论,你需要手动解决这些辩论,然后使用 git add 将解决后的文件添加到暂存区,并使用 git commit 提交更改。
  • 测试更改:
    在合并完成后,进行必要的测试以确保更改没有引入新的问题。
  • 推送本地分支的更改:
    使用 git push 将你更新后的本地分支推送到远程仓库。假如你正在将更改合并到远程主分支,可能需要使用 git push origin <你的本地分支名>:main(或相应的远程主分支名称)。
  • 确保远程主分支指向正确:
    假如你直接在远程主分支上工作,确保在推送之前没有其他远程跟踪分支的更新丢失。
    通过这些步骤,你可以确保在将本地分支合并到远程主分支之前,你的本地分支已经包含了所有最新的更改,从而减少合并时的问题和辩论。
  5.5 标签tag

https://www.runoob.com/git/git-tag.html
   标签作用是什么?
Git 标签可以通俗明确为给代码打上的“书签”或“标记”,主要用途包罗:
  

  • 版本记录:就像给书的差别章节贴上标签一样,Git 标签用于记录代码的差别版本,比如软件的1.0版、2.0版等。
  • 快速定位:当你想快速找到或切换到某个特定版本的代码时,标签提供了一个方便的参考点。
  • 备份点:在进行巨大更新或更改前,可以通过打标签来作为备份,这样即使后续更新出现问题,也能快速回退。
  • 发布准备:在准备发布新版本前,打上标签可以确保团队成员都是在相同的代码基础上工作,减少出错。
  • 记录重要更新:对于项目中的重要更新或里程碑,打标签可以作为记录,方便将来回首。
  • 制止杂乱:在多人协作的项目中,标签可以帮助团队成员跟踪哪些代码是已经测试和批准的。
  • 自动化流程:在自动化的构建和部署流程中,标签可以用来指定应该部署哪些版本的代码。
  • 清晰的汗青:标签为代码的提交汗青添加了易于明确的标记,使得明确项目的发展脉络更加清晰。
  • 错误追踪:假如某个版本发现了问题,可以通过标签快速定位并修复该版本的问题。
  简而言之,Git 标签就像是一个标记,帮助你和你团队成员快速识别、访问和引用代码库中的特定点。

  • 创建新标签:
  1. git tag <tagname>   #为当前 HEAD 或指定提交创建一个简单的标签。
复制代码

  • 创建带有注释的标签:
  1. git tag -a <tagname> -m "tag message"
复制代码

  • 列出所有标签:
  1. git tag     #显示当前 Git 仓库中的所有标签列表。
复制代码

  • 删除标签 :
  1. git tag -d <tagname>    #删除本地的标签。注意,这不会从远程仓库中删除标签。
复制代码

  • 推送标签到远程仓库:
  1. git push origin <tagname>     #将指定的本地标签推送到远程仓库。
复制代码

  • 推送所有标签到远程仓库:
  1. git push --tags    #将所有本地标签推送到远程仓库。
复制代码

  • 删除远程标签:
  1. git push origin --delete <tagname>   #从远程仓库中删除指定的标签。
复制代码

  • 检察标签列表:
  1. git tag -l <pattern>   #根据模式搜索标签,<pattern> 是一个匹配标签名的搜索模式。
复制代码

  • 搜索标签:
  1. git tag --search <search-term>   #根据搜索词搜索标签名。
复制代码

  • 检察此版本所修改的内容
  1. git show v1.0
复制代码
5.6 远程同步

5.6.1 git fetch 下令

   git fetch 下令用于从远程仓库获取最新的数据,但不会自动合并到你的当前分支。这个下令会从远程跟踪分支下载所有分支的更新,但不会影响你的工作目录。
  

  • 根本的获取远程仓库更新:
    git fetch
    这个下令会从你设置的远程仓库(通常是 origin)获取所有分支的最新状态。
  • 获取特定远程仓库的更新:
    git fetch <remote_name>
    假如你有多个远程仓库,你可以指定获取哪个远程仓库的更新。比方,假如你有一个名为 upstream 的远程仓库:git fetch upstream
  • 获取特定分支的更新:
    git fetch <remote_name> <branch_name>
    这会只获取指定的远程分支(加上仓库的名字和其下的分支名)。
  • 获取所有远程跟踪分支的更新:
    git fetch --all
    这个下令会获取所有远程跟踪分支的更新,包罗你当前没有检出的分支。
  ~
5.6.2 git fetch 和 git merge 可以配合使用 (从远程仓库拉取最新的数据并合并到当前分支)

   来手动同步你的本地仓库与远程仓库。以下是详细的步骤和示例:
  

  • 第一步:获取远程仓库的最新状态:git fetch
    使用 git fetch 下令从远程仓库获取所有分支的最新状态,但不会自动合并到你的本地分支。
  • 第二步:检出你想要更新的本地分支:
    假设你想要更新本地的 main 分支,起首切换到该分支:git checkout main
  • 第三步:合并远程分支到本地分支:
    使用 git merge 下令将远程分支的更改合并到当前检出的本地分支。通常,你会合并远程的 main 分支到本地的 main 分支。
    git merge origin/main
    这里 origin/main 指的是远程仓库 origin 上的 main 分支。
  • 解决合并辩论(假如有的话):
    先解辩论
    git add <解决辩论后的文件>
    然后,完成合并过程:
    git commit -m "解决合并辩论"
  • 第四步:(可选)推送合并后的更改到远程仓库:
    假如你想要将合并后的更改推送到远程仓库,使用 git push 下令:
    git push origin main
  ~
5.6.3 git remote 下令

   在 Git 中用于管理远程仓库的引用。
  

  • 检察远程仓库列表:
    git remote -v
    这个下令会列出所有设置的远程仓库及其对应的URL。
  • 添加远程仓库:
    git remote add <remote_name> <url>
    添加一个新的远程仓库。<remote_name> 是你给远程仓库的别名,通常是 origin, 是远程仓库的URL。比方:git remote add origin https://github.com/user/repo.git
  • 获取远程仓库信息:
    git remote show <remote_name>
    这个下令会表现指定远程仓库的详细信息,包罗URL、跟踪的分支等。
  • 重命名远程仓库:
    git remote rename <old_name> <new_name>
    将远程仓库的别名从 <old_name> 改为 <new_name>。
  • 删除远程仓库:
    git remote rm <remote_name>
  • 更改远程仓库的URL:
    git remote set-url <remote_name> <new_url>
  ~
5.6.4 git pull 下令

   在 Git 中用于从远程仓库拉取最新的数据并合并到当前分支。这个下令现实上是 git fetch 后跟 git merge 的快捷方式。
  

  • 根本的拉取更新:
    git pull
    这个下令会从远程仓库(默以为 origin)拉取 main 分支的更新,并实验合并到当前分支。
  • 指定远程仓库和分支(仓库名和其下的分支名):
    git pull <remote_name> <branch_name>
  • 拉取更新并自动rebase:
    git pull --rebase
    这个下令会先拉取远程分支的更新,然后实验将你的当前分支上的提交rebase到远程分支的最新状态。
  • 拉取更新并保留提交汗青:
    git pull --rebase=preserves-merges
    这个下令会实行交互式rebase,保留所有合并提交。
  • 拉取更新并解决辩论:
    假如 git pull 过程中出现辩论,Git 会制止合并并让你手动解决这些辩论。解决完辩论后,使用以下下令完成合并过程:
    git add .
    git rebase --continue
  ~
5.6.5 git push 下令

git push 下令是 Git 中用于将本地仓库的提交推送到远程仓库的下令。
   

  • 推送到远程仓库:
    git push <remote_name> <branch_name>
    这个下令将指定的本地分支推送到远程仓库。假如不指定 <branch_name>,默认会推送当前检出的分支。假如不指定 <branch_name>,默认会推送当前检出的分支。比方,推送 main 分支:git push origin main
  

  • 设置上游分支并推送:
    git push -u origin main
    这个下令不仅推送了 main 分支,还设置了上游分支,以后可以直接使用 git push 而不需要指定远程仓库和分支。(也就是第一次需要关联上,以后直接 git push )
5.7 撤销

5.7.1. git checkout

是一个在 Git 中用于切换分支规复工作树文件的下令。以下是一些 git checkout 的常用用法:
   

  • 切换分支
    切换到一个已存在的分支:git checkout <branch_name>
  • 创建并切换到新分支
    使用 -b 选项可以在创建新分支的同时切换到该分支:git checkout -b <new_branch_name>
  • 规复未暂存的更改:
    假如你想扬弃工作目录中的更改(未暂存的更改),可以使用:git checkout -- <file_path>
    这将规复指定文件到末了一次提交的状态。
  • 规复所有未暂存的更改
    假如你想扬弃所有未暂存的更改,可以使用:git checkout -- .
    这里的 . 表示当前目录下的所有文件。
  • 切换到特定的提交
    你还可以切换到汗青中的某个特定提交,创建一个分离的 HEAD:git checkout <commit_hash>
    这将使你的工作目录与指定的提交匹配,但不会自动切换到新的分支。
  • 切换到初始提交
    假如你想切换到仓库的初始提交,可以使用: git checkout HEAD~
  • 切换到上一个分支
    假如你想切换回上一个使用的分支,可以使用:git checkout -
  ~
5.7.2 git reset

git reset --hard commitID //git log 检察commitID 回退到某个分支
5.7.3 git cherry-pick commitID

将指定分支的提交拿到别的个分支不合并

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表