Git常用命令

Git常用命令

SVN:集中式、增量式的版本控制管理工具。存在单点故障的问题,服务器一出问题,之前的代码版本就不容易找到了。增量式就是每次提交只保存与之前不相同的东西,然后要到某个版本A时就将原始版本与A之前的每个版本更新的东西拼凑出来版本A,可以节约空间。

Git:分布式的,以快照的方式控制管理版本。本地就有完整的历史。远程也有。

结构:
在这里插入图片描述

先在工作区写代码,写完用git add 命令提交到暂存区,再用git commit 提交到本地库。

局域网下可以用GitLab服务器做托管中心,外网下可以用GitHub或码云等。

在某个目录下空白处右击,出现Git bash here 选项,点击进去,可以用Linux指令进行操作,也就是说用tab补全命令、上下键翻用了的命令都可,git的命令都是以 git开头。补全命令有时候反应较慢。

在Git bash窗口内,鼠标左键选中哪些文字或字母就会被复制,可以直接右键选paste进行粘贴。

1、本地库初始化:

git init命令,初始化本地库,创建一个.git目录及一些文件,但看不到,因为隐藏目录,所以可以用 ll -a 命令看到。 .git目录中存放的是本地库相关的子目录和文件,不懂最好别动。

2、设置签名(设置一个本地用户名,作为一个标识,区分不同开发人员),此处的签名和登录远程库的账号密码没关系。

​ 项目级别/仓库级别:仅在当前本地库范围内有效,也就是这个文件夹下。用

git config user.name 用户名		
git config user.email 邮件地址。

​ 系统用户级别:登录当前操作系统的用户级别。用

git config --global user.name 用户名		
git config  --global user.email 邮件地址。

优先级:就近原则,项目级别优先于系统用户(二者都有时)。

项目级别的用户信息保存在 .git/config中。系统用户级别的在用户的家目录cd ~去看隐藏文件。

3.查看工作区、暂存区状态git status
在这里插入图片描述

4.将新建/修改的文件向暂存区提交 git add 文件名
在这里插入图片描述
5.撤销向缓存区提交的某个文件 git rm --cached 文件名
在这里插入图片描述
6.向本地库提交缓存区中的东西。

①用git commit 文件名 会出现下方窗口,因为我安装时选择的是带vim编辑器的也就是可以添加一些描述,类似于注释。
在这里插入图片描述

②直接 git commit -m “描述信息”

7.git log查看日志记录(完整显示),进去的界面类似于Linux中less、more命令,空格翻页,回车显示下一行,q退出

简洁一些的显示 git log --pretty=oneline
在这里插入图片描述

git log --oneline 和上边差不多只是索引显示一部分,只靠这部分就可以区别于其他索引所以,没必要全显示出来。

git reflog 显示出来的会多一个某个版本(索引)到当前需要移动的步数
在这里插入图片描述

HEAD@{移动到当前版本需要多少步}

8.版本前进后退

①git reset --hard 索引。

表示跳到索引指向的那个版本,也就是上边查到的那些索引,后边也有每次提交时自己写的描述,按需要跳就完事了。

②只能后退

git reset --hard^ 表示退到上一个版本,有几个 ^ 就表示后退多少步(版本)

git reset --hard~步数 表示后退多少步(版本)

rest命令的三个参数对比:

–soft:仅仅在本地库移动head指针。

–mixed:在本地库移动head指针,重置暂存区。

hard:在本地库移动head指针,重置暂存区,重置工作区。

9.删除文件和找回文件

删除:

rm 文件名

git add 文件名 将删除操作提交到暂存区

git commit -m “操作描述” 文件名 提交删除到本地库

找回:

1.在上个命令中我们发现本可以前进,也可以后退,也就是说被提交到本地库的操作记录会被保存下来,删除操作也提交了所以删除操作的记录也会被保存下来。所以,找回文件我们可以退回到文件被删除之前的那个版本,文件就被找回来了。

2.删除,并且提交到了暂存区,但没提交到本地库的文件。可以通过,git --hard head命令来找回,因为没有提交到本地库所以还没生成新的记录,git --hard head直接回退到本次操作记录的开始。

10.比较文件

git diff 文件名 修改文件后用来查看文件哪些地方被修改了,以行为单位,你修改的行它会先被删除,再变为你修改的内容。
在这里插入图片描述

比如此处,红线处是之前的内容,进行修改后是先将红线处内容删除,再变为绿色字体处的内容。我做的是将apple 修改为了apple @@@@@@@

也可以git diff 版本 文件名 将工作区当前文件和此文件在某个版本的内容进行比较。

不指定文件名时会将当前工作区的多个文件和上个版本进行比较。

11.分支,在版本控制过程中,使用多条分支同时推进多个任务,提高开发效率,各分支独立进行,不会互相影响,最终将开发完成的功能整合到主分支上。

主分支本来就是存在的不需要创建。

查看当前拥有的分支:git branch -v

创建一个分支:git branch 分支名

分支切换:git checkout 分支名

合并分支:先要切换到需要整合内容进来的分支上,然后git merge 要被整合进当前分支的分支名。

合并产生冲突的问题:当两个要整合的分支上修改了同一个文件的同一个位置,git就不知道给舍去哪个,所以就产生了冲突。

如:我在主分支和temp分支同时修改了good.txt第四行的内容,然后将两个分支内容整合,就会出现
在这里插入图片描述

我们按需要删除以及保留相应内容,保存添加提交(add、commit),问题就解决了。此处提交时不用写文件名不然会出错。

存储内容时是通过Hash算法将信息计算出哈希值保存,管理分支时是通过指针指向某个版本。

12.在本地库创建远程地址的别名:git remote add 别名 地址

通过git remote -v查看

13.远程推送到github,通过git push 地址别名 分支名。当推送时如果要推送的文件不是基于最新的文件版本进行的修改,也就是说别人比你提前推送过这个文件,这时就会产生冲突,推送失败。这时就需要我们将远程的文件先拉去到本地,进行融合,然后解决融合冲突,添加提交就行。

14.克隆到本地:git clone 仓库地址

克隆是将完整的远程库下载到本地,并且创建远程地址别名,初始化本地库。

15.拉去,git fetch 地址别名 远程分支名,效果是将远程库地址的内容拉去到本地,只是拉取到本地,还没融合。融合git merge 远程地址库别名/远程分支名。

git pull 地址别名 远程分支名,效果相当于同时用了fetch和merge

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值