论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
开源技术
›
开源技术
›
git详细下令
git详细下令
麻花痒
论坛元老
|
2025-3-10 00:29:57
|
显示全部楼层
|
阅读模式
楼主
主题
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 密钥。
打开下令行终端,并输入以下下令
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 密钥:
git config --global user.email "your_email@example.com"
git config --global user.name "Your Name"
git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa"
复制代码
现在,你就可以使用下令行 Git 来进行远程利用了,而无需每次都输入密码。
4. 设置用户名和邮箱
在 Git 中设置用户名和邮箱信息非常重要,主要缘故起因如下:
身份识别:Git 使用设置的用户名和邮箱作为提交(commit)时的作者信息,这有助于识别是谁进行了代码的更改。
责任归属:当多人协作开发同一个项目时,正确的用户名和邮箱可以帮助团队成员了解每次提交的来源,明确责任归属。
记录汗青:Git 的提交汗青记录中包含了用户名和邮箱信息,这有助于在回首项目汗青时,快速找到干系责任人。
沟通协调:假如项目中出现问题,大概需要讨论某个特定的提交,拥有正确的联系信息可以方便团队成员之间的沟通和协调。
贡献记录:对于开源项目,贡献者的用户名和邮箱信息会被记录在项目的贡献者列表中,这是对贡献者的承认。
安全性:设置用户名和邮箱可以作为 Git 利用的根本验证,固然不是严酷的安全步伐,但有助于维护利用的透明性。
工具集成:许多集成开发情况(IDE)和持续集成/持续部署(CI/CD)工具会使用 Git 设置的用户名和邮箱信息来表现提交者信息。
邮件关照:一些 Git 服务和工具会根据提交中的作者信息发送邮件关照,正确的邮箱地址确保了关照的正确性。
git config --global user.name "Your Name"
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 标签就像是一个标记,帮助你和你团队成员快速识别、访问和引用代码库中的特定点。
创建新标签:
git tag <tagname> #为当前 HEAD 或指定提交创建一个简单的标签。
复制代码
创建带有注释的标签:
git tag -a <tagname> -m "tag message"
复制代码
列出所有标签:
git tag #显示当前 Git 仓库中的所有标签列表。
复制代码
删除标签 :
git tag -d <tagname> #删除本地的标签。注意,这不会从远程仓库中删除标签。
复制代码
推送标签到远程仓库:
git push origin <tagname> #将指定的本地标签推送到远程仓库。
复制代码
推送所有标签到远程仓库:
git push --tags #将所有本地标签推送到远程仓库。
复制代码
删除远程标签:
git push origin --delete <tagname> #从远程仓库中删除指定的标签。
复制代码
检察标签列表:
git tag -l <pattern> #根据模式搜索标签,<pattern> 是一个匹配标签名的搜索模式。
复制代码
搜索标签:
git tag --search <search-term> #根据搜索词搜索标签名。
复制代码
检察此版本所修改的内容
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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
麻花痒
论坛元老
这个人很懒什么都没写!
楼主热帖
【SQL server速成之路】——身份验证及 ...
2022年安装Kali Linux最详细过程,以及 ...
容器开发运维人员的 Linux 操作机配置 ...
ping命令 网络抓包 分析
密码学奇妙之旅、02 混合加密系统、AES ...
窄带传输与LoRa扩频传输技术应用方案对 ...
我今年12岁了,我喜欢打游戏,怎么能成 ...
程序员坐牢了,会被安排去写代码吗? ...
kubectl使用技巧:如何更方便地操作多 ...
Vim 备忘清单_开发速查表分享 ...
标签云
运维
CIO
存储
服务器
浏览过的版块
数据仓库与分析
边缘计算
快速回复
返回顶部
返回列表