链接: 笔记
安装其实就比较简单的,把Git下载过来,一直下一步就行,没什么难度。
接下来介绍一些简单的Git命令。
用户签名的作用就是告诉别人你是谁,方便区分不同的成员,具体方法如下所示
git config --global user.email "123@qq.com"
git config --global user.name "name"
--global 是让我们的用户签名到哪都可以用,而不只能在某一个文件夹用,省了蛮多事情。 然后具体操作如下所示。我们现在介绍一下如何查看自己设置成功了。
先找到c盘,打开用户名文件夹,找到一个 .gitconfig 的文件夹,用记事本打开就可以了。打开之后如果显示是这样的,就是说明成功了。
这个初始化呢,其实就是选择一个希望被git管理的文件夹,然后将其初始化,这样我们就得到了一个被git管理的文件夹,后期在文件夹中的操作都能被记录下来。
git init
之后就能到文件夹里看到一个这样隐藏的文件了。(要在文件管理里面打开显示隐藏文件)
然后再介绍一些简单的常用指令。而且在git里面,按上键可以回到之前的命令,感觉特别舒服。
# 这个就是进入命令,(可以用Tab键补全)
cd first/
# 这个就是回到上一级
cd ..
# 这个就是查看文件夹
ls
# 这个就是查看所有文件夹
ls -a
Git的工作机制主要分为三个区,工作区,暂存区,历史区。工作区很好理解,就是我们工作的地方,然后暂存区,就是用来放我们写好的代码,最终把成稿提交到版本库。之所以不直接提交到版本库就是怕到时候版本库特别乱,到处都是各个版本的修订版,具体如下图所示。
内网主要就是安全,但是搭建成本较高。而外网成本不高,但是不安全。为此,外网有私有和共有之分,顾名思义,私有的话你必须有相应的权限才能进入,确保了一定的安全性。
这个就是将我们的文件或者文件夹添加到暂存区的命令,主要有下面几种。
# 添加一个文件
git add first.txt
# 添加一个文件夹(非空)
git add css/
# 添加所有文件
git add --all
git add .
这个就是查看我们现在的状态的代码。我们需要知道,绿色的就代表现在这个文件夹在暂存区。
git status
这个是用来删除暂存区的文件的,其实在上面也有提示。
git rm --cached
这样就删除了,颜色变成红色。
这个就是把我们在暂存区的代码放到历史区了。
git commit -m "first功能实现"
如果没有加 -m,就会进入文件,它一定要你留下为什么提交这次记录才会让你走。这个时候,先按下i键,进入insert模式。
然后写下这次的记录名称,按下ESC键,之后输入:wq(一定要半角的,不然输入不了)
这个就能查看我们历史区的记录了,但是只能查看到指针之前的记录。
git log
这个就可以查看到所有的记录了。
git reflog
这个就是我们用来回退版本用的指令,其实就是改变HEAD指针的位置,然后文件直接会退到工作区。
# 回退到上一次
git reset --hard HEAD^
# 回退到多次前
git reset --hard HEAD^^
git reset --hard HEAD~2
打开工作区文件,会发现确实回到了第一次提交的代码。
把HEAD改成之前版本的地址,就可以实现穿梭的操作,地址可以由git reflog查看。
git reset --hard 112154a
这个是软复位,主要功能就是把文件退到暂存区,主要用来改记录名称和为了历史区的修改,接下来我来展示一下第二种功能。
可以看到,bug已经修复,然后历史区也是非常清晰的,没有两份提交记录。
这个其实也算是版本穿梭,与git reset 不同的地方就在于这个命令是重新创建一个新的记录,但是内容却是你想回退版本的内容。可以看到,版本其实回到了2版本,但是却是多加了一条记录。
git revert HEAD
分支的话,就是把我们整个文件夹分成一个一个独立的区域。当你完成A功能的时候,你就可以开一个B功能的分支区去开发,而当A功能需要修复的时候,就不会影响到B功能的开发,等B功能开发完了之后,再合并在一起就可以了。
这个指令单独使用那就是查看当前分支。
git branch
要是在后面加上分支的名称,就可以创建分支了。
git branch second
要是在后面加上-d 和分支名称,就可以删除这个分支了。
git branch -d second
要是加上-a 就能查看所有的分支
git branch -a
这个指令用来在各个分支跳转,后面加上分支名字就行。
git checkout second
然后在second里的提交什么的,是不会影响到master主分支的,其实就相当于把指针前移了一下,然后后续操作全在second这个工作区操作了,还是比较好理解的。
这个命令用来合并各个分支,其实就是简单的把master指针移动到second分支上,没有什么不好理解的,但是在合并过程中可能会有冲突的情况,我们在后面慢慢分析。
git merge second
其实我们应该知道,在分支合并的时候还是比较容易出现冲突的,其中主要的原因就有在开发其他分支的时候主分支改变了。然后进行代码合并的时候,就会发现有两个地方改动了,这样就造成冲突,git就不知道怎么办了,这个时候就需要我们来手动合并了。
遇到这样的问题,我们只需要把多余的符号删掉,再到master里面提交一下就好了。当然,也可以使用一些软件来智能帮助我们解决冲突。
这个团队协作就需要我们借助远端库了,这里我们借助的是Github,在此之前我们需要先去注册一下Github账号,在此就不做介绍了,比较简单。然后创建自己的仓库首先点击右上方的加号,点击New repository,然后取一个名字,创建就可以了。
git remote add origin https://github.com/xiaodian2/xdd_project.git
这个就是推送的指令,origin 代表的是后面这一大串的地址。
git remote -v
这个是查看我们origin代表的地址,关掉了Git,不想重新打过了。
git remote add origin
这个就是删除origin代表的地址。
git push origin master:master
这个就是把我们的主分支master推送到origin地址上的master上去,可以省略后面的:master。第一次推送的话,可能需要绑定你的账号,输入密码就行,然后,你就可以拥有一个自己的GitHub仓库了。
git push -u origin master
如果以后一直使用这个origin地址,那么这样就可以记录地址,以后就可以直接git put 了。
然后需要修改的话,先到本地修改,然后提交,非常不建议在远端库直接修改,就算是修改了,也要及时更新自己的代码。不然可能会导致代码冲突,就像分支合并那样,解决办法其实也是一样的。
git push -f
这个是强制推送,非常不建议使用,就当没学。
git pull origin master
这个就是从远端库拉取代码到我们本地.
git clone https://github.com/xiaodian2/xdd_project.git
这个就是用来克隆别人代码的,也就是白嫖别人的代码。
在团队协作中很容易出现冲突,主要分为两种。 第一种就是在修改不同的文件,当对方提交到了远端库之后,你要是再想提交你的代码,就必须要先拉取最新的代码,然后再提交你的代码。 第二种就是在修改同一个文件,当对方修改并提交到远端库之后,你想要去提交你的代码,这个时候别人提交的版本就会与自己的代码冲突,然后只能去拉取,这个时候就回到了合并分支冲突了,需要自己去决定保留谁的代码,然后再去推送。所以遇到这种情况,一般就需要提前协商好,
如果想要获取对方的分支。操作其实和主分支差不多,首先提交分支,然后别人拉取回来,就可以直接使用了。提交也是和master一样的。
# 提交分支。
git push origin second
# 然后别人拉取回来
git pull origin second
# 别人切换到分支
git checkout second
删除分支的原理就是推送一个空的分支到需要覆盖的分支上,这样就相当于删除了远端库的分支。
git push origin :bugfixed
跨团队协作,首先需要把别人的项目fork下来,这样自己就有了这个项目,当你修改之后,就需要去提交pull request。然后对方通过一下就行。我没两个账号,就不展示了。
和GitHub一样,就不介绍了。