赞
踩
下文按照使用时的流程进行记录。
远程库使用Gitee。
如果想省时间,直接看最后的案例,快速操作。
参考文章:公众号《Mculover666》的文章,我这里只是方便我自己用。
方法一:任选一个文件夹初始化一个本地仓库
Git Bash Here
;git init
命令;并自动弹出初始化完成提示;.git
文件夹(隐藏的),需要点击查看隐藏文件才看得到。
方法二:克隆一个现有仓库到本地
针对已经有远端仓库在运行,需要对其进行修改或者添加的情况。
比如,先在Gitee创建一个库,只有readme文件。
Git Bash Here
;git clone <远端库链接>
远端库链接从这里直接点复制,不要去浏览器顶端复制。
个人理解:
.git
文件夹中保存了你的版本信息、提交记录等内容。
在对本地库中的文件做出修改之后,只是更新了你库文件夹中的内容,但是git并没有记录你做了更改(总不能你每改一个字符,git就自动刷新记录吧),因此需要把你的更新内容提交到本地库,这样git才会记录下你的更改,实现版本控制。
文件状态有两种:
查看状态
首先,cd到库文件夹;然后,输入git status
命令,查看所有文件的状态。
然后手动在文件夹中添加一个test1.txt
文件,再次执行git status
命令。
如果觉得提示太长,可以在后面加上参数-s
,如上图。
输出格式:(一共两个字符位置)
格式 | 意义 |
---|---|
左边一个M | 文件被修改,已放进暂存区 |
右边一个M | 文件被修改,未放进暂存区 |
MM | 在工作区被修改后,提交到暂存区,在工作区又被修改了 |
A | 新添加到暂存区的文件 |
?? | 新添加未跟踪的文件 |
修改之后要对新添加的文件添加跟踪。
使用git add <文件名 or 目录>
命令。
支持通配符,比如
.c
表示追踪所有c文件
如果是目录,则追踪整个目录
可以用-A
参数,直接跟踪所有文件
打开test1.txt
文件任意修改一下,然后再次查看状态。
Changes not staged for commit
表示:文件修改了,但是没有保存在暂存区。
再次调用git add <文件名 or 目录>
命令将文件保存到暂存区。
git status
命令:可以看到 被修改了但是没有暂存 的文件有哪些。
git diff
命令,可以看到 被修改了但是没有暂存 的文件做了哪些修改。
git diff --staged
命令,可以看到 已经被暂存的文件内容有哪些。
想要测试的,在 test1.txt 文件中再做个修改,比如添加一行,改一行之类的,然后输入三个指令试一下。
我觉得我目前大概率用不着,先不试了。
针对不需要纳入版本管理的文件,可以在工作目录下创建一个名为.gitignore
的文件来列出忽略文件的模式。
暂且先不用
使用git commit -m "<提交信息>"
命令,把暂存区内容提交到本地库。
提交之前,要先确保所有文件都已经保存到暂存区了。
都次提交到本地库,就相当于一个版本(Linux中说的快照),以后可以把你的库回退到这个版本。
如果觉得麻烦,不想先保存在暂存区,然后再提交,可以跳过暂存区域直接提交。使用
git commit -a -m "<提交信息>"
命令可以跳过暂存区,直接将工作区修改的文件(未追踪的文件不能直接提交)添加到仓库。
有两种情况。
git rm <文件名>
git rm --cached <文件名>
删除之后,文件夹里的文件也就没了。
我们每次执行git commit
命令,都会提交一个版本(快照),我们可以通过git log
命令查看提交历史。
可以看到,有三次提交历史,上面的是最新的。
每次的信息包括:
另外,当提交记录比较多的时候,可以使用一些参数,控制输出的内容。
选项 | 说明 |
---|---|
-p | 按补丁格式显示每个更新之间的差异。 |
–stat | 显示每次更新的文件修改统计信息。 |
–shortstat | 只显示 --stat 中最后的行数修改添加移除统计。 |
–name-only | 仅在提交信息后显示已修改的文件清单。 |
–name-status | 显示新增、修改、删除的文件清单。 |
–abbrev-commit | 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
–relative-date | 使用较短的相对时间显示 (比如,“2 weeks ago”)。 |
-graph | 显示 ASCII 图形表示的分支合并历史。 |
–pretty | 使用其他格式显示历史提交信息。可用的选项包括 oneline,shou,full,fuller,format (后跟指定格式) |
实际上,Git的版本控制是 其维护了一个指针,Git版本前进回退的本质是移动HEAD指针的指向。
可以看上一张图的,最新版本后面有个 Hard --> master
其指向最新的版本
使用git reset --hard <索引值>
命令进行版本回退/前进。
这样就可以回退到上次提交的状态了,文件夹里又出现了已经删掉的文件。
索引值,就是查看版本时,验证码的前7位,也可以用
git log --oneline
命令,直接看到索引值。
再次回到最新的版本(版本前进),文件夹中的文件又消失了。
另外,reset后面跟的参数也有其他的。
参数 | 说明 |
---|---|
–soft | 仅仅移动本地库HEAD指针 |
–mixed | 移动本地库HEAD指针,重置暂存区 |
–hard | 移动本地库HEAD指针,重置暂存区,重置工作区 |
针对建立的一个任务,可以多个人同时进行开发。每个人将现有的工程复制一份,在其基础上开发,最后再进行合成。这里每个人引出的开发路线就是一条Git分支。
在前面的内容中,master
就是我们的主分支名。
git branch <分支名称>
git branch -v
git checkout <分支名>
切换分支之后也可以进行Git的基本操作。
这里在工作区添加一个新文件test2.txt
,然后执行下述操作。
这里想把更改之后的extra_1
与master
分支进行合并,需要先切换到master
分支,然后执行git merge <待合并的分支名称>
命令。
当合并的分支对同一个文件的同一个地方有不同的修改时,会产生冲突,会提示自动合并失败,进入手动合并模式。修改完成之后,再次添加到暂存区、提交更新。
为了方便多人协同,可以将本地库的文件放到远程库。代码托管中心就是用来维护远程库的。
这里还是使用 码云。
后续的操作,为了方便,我们删除原有的文件夹,新建一个重来。
当然直接还在原有的这个文件夹 pull 也是可以的,他会更新.git
文件夹中的版本信息,同时拉取这个文件夹中没有的远程库中的文件。
想要把本地库推送到远程库,需要保证本地库是在远程库现有的版本上做的修改,如果不是需要先把本地库与远程库同步,也就是把远程库的拿过来,修改之后才能提交。
使用git pull <远程库地址名> <远程分支名称>
命令进行拉取(这里远程库没有创建分支,只有一个master,所以就省略了)。
拉取完成之后,在文件夹中添加一个新文件data.txt
。
然后执行git push <远程库地址名> <远程分支名称>
命令,将本地库推送到远程库(注意要先把工作区内容提交到本地库)。
如果弹出身份验证提示,按提示进行就可以了。
这个时候打开远程库看看,就有了我们添加的文件了。
在初始化本地库的时候,其实已经说过了。
命令:git clone <远程库url>
相比于拉取操作,
起别名命令:
git remote add <别名> <远程库地址>
以后在需要填地址的时候,可以直接用别名代替
到这其实已经满足绝大多数个人开发者的使用了。
后续还有:邀请远程库协作者、使用PR贡献代码。
这部分需要有两个账号进行操作,就先不加进去了,等我有用到的时候过来加。
在我的Gitee主页维护一个代码库,用于保存我的一些基础代码工程,方便以后复制使用。
其实可以直接在网页把代码放进去的,但是每次只能添加最多20个文件,一个工程里面有很多个文件,不方便。而使用Git没有这个限制。
如果把一个工程打成压缩包放进去的话,每个文件最大10M,就很难受。同样的GIt没有这个限制。
第一步,创建一个远程库,命名为CubeMX
。
第二步,把远程库拉取到本地。
直接在桌面右键,点击Git bash here
,打开命令窗口。
输入git clone https://gitee.com/HzoZi/cube-mx.git
命令,拉取远程库。
此时,桌面会多了个cube-mx
文件夹,这就是我们的拉取过来的本地库文件夹了。
第三步,把需要上传的文件放到这个文件夹里面。
第四步,追踪(暂存)新添加的文件。
第五步,提交到本地库。
执行git commit -m "操作信息"
命令,把工作区内容提交到本地库。
第六步,推送到远程库。
执行git push https://gitee.com/HzoZi/cube-mx.git
命令,即可将本地库文件推送到远程库。
完成之后,去Gitee刷新一下, 即可看到推送过去的文件。
Over!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。