下载地址1:Git for Windows
下载地址2:Git - Downloads
下载地址3:阿里云盘-->https://www.alipan.com/s/BRgzbvkKNN4
下载之后一直下一步就ok,环境变量都不用配置。

安装完后右键有Open Git这两个就说明安装成功了。
首先,配置你的用户名和邮箱,之后所有的git都是这个配置。


- git config --global user.name "黑凤梨"
- git config --global user.email "941013945@qq.com"
指令尽量自己敲,只看不敲那还不如不看!

通过初始化git,文件夹下会生成一个.git文件,这个目录是Git来跟踪管理版本的,不要随便改动,没把握的情况下会破坏git。执行
git init


在版本库wolai下创建一个Git.txt文件,内容是“qq941013945”
一、 使用命令 git add readme.txt添加到暂存区里面去。
执行完没报任何信息,说明执行成功。
二、git commit 提交缓存的Git.txt,
git commit -m "Git.txt提交第一版" 提交时需要解释说明一下

通过git status查看状态,是否还有未提交的

因为本目录下原本就有一个压缩包,所以报了这个压缩包没提交,但是目前先不用管他。现在修改一下Git.txt文件,再次查看状态。


提示被修改,但是未被提交!通过执行
git diff Git.txt
可以查看文件改变了什么(增删改)

做了改动,需要再次提交,首先,提交至缓存,再commit,最后再查看一下状态有没有成功。

历史版本,再对Git.txt文件做修改。


查看一下提交日志

使用git log --pretty=oneline打印日志,可以规避一些不重要的信息

版本回退可以使用以下:回退上一版, git reset --hard HEAD^ 回退到上上个版把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,这样推就很鸡肋,可以如下指令:git reset --hard HEAD~100 即可。
当前Git.txt内容如下:

回退上一版本

回退到了老版本,但是现在又需要新版本,可以先查一下版本号,通过版本号回得到新版本。查看版本号:git reflog 回到新版本:git reset --hard+版本号。

工作区如现在这个路径"wolai"
版本库:在"wolai"下有一个隐藏的文件.git,版本库不属于工作区。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
git add Git.txt-->存入暂存
git commit -m "解释说明"-->从暂存区提交改修文件到工作区
更改Git.txt文件并再添加一个yao.txt文件。


将两个文件提交至暂存区
将暂存区的文件提交至工作区,两个文件一起提交。

撤销改修可以回退(git reset --hard HEAD^)到上一个版本,也可以执行(git checkout -- "file"),但是这个撤销改修是还未提交至暂存区的。


演示改修过的文件提交至暂存区,再执行撤销改修,看看会怎么样



先手动添加delet.txt文件,再提交至暂存,再提交到工作区。最后再执行rm delet.txt将文件删除,删除之后没有commit还是可以通过git checkout -- delet.txt恢复的.




由于本地和远程仓库的传输是SSH加密的,所以需要一些验证配置。通过执行ssh-keygen -t rsa –C “随便取个名字”,回车回车就行了


id_rsa是私钥私有的,id_rsa.pub是公钥公开的,将这段加密字段复制一下




暂且不选择其他创建模块,想了解可以网上查一下下面这些属性都是什么功能。

接下来将本地仓库和远程仓库做关联,需要将仓库的链接复制下来,再执行指令git remote add origin空格+复制下来的连接。

连接到远程仓库后就可以将本地文件推送至远程仓库了,git push -u origin "master"
。

克隆远程仓库,创建一个本地库,初始化本地仓库,执行指令git clone 黑凤梨/随便取给名字2




创建并切换至demo分支
git checkout -b demo 创建并切换
git branch name 创建
git checkout name 切换
git branch 查看当前所在分支

给文件添加内容

切换到demo,把修改后的文件提交至demo,再次切回master查看yao.txt文件,发现没有改修后的信息,因为没有在master分支上提交,所以没有文件改修后的信息。

在主分支master下通过git nerge name将分支合并,合并之后两者的内容就一致了。
git branch -d name删除分支。

主分支和其他分支的同一个文件,两个文件都做了更改,并且commit了之后内容不一致,在合并时就会报提示信息。现在创建分支,更改分支demo2下yao.txt里面的内容,并提交至暂存区。


切换至master,查看文件内容并没有“毕设1v1指导”,因为是在其他分支上提交的,所以主分支上没有。现给文件添加内容“模拟Java面试”,再提交至master的缓存区。现在主分支上将两个分支合并,git merge name,发现Merge conflict(合并冲突)

冲突内容可通过cat name查看,解决办法,将分支内容改一致即可合并。HEAD是主分支的内容,=====下的是其他分支的内容


内容改一致之后,再合并git merge demo2。

demo2分支上的内容多了一条信息,要不然合并时会报一个提示信息!一般是有变更了才会commit,说人话就是你只能改一个分支上的东西,另一个保持原来的样子,这样才能合并成功。

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数--no-ff来禁用”Fast forward”模式。首先我们来做demo4演示下:


分支策略:master组分支一般不用来干活,干活都是在其他分支上干,干完合并到主分支,master是相对稳定的。
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。

创建远程分支


master/demo
本地

上传前远程


上传后




其他分支应该时刻保持合主分支的内容一致,除了自己本地更改的内容。在工作中应该是每天工作开始前要update一下再进行工作。
多人开发,在本地把分支荡下来,再分支上去做开发,做完之后合并就行,其实没啥操作,基本的都和上述一样的。
Git常用命令:
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
更多项目请看我的git仓库-->黑凤梨 (Zhang---Yao) - Gitee.com
git config --global credential.helper store
git push
输入这个指令,再push一下,输入用户名和密码,它会记住,下次再push的时候就不用再输入用户名和密码啦,亲测有效。