Git 笔记


安装

官网下载

配置

因为Git是分布式版本控制系统,所以首先应该配置一下你的身份,这样在提交代码的时候Git 就可以知道是谁提交的了。

安装后在终端里输入命令:

git config --global user.name  "your name"
git config --global user.email "email@example.com"

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

Git全局配置文件.gitconfig默认在当前系统用户文件夹下。

基础

  • 工作区就是电脑里能看到的目录,比如我的版本库文件夹就是一个工作区。
  • 暂存区就是图里的stage
  • 一图表示了addcommit和三者的关系。
    这里写图片描述

命令

初始化一个Git仓库:

git init

添加文件到Git仓库,分两步:
  1. 使用命令git add <file>,可反复多次使用或使用.表示当前目录所有文件,添加多个文件;
  2. 使用命令git commit -m <message>提交,在commit命令的后面,我们一定要通过-m 参数来加上提交的描述信息,没有描述信息的提交被认为是不合法的。
查看仓库当前的状态:

git status 命令可以让我们时刻掌握仓库当前的状态,新修改是否未add,add了是否没commit等。

查看工作区对对暂存区的修改:

git diff 命令查看工作区对暂存区修改了什么内容;git diff HEAD -- <file>,则是分支工作区可看更详细

查看提交日志:

git log 可以看到最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以加上--pretty=oneline简化每此提交的日志为一行。看到的一长串SHA1值就是commit id(版本号)
当提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录的id,并加上-1参数表示我们只想看到一行记录,如下所示:
git log 1fa380b502a00b82bfc8d84c5ab5e15b8fbf7dac -1
而如果想要查看这条提交记录具体修改了什么内容,可以在命令中加入-p参数,命令如下:
git log 1fa380b502a00b82bfc8d84c5ab5e15b8fbf7dac -1 –p

git reflog 命令记录你的每一次commit命令和commit id(版本号)记录。

撤销工作区的修改全部

在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git checkout -- <file>命令把文件在工作区的修改全部撤销(新建的文件除外),这里有两种情况:

  1. 一种是readme.txt自修改后还没有被放到暂存区(未add),撤销修改后就回到和版本库(最近commit)一模一样的状态;
  2. 一种是readme.txt已经添加到暂存区后,又作了修改(add后又修改),撤销修改后就回到添加到暂存区后的状态(刚add时)。

总之,就是让这个文件回到最近一次commitadd时的状态。

取消添加

对于已commit提交的文件我们应该先对其取消添加,然后才可以撤回提交。取消添加使用的是reset命令:git reset HEAD <file>

虽然在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令(可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。 不加选项地调用 git reset 并不危险 — 它只会修改暂存区域。

git reset --hard HEAD^ 表示回到上一次提交的版本,--hard后也可以加SHA1值的commit id(版本号),回退后log里的最新就是旧的提交日志,新的会不见,不过只要知道新的commit id就可以回到未来。

分支

分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。

如果想要查看当前的版本库当中有哪些分支,可以使用git branch这个命令,可加-v参数。

创建分支:

git branch <分支名>

切换工作分支:

git checkout <分支名>

创建+切换分支:

git checkout -b <name>

合并某分支到当前分支:

git merge <name>加参数--no-ff表示普通合并,
git log --graph命令可以看到分支合并图

删除分支:

git branch -d <name>

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而默认的fast forward合并就看不出来曾经做过合并。

在新分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响到新分支。

如果我们在version1.0分支上修复了一个bug,在master 分支上这个bug 仍然是存在的。这时将修改的代码一行行复制到master 分支上显然不是一种聪明的做法,最好的办法就是使用merge 命令来完成合并操作,如下所示:
git checkout master (切换到主分支)
git merge version1.0

仅仅这样简单的两行命令,就可以把在version1.0 分支上修改并提交的内容合并到master 分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要静下心来慢慢地找出并解决这些冲突,Git 在这里就无法帮助你了。
最后,当我们不再需要version1.0 这个分支的时候,可以使用如下命令将这个分支删除掉:
git branch -D version1.0

远程库

比如说现在有一个远程版本库的Git 地址是https://github.com/example/test.git,就可以使用如下的命令将代码下载到本地:
git clone https://github.com/example/test.git

之后你在这份代码的基础上进行了一些修改和提交,那么怎样才能把本地修改的内容同步到远程版本库上呢?这就需要借助push 命令来完成了,用法如下所示:
git push origin master

其中origin部分指定的是远程版本库的Git 地址,master部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到https://github.com/example/test.git 这个版本库的master分支上的功能。

知道了将本地的修改同步到远程版本库上的方法,接下来我们看一下如何将远程版本库上的修改同步到本地。Git 提供了两种命令来完成此功能,分别是fetchpullfetch的语法规则和push是差不多的,如下所示:
git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放到一个origin/master分支上,这时我们可以通过diff命令来查看远程版本库上到底修改了哪些东西:
git diff origin/master

之后再调用merge命令将origin/master分支上的修改合并到主分支上即可,如下所示:
git merge origin/master

pull命令则是相当于将fetchmerge这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:
git pull origin master

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容。
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改(加了参数-u后,以后即可直接用git push代替git push origin master)。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值