Git基础教程
一.创建版本库
1.版本库又名仓库,英文名repository,简单的理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”
2.创建方法:例如我的D盘->www目录下建立一个testgit版本库
3.之后创建的文件需注意要放在testgit1目录下
方法总结:
a) 1. 输入 cd kkk: (表示进入你的kkk磁盘)
b) 2. 输入 cd hhh (hhh表示上面磁盘下的某个文件夹名称)
c) 3. 输入 mkdir testgit (表示在上面的“hhh”文件夹下再创建一个叫做“testgit”的文件夹)
d) 4. 输入pwd (查看当前路径)
e) 5. 输入 git init (表示对仓库进行初始化);
二.Git文件提交(输入git gui进入图形界面)
书写并提交文件:我们前面说过使用Git提交文件到版本库有两步:
第一步:
是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:
使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。<br><br>
具体步骤:
a) 创建一个文件,写完内容后需要放入前面的.git同目录下
b) 输入git add 文件名
c) 输入 git commit -m “对该文件进行说明”
举例:(注意先初始化本地仓库)
1.创建一个叫做demo.txt的文件,放置在testgit的目录下(.git同目录下)
2.在命令行输入git add demo.txt
3.在命令行再输入git commit -m “添加数据”(注意,""内是对该文件的一个说明)
4.可以使用cat demo.txt对该文件内容进行查看
其他操作总结:
1.输入 git log 查看之前提交时书写的相关信息
2.在工作区对文件进行修改后,可以通过输入git status会进行提示哪个文件修改过。(我在外部将demo.txt文件内容添加了22222数据)
3.查看文件内的信息 cat 文件名
4.查看修改了哪些信息:git diff 文件名称
5.查看历史纪录:git log –pretty=oneline (直接显示对每次修改的信息)
三.Git创建分支,推分支
分支:可以为要发布的代码保留一份拷贝
创建方式:
1.git branch 分支name
2.git branch RB_1.0 master (master branch是主分支,git上的默认分支,RB_1.0是一个新分支名称,RB代表发布分支)
删除分支:
git branch -d name
分支重名:
git branch -m 原分支名称 新分支名称
推分支:
推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:使用命令 git push origin master
这里需要先知道远程仓库,在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:
1.创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:ssh-keygen -t rsa –C “youremail@example.com”, 由于我本地此前运行过一次,所以本地有,如下所示:
2.登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。点击 Add Key,你就应该可以看到已经添加的key。
3.我们在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
首先,登录github上,然后在右上角找到“new repository”,如下:
在Repository name填入testgit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。
目前,在GitHub上的这个testgit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的testgit仓库下运行命令:(在命令行)
git remote add origin https://github.com/AllForward/testgit.git
之后便需要使用推分支的方法,在命令行处输入git push -u origin master。由于远程库是空的,所以第一次推送master分支时需要加上-u参数,推送后即可在远程库看到和本地库一样的文件。
如今已经可以把文件推送出去了,那我现在再对本地的文件内容进行一个修改。如下所示:
远程仓库的demo.txt数据为:
本地仓库的demo.txt文件内容更改为:
将修改后的文件提交后,再在命令行输入git push origin master
之后在github上便可以看出文件的内容发生了变化
四.Git分支合并
创建分支并直接定位至该分支的方法:
git checkout -b 分支名称 父分支名称 (创建并检出该分支)
分支定位:
git checkout 分支名称 (检出分支)
合并分支:
1.直接合并:将一条分支的全部历史提交合并到另一条分支上
方法:git merge 文件名(说明:对于没有合并的分支上的信息,主分支无法获取,合并后即可获取),
合并后可删除分支git branch -d name
2.压合合并:将一条分支上的所有历史提交压合成一个提交,提交到另一条分支上;
采用方法:git merge –squash 文件名,之后再git commit -m “”进行提交
3.拣选合并:分之间只合并一个提交
方法:a).先确定好主分支
b).git cherry-pick 提交名称
c).再使用git commit进行提交
五.版本回推:
恢复原来的版本git reset --hard HEAD(恢复到上上版本只需再加一个)
如回退后想恢复之前的版本,则可以使用git reflog先查看要恢复的版本号,之后再用git reset --hard 版本号进行恢复
(如图第三行开始的黄色处即为版本号)
六.修改和删除文件操作:
1.修改文件操作:
git checkout -- 文件名 (把文件在工作区做的修改全部撤销)
使用该方法有两种情况:
- 文件自动修改后,还没有放到暂存区,使用撤销修改就回到和版本库一模一样的状态。
- 另外一种是文件已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
2.删除文件操作:
方法:
rm 文件名 (删除文件之后可以选择彻底删除文件或者恢复原来版本)
若想恢复原来版本
输入git checkout -- 文件名
若是想彻底删除
使用commit删除即可
七.冲突解决等指令
1、git冲突的场景
情景一:多个分支代码合并到一个分支时;(当将分支上的文件内容进行修改并使用git add以及git commit提交后,再在主分支上对该文件进行修改并提交,之后将主分支和次分支进行合并就会出现冲突。)
情景二:多个分支向同一个远端分支推送代码时;(多个人对同一个仓库中的文件pull下来后对文件的同一个位置进行修改,其中一个人提交后,另一个人再提交便会出现提交冲突)
此时使用git status指令会出现下面的情形: