参考教程:尚硅谷
默认安装了Git,会点击“Git Bash Here”
本文主为记录自己的git学习实操过程,很小白
工作区(就是自己的本地磁盘、文件目录)→暂存区(不产生版本记录)→本地库(在本地的版本库≠GitHub上存在的库)
在本地的Git操作
初始化
git init //在使用这条指令的本地目录下 创建Git库,即生成.git文件
暂存区
- 把问件从本地库添加到暂存区
git add . //所有文件
git add hello.txt //精准到某一个文件
- 暂存区的“文件”可删除
git rm --cached hello.txt
也“只”能删存储区的,所以commit时稍微注意下(提交到本地库后,其实也能删除 相对麻烦些罢了)
- 查看文件的状态
状态:有没有commits,在暂存区和不在暂存区的文件有哪些
已经提交到本地库的文件被修改但未再次提交时,用该命令,会显示没提交(此时的文件相当于新的历史版本)
git status //使用这条指令,不会显示出已提交到本地库的文件
只要文件修改,就可以查看文件状态
- 查看文件的内容
cat hello.txt
查看的是指针指向的版本,如HEAD->master出现在最新的版本,cat显示的就是最新的那版hello.txt
本地库
- 把暂存区的文件提交到本地库中,这样就有了版本记录(本地的)
注:添加add(工作区→暂存区),提交commit(暂存区→本地库)
git commit -m "这是我的第一次提交(这个双引号里写的是日志信息)" hello.txt
//当暂存区有好几个文件时,这样的格式可以准确提交某一个文件
- 查看日志
git reflog
git log //详细的,如会显示提交者的信息
版本穿梭
可以往前/往后穿梭。
git reflog #查看各次提交的信息(这里主要看版本号)
#找到你要穿梭到的版本的版本
git reset --hard 版本号 #穿梭版本成功
#可以再次git reflog查看HEAD指针指向的版本
分支
查看&创建&切换
在别的分支上修改了代码,也要add、commit。
合并(正常)
背景:如在hot-fix分支下改了hello.txt的内容,需要合并分支。
# 切换到master
git checkout master
↑此时,cat hello.txt
显示的内容并不是hot-fix里面修改了的,而是原来master的。
# 合并:把…分支合并到当前分支
git merge hot-fix
合并(冲突)
上部分红圈:当前分支的代码;第二部分:要合并的代码。
此时,显示(master|MERGING)
解决,人为vim修改hello.txt。
【git不知道要保留哪部分】
然后,add、commit(这个commit 不能带文件名)。
这个合并,只是改master的代码。(只改你合并的分支,不该变合并过来的分支)。
远程分支
# 查看
git branch #本地分支
git branch -r #远程分支-->也可以git remote origin,origin具体是什么用git remote得到
git branch -a # 所有分支
把代码推到Github
注:分支之类的内容本文暂不涉及,因本文主要是为能体验、实现推送代码,拉取等基本操作
建远程库&取远程库别名
- 在github上建远程库,名字尽量和本地的目录名字一样
- 创建好的远程库有两个链接HTTPS和SSH(一般复制HTTPS的
- 创建别名:链接太长 不好记
git remote -v //查看现在的别名
git remote add forgit https://balabala //后面两项分别是 取的别名(最好和库名保持一致)、远程库的链接
推送本地库到远程库
git push forgit master //格式:git push 别名(用链接也行) 分支(本文环境下,用master就行)
//意思是,把本地的master分支推送到forgit这个远程库中(forgit是别名)
因网络问题,很可能失败, 可多试几次
拉取远程库到本地库
使用场景:远程库被别人改了,本地库“落后”了,想跟上远程库的节奏
拉取动作,会自动提交本地库,可用git status验证
git pull forgit master
//意思是,把远程库的master分支过来
克隆远程仓库到本
- 克隆,不需要登陆账号
- 在本地目录(没有.git文件夹的)下”Git Bash Here“,输入
git clone 仓库链接
- 本地目录下会出现.git何仓库文件
- clone干的事情:①拉取代码 ②初始化本地库(即有.git文件夹)③创建别名(默认为origin)
- clone下来项目之后需要提交到自己的仓库,做如下操作(在clone下来的项目的目录下)
rm -r .git #删除原有git信息,有问题一直回车即可
git init #初始化.git
#之后就当作是自己的项目来正常操作
码云
就是用GitHub仓库的HTTPS链接导入,而且导入成功后,可点击码云的仓库名后面的”刷新“,实现同步GitHub上的新版本
其他命令
else
mkdir gitTraining #创建gitTraining文件夹
cd gitTraining #进入gitTraining文件夹
touch helloGit.txt #创建helloGit.txt文件
git remote add origin https://sample.git
#这样就将https://sample.git添加为远程仓库,并将其命名为origin
#"添加远程仓库"-->给远程仓库(链接)取别名
git push origin master master
#格式:git push 远程仓库名 本地分支名 远程分支名
git pull origin master:master -f
#将远程仓库origin的master分支的内容拉取到本地master分支
#git pull 远程主机名 远程分支名:本地分支名
#强制拉取需要用到-f参数
git记录可视化
git log --graph --all
遇到的坑
git不能添加空文件夹
解决方法:为空文件夹添加.gitkeep文件(这个文件它本身是没有意义的,git好像也没有赋予它特殊使命,更像是团队使用者之间的一种约定,仅仅是为了标记这个空的文件夹是需要添加到仓库)
find ./ -type d -empty -exec touch {}/.gitkeep \;
# 为该目录下的所有空文件夹添加.gitkeep文件(含.git中的空文件夹
find . -type d -empty #找到该目录下所有空文件夹
22.9.12目前这些够我体验git和初步提交版本(待更新)