Git使用实操

步骤一:安装Git

访问链接下载https://git-scm.com/downloads,选择windows完成下载

图片.png

双击安装该应用程序,依次next点击下去默认安装选项即可,个性化安装的话自己去找一下详细安装教程
图片.png

安装成功后启动栏是这样的三个Git选项
图片.png

Git CMD 这是Git提供的windows cmd小黑窗
图片.png

Git Bash 这是Git提供的Linux Shell操作Linux命令的小黑窗
图片.png

Git Gui 这是一个window图形化界面操作Git的一个应用程序
图片.png

步骤二:使用Git 这里使用CMD

进入window自己的cmd或者Git cmd都可以,执行mkdir E:\Git\respository新建一个文件夹作为Git仓库,建好后是这样一个空目录


图片.png

从cmd路径切入到该目录下,执行命令git init来初始化我们的本地仓库,这样他,会生成一个隐藏文件.git


image.png

将他显示出来是这样的
image.png
image.png

随便创建个txt文件,填入一些内容保存,然后依次执行git add . (也可以指定具体文件git add readme.txt添加到暂存区,可以理解为本地临时存放) 和 git commit -m "第一次提交"命令,完成提交


image.png

当然我们也可以用git bash操作操作以上命令也是一样的(后面我们使用git bash)


image.png

我们再次修改该文件


image.png

然后重复上一步的命令完成提交,这次我们备注成第二次提交,此时我们看到的内容就是最近一次提交的内容了,如果查看第一次提交的版本,我们切换版本就可以,使用命令git reset --hard HEAD~1表示往前回退1个版本


image.png

我们查看一下readme.txt文件的变化,发现添加的222222222222内容不见了,说明回退到了第一次提交后文件的内容


image.png

那么我怎么回到最近一次更新的版本呢?首先使用git log命令查看一下之前版本,执行后显示当前版本是第一次提交,继续执行git reflog查看当前分支master最近几次提交信息,我们最近一次commit是显示第二次提交的这个版本,记住前面的版本号98f4fc8,我们将用它来切换到最近版本,执行命令git reset --hard 98f4fc8后完成跳转,显示当前head指向版本为第二次提交


image.png

查看一下readme.txt文件,发现222222222222的内容又回来了


image.png

此时就可以在本地管理你的个人文件了,不过以上操作我们没有创建任何分支,一直都在master这个分支上操作的,所以命令行后面会显示一个master代表我们在这个分支上操作。

步骤三:使用Git 同步远程仓库

首先注册一个代码托管仓库账号,这里使用gitee,然后新建仓库

image.png

填写一些配置信息仓库名称res
image.png

创建后是这样的 只有一个.gitignore文件,复制一下这个克隆下载路径
image.png

然后执行命令git remote add origin https://gitee.com/nicohuhu/res.git与远程仓库建立连接,第一次连接需要输入账号密码
image.png

执行git push -u origin master上传,出现报错,原因是远程仓库.gitignore文件在本地仓库没有导致的,所以执行命令git pull --rebase origin master进行代码合并

image.png

image.png

此时本地仓库就多了一个.gitignore文件


image.png

然后再次上传就成功了


image.png

刷新远程仓库此时就上传成功了


image.png

修改本地内容再次 git add . 提交 git commit -m "第七次提交" 然后 git push origin master


image.png

刷新查看远程仓库,更改的内容就上传好了
image.png
步骤四:使用Git clone/fetch/pull远程仓库

git clone顾名思义就是将其他仓库克隆到本地(相当于将远程仓库复制一份到本地,本地不需要新建或者初始化本地仓库),这里我们本地新建一个文件夹叫gitclone

image.png

执行git clone https://gitee.com/nicohuhu/res.git就完整的克隆下来了
image.png

git pull 相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)
这里我们在远程仓库点击readme.txt文件进行修改并提交

image.png

本地仓库res内容是这样的
image.png

更新后是这样的git pull https://gitee.com/nicohuhu/res.git
image.png

本地仓库repository内容是这样的

image.png

更新后是这样的git pull https://gitee.com/nicohuhu/res.git
image.png

git fetch取回所有分支(branch)的更新

实验五:关于Git branch

1.查看当前分支git branch


image.png

2.创建本地分支git checkout -b newBranch


image.png

3.创建远程分支 需要先创建一个本地分支执行git push origin newBranch:newBranch


image.png

这时远程分支就变成2个


image.png

然后新建一个newBranch.txt文件依次执行命令发送到远程仓库
image.png

查看远程仓库res,newBranch.txt就被上传了


image.png

4.删除远程分支git push origin --delete newBranch
删除本地分支git branch -d newBranch
实验六:关于冲突

首先修改本地res中的readme.txt文件

image.png

然后依次执行命令发送远程仓库中
image.png

远程仓库中查看已被修改,上传成功
image.png

继续修改本地respository中的readme.txt文件
image.png

然后依次执行命令发送远程仓库中,然后发生报错
image.png

我们看看具体错误信息什么意思
image.png

首先告知我们发送出错,重点是下面两行,它让我们先集成远程的更改,也就是说远程被本地res更改了,形成一个新的版本了,此时我们必须把这个版本先更新/同步下来,再进行发送/推送,所以我们就更新一下,执行git pull https://gitee.com/nicohuhu/res.git
image.png

打开本地respository中的readme.txt文件发现产生了冲突,HEAD表示本地修改的内容,e9a9bd65912e3d09b11fd8fe681885992dfb0d7c这个表示远程仓库修改的内容,手动修改后保存,此时执行其他命令会提示必须优先处理合并,否则无法进行其他操作
image.png

可以执行git reset --hard 作用是重置暂存区与工作区,与上一次commit保持一致,也就是回到了本地仓库的最新版本,但并没有解决推送到远程仓库的问题
image.png

如果长时间没有推送到远程仓库,再次推送会提示过期
image.png

image.png

需要git pull origin master(与远程仓库建立连接后这个命令也可以拉取更新)操作重新拉取,然后修改本地readme.txt文件再次add 和commit 然后push 依次操作推送到远程仓库
image.png

刷新远程仓库,推送成功
image.png

总结:以上场景相当于你跟同事共同维护一个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这一个分支,再次提交时也会上传到远程该分支名称下。

你可能感兴趣的:(Git使用实操)