步骤一:安装Git
访问链接下载https://git-scm.com/downloads,选择windows完成下载
双击安装该应用程序,依次next点击下去默认安装选项即可,个性化安装的话自己去找一下详细安装教程
安装成功后启动栏是这样的三个Git选项
Git CMD 这是Git提供的windows cmd小黑窗
Git Bash 这是Git提供的Linux Shell操作Linux命令的小黑窗
Git Gui 这是一个window图形化界面操作Git的一个应用程序
步骤二:使用Git 这里使用CMD
进入window自己的cmd或者Git cmd都可以,执行mkdir E:\Git\respository新建一个文件夹作为Git仓库,建好后是这样一个空目录
从cmd路径切入到该目录下,执行命令git init来初始化我们的本地仓库,这样他,会生成一个隐藏文件.git
将他显示出来是这样的
随便创建个txt文件,填入一些内容保存,然后依次执行git add . (也可以指定具体文件git add readme.txt添加到暂存区,可以理解为本地临时存放) 和 git commit -m "第一次提交"命令,完成提交
当然我们也可以用git bash操作操作以上命令也是一样的(后面我们使用git bash)
我们再次修改该文件
然后重复上一步的命令完成提交,这次我们备注成第二次提交,此时我们看到的内容就是最近一次提交的内容了,如果查看第一次提交的版本,我们切换版本就可以,使用命令git reset --hard HEAD~1表示往前回退1个版本
我们查看一下readme.txt文件的变化,发现添加的222222222222内容不见了,说明回退到了第一次提交后文件的内容
那么我怎么回到最近一次更新的版本呢?首先使用git log命令查看一下之前版本,执行后显示当前版本是第一次提交,继续执行git reflog查看当前分支master最近几次提交信息,我们最近一次commit是显示第二次提交的这个版本,记住前面的版本号98f4fc8,我们将用它来切换到最近版本,执行命令git reset --hard 98f4fc8后完成跳转,显示当前head指向版本为第二次提交
查看一下readme.txt文件,发现222222222222的内容又回来了
此时就可以在本地管理你的个人文件了,不过以上操作我们没有创建任何分支,一直都在master这个分支上操作的,所以命令行后面会显示一个master代表我们在这个分支上操作。
步骤三:使用Git 同步远程仓库
首先注册一个代码托管仓库账号,这里使用gitee,然后新建仓库
填写一些配置信息仓库名称res
创建后是这样的 只有一个.gitignore文件,复制一下这个克隆下载路径
然后执行命令git remote add origin https://gitee.com/nicohuhu/res.git与远程仓库建立连接,第一次连接需要输入账号密码
执行git push -u origin master上传,出现报错,原因是远程仓库.gitignore文件在本地仓库没有导致的,所以执行命令git pull --rebase origin master进行代码合并
此时本地仓库就多了一个.gitignore文件
然后再次上传就成功了
刷新远程仓库此时就上传成功了
修改本地内容再次 git add . 提交 git commit -m "第七次提交" 然后 git push origin master
刷新查看远程仓库,更改的内容就上传好了
步骤四:使用Git clone/fetch/pull远程仓库
git clone顾名思义就是将其他仓库克隆到本地(相当于将远程仓库复制一份到本地,本地不需要新建或者初始化本地仓库),这里我们本地新建一个文件夹叫gitclone
执行git clone https://gitee.com/nicohuhu/res.git就完整的克隆下来了
git pull 相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)
这里我们在远程仓库点击readme.txt文件进行修改并提交
本地仓库res内容是这样的
更新后是这样的git pull https://gitee.com/nicohuhu/res.git
本地仓库repository内容是这样的
更新后是这样的git pull https://gitee.com/nicohuhu/res.git
git fetch取回所有分支(branch)的更新
实验五:关于Git branch
1.查看当前分支git branch
2.创建本地分支git checkout -b newBranch
3.创建远程分支 需要先创建一个本地分支执行git push origin newBranch:newBranch
这时远程分支就变成2个
然后新建一个newBranch.txt文件依次执行命令发送到远程仓库
查看远程仓库res,newBranch.txt就被上传了
4.删除远程分支git push origin --delete newBranch
删除本地分支git branch -d newBranch
实验六:关于冲突
首先修改本地res中的readme.txt文件
然后依次执行命令发送远程仓库中
远程仓库中查看已被修改,上传成功
继续修改本地respository中的readme.txt文件
然后依次执行命令发送远程仓库中,然后发生报错
我们看看具体错误信息什么意思
首先告知我们发送出错,重点是下面两行,它让我们先集成远程的更改,也就是说远程被本地res更改了,形成一个新的版本了,此时我们必须把这个版本先更新/同步下来,再进行发送/推送,所以我们就更新一下,执行git pull https://gitee.com/nicohuhu/res.git
打开本地respository中的readme.txt文件发现产生了冲突,HEAD表示本地修改的内容,e9a9bd65912e3d09b11fd8fe681885992dfb0d7c这个表示远程仓库修改的内容,手动修改后保存,此时执行其他命令会提示必须优先处理合并,否则无法进行其他操作
可以执行git reset --hard 作用是重置暂存区与工作区,与上一次commit保持一致,也就是回到了本地仓库的最新版本,但并没有解决推送到远程仓库的问题
如果长时间没有推送到远程仓库,再次推送会提示过期
需要git pull origin master(与远程仓库建立连接后这个命令也可以拉取更新)操作重新拉取,然后修改本地readme.txt文件再次add 和commit 然后push 依次操作推送到远程仓库
刷新远程仓库,推送成功
总结:以上场景相当于你跟同事共同维护一个master分支,对方更改文件后提交到远程仓库gitee,此时该文件就有了一个新的版本,此时你也修改了本地相同文件提交到gitee时,系统发现这个文件已经不是原来版本了,已经被修改了,此时就不允许你提交上传了,必须把这个文件内容同步pull到你本地进行合并,对于合并后的内容由你自己修改,觉得内容没问题了,因为你修改了文件本地仓库版本不一致那么就要commit到本地仓库,再发起提交/发送到gitee。git diff master origin/master可以查看本地与远程的差异,没有报红说明是文件内容是没有冲突的。
补充:
执行git pull https://gitee.com/nicohuhu/res.git必须先执行git init初始化。
执行git clone -b dev https://gitee.com/nicohuhu/res.git 可以clone远程分支,此处dev为分支名称。
当你将dev这个分支clone到本地,查询本地分支git branch只显示dev这一个分支,再次提交时也会上传到远程该分支名称下。