初次接触Git ,记录一些坑
git命令行和Linux差不多
配置GIT,我们需要创建一个当前登录用户的全局配置文件.gitconfig
这个文件的路径默认创建在用户环境变量HOME下
首次配置需要通过输入git指令创建:
git config --global user.name "tl" #名称
git config --global user.email "xxx" #邮箱
生成ssh公钥
在用户目录下运行Git Bash , 输入
ssh-keygen -t -rsa
上面的是私钥,不能告诉别人;下面的是公钥,把公钥复制到gitee/github上,每个电脑有一个公钥,将之绑定在远程仓库,就可以免密连接远程仓库;
版本库连接远程仓库
注意:远程库中仓库的名称尽量和版本库所在的文件(工作区)名称一致;
有两种方式:
1.
1.
1. 先创建版本库,再连接远程仓库;
2.
2.
2. 直接克隆一个远程仓库,然后在这个克隆的仓库(工作区)上进行开发。
先创建版本库,再连接远程仓库
创建版本库
创建一个空目录,cd进去,显示当前路径;
这个空目录就是工作区;
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
初始化版本库,版本库就创建好了;
$ git init
连接远程仓库
$ git remote add origin git@gitee.com:tl/learngit.git
第一次连接远程仓库时需要把版本库的master分支和远程的master分支关联起来:加上-u
origin 是远程库的默认别称;
$ git push -u origin master
查看连接状态
$ git remote -v
删除远程库
$ git remote rm <远程库平台名字(自定义的)>
直接克隆一个远程仓库
$ git clone git@gitee.com:tl/learngit.git
执行后,本地就有learngit文件夹了,也即工作区;
工作区与版本库
版本库可以有多个分支;默认的是一个主分支;
本地和远程仓库的礼尚往来
本地通过push更新远程仓库
通过该指令将某个分支的所有文件或者所有修改的文件更新到远程仓库;
$ git push
本地通过pull将远程仓库的更新合并到本地
有时候远程仓库文件比你的本地更新,你需要将其合并来更新本地的,从而达成一致;
$ git pull
更新远程仓库
本地工作区创建了一个文件或者修改了某个文件,需要添加到缓存,再到分支,再push到远程仓库;
$ git add <file>
$ git commit -m "注释"
$ git push
删除文件
删除单个文件:$ git rm <file>
删除某个路径:$ git rm -r <路径>
仅删除远程仓库与版本库的文件
加上–cached就不影响工作区的文件;
$ git rm --cached <file>
$ git commit -m "注释"
$ git push
仅删除版本库的文件
$ git rm --cached <file>
$ git commit -m "注释"
远程仓库连同工作区的文件一起删
注意:这里的删除把本地工作区的也删除了;
$ git rm <file>
$ git commit -m "注释"
$ git push
查看版本库状态
用于提示是否有更新文件没有加到缓存区,或者没有提交到分支上;以及本地与远程之间的差异;
$ git status
更新版本库
1.
1.
1. 添加修改到缓存区;
2.
2.
2. 提交修改到版本库的分支上;
$ git add <file>
$ git commit -m "注释"
查看版本库与工作区的差异
$ git diff HEAD -- <file>
查看已提交到分支上的文件
$ git ls-files
撤回restore
顾名思义,就是撤回的意思;
$ git restore <file>
版本回退reset
$ git reset --hard HEAD^
或
$ git reset --hard HEAD~100
或
$ git reset --hard commit id(模糊查询,不用补全)
查看文件修改记录
注意:有时运行$ git log
会卡住光标,解决办法就是扩大命令行窗口;
$ git log
查看你的每一次命令记录
$ git reflog
带git的指令是处理版本库的,不带的则处理工作区的
默认情况下,版本库会更新本地工作区的文件
只要把文件提交到分支上,就不用担心误删了
因为可以通过回退找到之前的版本;
Git是基于存储修改的,他会记录你每一次修改,并通过指针来指向某一次修改版本,操作快,占存小。