泉缘泉 发表于 2024-9-23 06:54:02

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用,
于是写了篇文章,
把当地git操作重新写了一遍,
自己去看吧!
https://img-blog.csdnimg.cn/img_convert/b9d13ba78d5a1e2002d2b451b9b3970b.png
0、基本概念

•Git是一个免费、开源的、分布式版本控制系统
•它利用一个特殊的叫做仓库的数据库来记录文件的变化
•仓库中的每个文件都有一个完备的版本历史记录
1)安装

sudo apt-update
sudo apt-get install git
git --version2)工作流转

Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及当地仓库。
你的当地仓库由 git 维护的三棵"树"组成。

[*]工作目录:它持有现实文件;
[*]暂存区(Index):它像个缓存区域,临时保存你的改动;
[*]当地仓库(Respository):可以把当地仓库明白成一个目录,这个目录中所有的文件都可以被Git管理起来
每个文件的删除、修改、新增操作都可以被Git跟踪到
以便任何时间,都可以追踪历史或者还原到之前的某一个版本
HEAD,它指向你最后一次提交的效果。
https://i-blog.csdnimg.cn/direct/7a00b41c33eb481b8f98e14cf9eebd91.png
3)文件3种状态

对于任何一个文件,在 Git 内都只有三种状态:已修改(modified),已暂存(staged)和已提交(committed)。

[*]已修改表示修改了某个文件,但还没有提交保存;
[*]已暂存表示把已修改的文件放在下次提交时要保存的清单中; add
[*]已提交表示该文件已经被安全地保存在当地数据库中了。commit
一、创建仓库并提交第1个commit

步骤1-4流程,参考下图流程会更清晰一些
https://i-blog.csdnimg.cn/direct/f3517cee59a14168b37ecaca6c628f17.png
1、创建仓库

利用当前目录作为Git仓库,我们只需使它初始化。
git init该下令执行完后会在当前目录生成一个 .git 目录。
https://i-blog.csdnimg.cn/direct/2a980de9979b45319266ffa7c0b164f1.png
2、新建当地文件

当地增加文件url.c、README.md
实用git status查看文件状态,红色部分,有2个未跟踪的在文件
https://i-blog.csdnimg.cn/direct/c3281a72bdd843fab50e4042a05d35c2.png
3、提交文件到暂存区git add

你可以提出更改(把它们添加到暂存区),利用如下下令:
git add <filename>
git add .      //添加所有文件
git add *.c    //添加所有c文件执行下面操作:
git add *.c
git add README.md4、提交改动git commit

利用如下下令以现实提交改动:
git commit -m "代码提交信息"或者
git commit然后进入vim编辑器,添加提交信息
例如:
git commit -m '初始化项目版本'以上下令将目录下以 .c 结尾及 README 文件提交到仓库中。
https://i-blog.csdnimg.cn/direct/b78384a071894b7682680a71e23f6679.png
现在,刚才的改动已经提交到了 HEAD,但是还没到远端仓库。
可以利用git log查看所有的提交:
https://i-blog.csdnimg.cn/direct/925267521b284139a31d0e52bb3b42eb.png
5、推送改动git push

刚才的改动现在已经在当地仓库的 HEAD 中了。
执行如下下令以将这些改动提交到远端仓库:
git push origin <branch>master可以把 master 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库毗连到某个远程服务器,你可以利用如下下令添加:
git remote add origin <server>如此你就能够将你的改动推送到所添加的服务器上去了。
三、 分支操作

分支是用来将特性开辟绝缘开来的。在你创建仓库的时间,master 是"默认的"分支。
在其他分支上进行开辟,完成后再将它们合并到主分支上。
0)查看分支

列出分支基本下令:
git branch没有参数时,git branch 会列出你在当地的分支。
https://i-blog.csdnimg.cn/direct/ca6b2309509e4f8f9f1363c4f6865470.png
此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。
执行 git init 的时间,默认情况下 Git 就会为你创建 master 分支。
分支在当地完成,速率快。
1)创建分支

要创建一个新的分支,我们利用branch下令。
git branch testhttps://i-blog.csdnimg.cn/direct/727001f6967a4a87b2744dca0c2db04c.png
由上图所示:

[*]多了一个分支test
[*]当前分支为主分支master,前面*表示活动分支
2)切换分支

branch下令不会将我们带入分支,只是创建一个新分支。所以我们利用checkout下令来更改分支。
git checkout test创建一个叫做"test"的分支,并切换过去:
git checkout -b testhttps://i-blog.csdnimg.cn/direct/1168653bb18d46e78c8c4c6ef5bcfa9a.png
如上图所示:

[*]分支test前面有*,所以当前活动分支为master
分支创建和切换参考下图:
https://i-blog.csdnimg.cn/direct/7b03ada1833444159e91a565239ecd4f.png
3)切回master分支并合并

在分支test上,修改文件url.c,然后commit
https://i-blog.csdnimg.cn/direct/38fb46ac2c2b4da49598d0b8d583a22c.png
切换回主分支并合并
git checkout master
git merge testhttps://i-blog.csdnimg.cn/direct/93722df79f894433bb423db4a12f23ef.png
由上图所示,git merge test后,主分支多了一个新的commit b9217
https://i-blog.csdnimg.cn/direct/024dadb71a7544fba9fa8332e00e5fe6.png
注意:
对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后利用合并。
4)删除分支

利用-d标识,把新建的分支删掉:
git branch -d test
git branch -D testhttps://i-blog.csdnimg.cn/direct/a517104bb59b48d88f4722554ae3f285.png
如上图,我们删除了分支test
https://i-blog.csdnimg.cn/direct/71e0e997bb1845c58658b0725c7230a1.png
5)上传分支push

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>四、更换当地改动git checkout

假如操作失误可以利用如下下令更换掉当地改动:
git checkout -- <filename>此下令会利用 HEAD 中的最新内容更换掉你的工作目录中的文件。
已添加到暂存区的改动以及新文件都不会受到影响。

[*]步骤
修改文件url.c,增加信息
//this change will be delete by git checkout然后再git checkout url.c
https://i-blog.csdnimg.cn/direct/4837e754341a4f74a5c15f37ef183808.png
如上图所示,
执行下面下令后:
git checkout url.curl.c修改的信息
//this change will be delete by git checkout已经被删除了,此时工作区域文件还原到了commitb 9217状态
查看url.c:
https://i-blog.csdnimg.cn/direct/50899bfef5624da0ae1e9d1d3b483ffd.png
https://i-blog.csdnimg.cn/direct/551e65ce045642539d3a59215ced2fdf.png
假如你想丢弃你在当地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本田主分支指向它:
git fetch origin
git reset --hard origin/master五、重置git reset

当我们不想要之前提交的修改时,就会用到这个下令。大概这是一个 错误的提交或者大概是引入了 bug 的提交,这时间就要执行 git reset。
git reset 能让我们不再利用当前台面上的文件,让我们可以控制 HEAD 应该指向的位置。
1)软重置

软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后参加的修改!
https://i-blog.csdnimg.cn/direct/4abe6adf49054e74a1ffa5f8ceaa6979.png
https://i-blog.csdnimg.cn/direct/aedf9be3804443f1a5a5adbedae88d9a.png
输入 git status 后,你会看到我们仍然可以访问在之前的提交上做过的所有修改。
这意味着我们可以修复这些文件的内容,之后再重新提交它们!
https://i-blog.csdnimg.cn/direct/1aa3c1474df246a7be88826a5fa1ab05.png
2)硬重置

有时间我们并不想保留特定提交引入的修改。不同于软重置,我们应该再也无需访问它们。
Git 应该直接将团体状态直接重置到特定提交之前的状态:这甚至包括你在工作目录中和暂存文件上的修改。
我们重新add并commit,然后硬重置
https://i-blog.csdnimg.cn/direct/f2951415069742da9291f65c49343a63.png
可见我们所有提交的信息都已经被移除,
工作区域文件恢复到commit 7bb299状态。
打开文件,查看,添加信息已经不存在,
https://i-blog.csdnimg.cn/direct/03239b26ae7c47e6bd1d9b22743b7918.png
https://i-blog.csdnimg.cn/direct/1e361343508947f9ab56b062d1fa290f.png
六、还原git revert

另一种打消修改的方法是执行 git revert。
通过对特定的提交执行还原操作,我们会创建一个包罗已还原修改的新提交。
新创建文件peng.c并提交
https://i-blog.csdnimg.cn/direct/d2650057b03f484c978edbff7f34edd2.png
用git revert 打消修改
https://i-blog.csdnimg.cn/direct/0415bd44abcc46bbbe27842e49808a55.png
由上图所示,执行git revert 209485之后,我们新增的文件peng.c被删除,并提交了1个新的commit 5b08d
此前添加peng.c文件的提交还在,如许就保留了该提交信息,提高了仓库的兼容性。
在打消特定的提交时,git revert 非常有用,同时也不会修改分支的历史。
https://i-blog.csdnimg.cn/direct/a043d3b9bd1141cf83f6966d4113d7bf.png
七、拣选git cherry-pick

当一个特定分支包罗我们的活动分支需要的某个提交时,我们对那个提交执行 cherry-pick!
对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包罗由拣选出来的提交所引入的修改。
创建切换到cherry分支,
git branch cherry
git checkout cherry https://i-blog.csdnimg.cn/direct/6a9717a472cf4311a2a47c75cbec1b81.png
https://i-blog.csdnimg.cn/direct/e4d12dfdd124460299264413cc7addcd.png
在分支cherry上修改文件README.md提交几个节点
https://i-blog.csdnimg.cn/direct/b3c4a65f23a24a2f87c428baeef11911.png
https://i-blog.csdnimg.cn/direct/f59f6aa53e0e45f5abd0d0c56fe1c4ee.png
切回master分支
git checkout masterhttps://i-blog.csdnimg.cn/direct/43a65d04b3944b06a55730763f44bb25.png
执行git cherry-pick b98fc77
https://i-blog.csdnimg.cn/direct/1ea7acd4da1649389857219fcf7755cd.png
由上图所示,分支cherry的commitb98fc77,被复制到分支master,并创建了1个新的提交2d995,
通过该下令我们就可以将其他分支,需要的提交,合并到主分支master。
https://i-blog.csdnimg.cn/direct/5d890b2b0c324b6abe04b517578096e6.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 从零开始一个git操作实例,图文并茂