git零基础使用指南
Posted 前端呆头鹅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git零基础使用指南相关的知识,希望对你有一定的参考价值。
git零基础使用指南
一 拥有一个git项目
如果你有一个git云端项目,使用拉取即可,我们也可以创建一个使用git管理的本地项目。
// 拉取云端的项目到当前文件夹
$ git clone https://git.*******/yourname/test.git
// 为当前文件夹内目录设置git仓库管理
git init
本文采用第二种方式创建了一个新的git仓库。这时候查看git历史,是没有提交记录的,因为这个仓库刚刚被创建。
$ git log
fatal: your current branch 'master' does not have any commits yet
我们在文件夹中添加一个txt文件并写入一些内容,后将文件的变化提交到git。
$ git add .
$ git commit -m 'feat: init'
1 file changed, 1 insertion(+)
此时我们再去查看git仓库的提交记录,可以看到提交历史。
$ git log
Author: kexinran <kexr@outlook.com>
Date: Thu Aug 11 16:23:58 2022 +0800
feat: init
二 将git项目托管到云端
在上一节中给出了两条git项目路线,使用git init本地创建一个新的git项目,或使用git clone从云端拉取一个已托管到云端的项目,如果使用后者,则被拉取的项目已与云端的项目绑定了,我们可以使用git remote查看本地git项目对应的云端地址。
$ git remote -v
origin git@github.com:test/thinkphp.git (fetch)
origin git@github.com:test/thinkphp.git (push)
如果使用git init本地创建一个新的git项目,这个项目在云端是没有对于的git地址的,使用git remote的结果是空。
git remote -v
// 什么也没有返回
这种情况下怎样将git项目托管到云端呢?
首先我们需要创建一个云端仓库(如果已有云端仓库可以跳过该步骤)。很多平台都支持创建git仓库,比如码云和github,选择其一,在上面根据提示创建一个仓库即可,这里不需要使用命令行,是在网页里创建的。
然后将本地git项目与云端仓库关联起来。创建好的云端仓库对应一个地址,这里使用命令行让我们本地的项目和这个地址关联即可。
$ git remote set-url origin git@github.com:test/thinkphp.git
更改后可以使用git remote查看到变更后的云端地址。
$ git remote -v
origin git@github.com:test/thinkphp.git (fetch)
origin git@github.com:test/thinkphp.git (push)
现在我们可以将项目的变化同步到云端了。
我们首先拉取一下云端的代码,这是为了防止当云端代码发生变化后导致的问题,如果有其他人对云端代码进行了操作,这一步尤其重要,它的作用是将云端的代码变化同步到本地,防止代码上传到云端时出现代码冲突,也就是他人的变化和你的变化在同一个文件中,称为代码冲突,这种冲突在这一步时可能会被自动合并,也可能需要手动解决。
$ git pull
// 拉取云端代码得到
然后我们使用git push将自己的代码推送到云端。在推送前一定要使用git add和git commit提交代码,否则会导致推送失败。
$ git push
现在,git的基本操作已经讲完了,你已经能够使用git进行基础代码管理了。
三 分支的创建、查看和删除
想象这样一个场景,我们有一个上线的产品需要添加一个新功能,我们每天都需要从本地将代码同步到云端以防止代码丢失,这个功能的开发周期是3个月,在开发到一半的时候,我们已经有多次上传行为了,这时插入功能b的开发,希望三天后上线。我们面对一个问题,现在我们需要上线原功能和功能b的组合,但是原功能代码已经被功能a污染了,所以我们至少要保留一个代码版本,这个代码版本和当前线上产品版本保持一致。
这里就需要引入分支来解决。 分支是为了将修改记录的整体流程分叉保存。 分叉后的分支不受其他分支的影响。
我们使用操作来认识分支。
首先我们使用git branch查看分支。
$ git branch
* master
这里返回master代表当前代码仓库有一个叫做master的分支,master前面的*代表当前分支是master分支。
我们可以使用git branch开启新分支。
git branch text
然后我们再次查看分支。
$ git branch
* master
text
可以看到当前项目多了一个叫做text的分支,这个分支是以当前分支为模板复制出来的。
我们给当前目录添加一个图片文件,然后使用git add,git commit提交。
$ git add .
$ git commit -m 'feat: init2'
我们可以使用git log查看提交记录,可以看到我们已经提交了两次。
$ git log
// 展示两条提交记录
这时候我们通过git checkout切换到另一个分支。并查看提交记录。
$ git checkout text
Switched to branch 'text'
$ git branch
master
* text
$ git log
// 展示一条提交记录
可以看到,星号出现在text前面,表示当前是text分支,git log表示目前该分支只有一次提交记录,因为text分支是在master提交一次后建立的,后续在master上的提交与text分支无关。
现在我们有了自己的分支,但是在这时使用git push提交到云端会失败,因为云端是没有这个新分支的,我们需要在云端建立新分支并推送。
git push origin 新分支名字
当分支被废弃的时候可以删除。
因为无法删除当前分支,所以删除分支前要先切换到其他分支。
删除本地分支:
$ git branch -d 分支名字
删除远程分支:
$ git push origin --delete 分支名字
如果遇到git branch -d 分支名字删除失败,可能是因为该分支未合并到主分支,如果直接删除会造成代码损失,确定删除可以使用强制删除命令git branch -D 分支名字删除。
$ git checkout master
Switched to branch 'master'
$ git branch
* master
text
$ git branch -d text
Deleted branch text (was e8a9d13).
四 git必备套路
4.1 已经push的commit如何修改message
首先我们使用git log查看一下历史记录。
$ git log
// 展示两条提交记录 feat: init 和 feat: init2
1
修改历史提交记录要使用rebase命令,如果你仅修改最近一次的提交信息,仅执行第二步即可。
$ git rebase -i HEAD~2
// 上述命令为展示最近2条提交记录等待修改,注意此时提交记录要大于2次,否则异常
pick f141a06 feat: init1
pick f141a05 feat: init2
...
rebase命令提交后出现大屏文字,我们只要注意上面的几行即可。
上面的几行分为3列, 左边第一列表示命令(command),中间一列表示commit id,最右边一列是我们之前提交的message。
这时我们可以看到一个闪烁的光标,点击i后,可以将光标移动到对于记录的第一列位置,将pick更改为edit。
后先按Esc键退出当前模式,按大写两次Z进行保存退出。
保存完了之后,git的分支就会发生改变,从原来的master改成了我们第一个edit的commit id,使用git branch后可以看到分支已经改变到一个新的rebasing master。
2
我们可以在这里对提交记录进行改变。
$ git commit --amend
这时会刷出一屏文字,文字最上方是该次提交的massage,修改即可。
修改过程还是按i进入修改模式,移动光标到对应位置修改内容,点击esc推出编辑模式,使用ZZ保存后退出。
这次记录修改完成啦.
3
我们输入命令$ git rebase --continue, 现在分支号又发生了改变,表示我们要对第二个标记为edit的commit进行修改。
接着再重复上面的操作, 全部修改完成后,输入命令$ git rebase --continue, 会提示Successfully rebased and updated refs/heads/master.。
这时输入git log查询历史记录,massage已经修改了。
修改massage后,在推送到远程服务器时,要使用git push -f推送, 否则我们edit的commit会添加到commit后面, 而不是更新原commit。
4.2 怎样将连续多个commit整理成一个
开发中我们会不断commit代码,比如我们刚刚提交完代码,ui过来说,这个字号不对,我们只好打开代码修改字号,后又提交了一次,这种情况导致我们一天可能多次提交代码,比较乱。
然而实际上我们每天只要在工作结束后提交一次即可,这种情况下,我们就需要将连续多个commit整理成一个。
我们使用git log看到,当前我们有3次提交记录。
我们还是进入刚刚的rebase修改页面。
$ git rebase -i HEAD~2
// 上述命令为展示最近2条提交记录等待修改,注意此时提交记录要大于2次,否则异常
pick f141a06 feat: init1
pick f141a05 feat: init22
...
下面我们将init1和init22整理成一个提交记录。
点击 i 进入编辑模式,将feat: init22记录前面的pick修改为s,点击esc退出编辑模式,输入ZZ保存并退出。
这时弹出新的页面,我们点击i进入编辑模式,在this is the 1st commit message下一空白行输入注释内容, 点击esc退出编辑模式,输入ZZ保存并退出。
这时使用git log查看记录,发现commit已经被合并了。
–未完待续–
以上是关于git零基础使用指南的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu零基础教学-Ubuntu20.04安装Git及使用,并上传代码至gitlab服务器 | 超级详细,建议收藏!
Ubuntu零基础教学-Ubuntu20.04安装Git及使用,并上传代码至gitlab服务器 | 超级详细,建议收藏!