论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
开源技术
›
开源技术
›
Git 基本操作
Git 基本操作
惊雷无声
金牌会员
|
2024-10-2 09:18:06
|
显示全部楼层
|
阅读模式
楼主
主题
889
|
帖子
889
|
积分
2667
一、基本概念
Git 是一种分布式版本控制体系,用于跟踪和管理代码的变更。它最初是由 Linus Torvalds 开辟的,用于管理 Linux 内核的源代码。
Git 在软件开辟中被广泛应用,尤其是在团队协作和开源项目中。通过利用 Git,开辟职员可以更好地管理代码、协同工作、追踪题目和版本发布等。
1、工作区域
Git 管理项目时,文件流转的三个工作区域:Git 的工作目次,暂存区域,以及本地堆栈。
你的本地堆栈由 Git 维护的三棵"树"组成。
工作目次
:它持有实际文件;
暂存区(Index)
:它像个缓存区域,暂时保存你的改动;
本地堆栈(Respository)
:可以把本地堆栈理解成一个目次,这个目次中全部的文件都可以被Git管理起来每个文件的删除、修改、新增操作都可以被 Git 跟踪到以便任何时候,都可以追踪历史或者还原到之前的某一个版本
2、文件状态
对于任何一个文件,在 Git 内都只有三种状态:
已修改(modified)
,
已暂存(staged)
和
已提交(committed)
。
已修改
表现修改了某个文件,但还没有提交保存;
已暂存
表现把已修改的文件放在下次提交时要保存的清单中;add
已提交
表现该文件已经被安全地保存在本地数据库中了。commit
二、基本利用
1、设置用户标识
当你安装 Git 后首先要做的事变是设置你的用户名称和 e-mail 地址。这是非常重要的,由于每次 Git 提交都会利用该信息。它被永久的嵌入到了你的提交中:
git config --global user.name "xxx" # 名称
git config --global user.email xx@xx # 邮箱
复制代码
只必要做一次这个设置,假如你传递了 --global 选项,Git 将总是会利用该信息来处理你在体系中所做的统统操作。假如你希望在一个特定的项目中利用不同的名称或 e-mail 地址,你可以在该项目中运行该命令而不要 --global 选项。总之 --global 为全局配置,不加为某个项目标特定配置。
2、初始化堆栈
git init
复制代码
该命令执行完后会在当前目次生成一个 .git 目次。
3、提交文件到暂存区
现在在新建一个文件:
通过命令 git status 可以检察当前文件状态,表现有一个未跟踪的文件 h.txt。
下面就可以实验把文件提交到暂存区,利用 git add 命令:
git add [files1] [files2] # 添加指定文件到暂存区
git add [dir] # 添加指定目录到暂存区
git add . # 添加当前目录下的所有文件到暂存区
git add -p # 同一文件的多处变化,实现分次提交
复制代码
4、提交到本地库
git commit -m [message] (文件名) # 提交缓存区内容到本地库
git commit [file1] -m [msg] # 指定已追踪的文件进行提交
git commit -a -m [msg] # 相当于add和commit组合提交,直接到仓库
git commit -v # 提交时显示diff信息
git commit --amend -m [msg] # 使用一次新的commit,来代替上一次提交
git commit --amend [file1] # 指定文件重新上一次commit
复制代码
到目前为止,已经把改动提交到 HEAD 了,但是还没有到远程堆栈。
可以利用 git log 检察全部的提交:
5、推送到远程堆栈
执行如下命令以将这些改动提交到
远端堆栈
:
git push origin master
复制代码
可以把 master 换成你想要推送的任何分支。
假如你还没有克隆现有堆栈,并欲将你的堆栈毗连到某个远程服务器,你可以利用如下命令添加:
git remote add origin <server>
复制代码
云云你就能够将你的改动推送到所添加的服务器上去了。
git remote
git remote -v # 查看当前别名
git remote add 别名 链接 # 创建别名
git remote rm 库名 # 删除库
git remote remove 别名 # 删除别名
复制代码
5.1 错误阐明
假如你的远程堆栈已经是创建好的,而且要提交的分支上有内容的话(push 时会提示远程库与本地库不一致造成的错误,如下图),要先 pull 到本地,再重新 push。
先执行如下命令:(master 换成你要拉取的分支)
git pull --rebase origin master
复制代码
然后再重新 push 就正常了。
6、克隆
通过 git clone 命令可以克隆远程堆栈到本地:
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
# 指定克隆分支
$ git clone -b 分支名 [url]
复制代码
三、分支操作
分支是用来将特性开辟绝缘开来的。在你创建堆栈的时候,master 是"默认的"分支。在其他分支上进行开辟,完成后再将它们合并到主分支上。
下面是 Git 中分支操作的常用指令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch
-r
# 新建一个分支,但依然停留在当前分支
git branch
[branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 切换分支
git checkout [branch-name]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch
-d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch
-dr [remote/branch]
复制代码
1、检察分支
git branch
复制代码
此例的意思就是,我们有一个叫做 master 的分支,而且该分支是当前分支(前面有 *)。执行 git init
的时候,默认环境下 Git 就会为你创建 master 分支。分支在本地完成,速度快。
2、创建分支
git branch
[branch-name]
复制代码
3、切换分支
通过如下命令可以切换分支:
# 切换分支
git checkout [branch-name]
复制代码
下面的指令更便捷,可以同时实现刚才提到的两个功能:
# 新建一个分支,并切换到该分支
git checkout -b [branch]
复制代码
4、合并分支
现在在 test1 分支上修改文件 h.txt,然后 commit:
然后切换回主分支合并:
对其他分支的更改不会反映在主分支上。假如想将更改提交到主分支,则需切换回 master 分支,然后利用合并。
5、删除分支
利用 -d 标识,把新建的分支删掉:
git branch
-d test
复制代码
6、上传分支
除非你将分支推送到远端堆栈,否则该分支就是 不为他人所见的:
git push origin <branch>
复制代码
四、替换本地改动
假如操作失误可以利用如下命令替换掉本地改动:
git checkout -- <filename>
复制代码
此命令会利用 HEAD 中的最新内容替换掉你的工作目次中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
步骤见下图:
先修改了 h.txt,然后执行 git checkout h.txt,然后全部改动都被删除了。
假如你想丢弃你在本地的全部改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master
复制代码
五、重置
当我们不想要之前提交的修改时,就会用到这个命令。也许这是一个 错误的提交或者大概是引入了 bug 的提交,这时候就要执行 git reset。
git reset 能让我们不再利用当前台面上的文件,让我们可以控制 HEAD 应该指向的位置。
1、软重置
软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后加入的修改!
输入 git status 后,你会看到我们仍然可以访问在之前的提交上做过的全部修改。
这意味着我们可以修复这些文件的内容,之后再重新提交它们!
2、硬重置
偶尔候我们并不想保存特定提交引入的修改。不同于软重置,我们应该再也无需访问它们。
Git 应该直接将团体状态直接重置到特定提交之前的状态:这甚至包括你在工作目次中和暂存文件上的修改。
我们重新 add 并 commit,然后硬重置:
回去检察文件 h.txt,添加的内容已经不存在,而我们全部提交的信息也都已经被移除。
六、还原
另一种打消修改的方法是执行 git revert。
通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交。
这个在新建一个 hh.txt 文件并提交:
用 git revert 打消修改
有上图所示,执行 git revert 8edbe7 后,新增的 hh.txt 被删除了,并新提交了一个 commit。此前添加 hh.txt 的提交还在,这样就保存了该提交信息,进步了堆栈的兼容性。
七、拣选
当一个特定分支包含我们的活动分支必要的某个提交时,我们对谁人提交执行 cherry-pick。
对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。
创建切换到 cherry 分支:
然后在分支 cherry 上修改文件 h.txt 并提交几个节点:
切回 master 分支:
执行:git cherry-pick bf221cb05
由上图所示,分支 cherry 的 commit bf221cb05,被复制到分支 master,并创建了 1 个新的提交 93cfeef。
通过该命令我们就可以将其他分支,必要的提交,合并到主分支 master。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
惊雷无声
金牌会员
这个人很懒什么都没写!
楼主热帖
蚂蚁金服杨军:蚂蚁数据分析平台的演进 ...
记一次实战 Shiro反序列化内网上线 ...
基于 Sealos 的镜像构建能力,快速部署 ...
超融合走向红海,下一代超融合是新蓝海 ...
Linux之iptables(NAT表)——实验篇 ...
Linux(CentOs7)基础配置及安装本地yum ...
1亿条数据批量插入 MySQL,哪种方式最 ...
Neo4j
数据湖(一):数据湖概念
【学习笔记】WPF-02:XMAL基础 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表