一、配置Git
配置账户名:git config --global user.name "name"
配置账户邮箱:git config --global user.email "email"
查看设置信息:git config --list
二、创建Git仓库和提交文件
直接在项目目录下右击—>Git bash Here,打开Git命令行界面
git init //创建一个Git仓库
git add FileName //将工作区的(workStation)的FileName文件添加到Git暂存区(stage/index)
git add .gitignore //将.gitignore文件添加到暂存区
git add . //将当前Git bash Here路径下工作区的(workStation)全部文件都添加到Git暂存区
git status //查询工作区的文件状态
#把暂存区中的文件提交到本地仓库中并添加描述信息
git commit -m "提交" //将暂存区的文件提交到Git仓库
git log //查看提交到Git仓库的记录
#显示log,但是不显示很多凌乱的信息
$ git log --pretty --oneline
三、删除与恢复操作
#删除工作区的fileName文件,如果commit则会继续删除暂存区和仓库的fileName文件
$ rm fileName
# 删除工作区和暂存区的fileName文件,如果commit则会删除仓库文件
$ git rm fileName
# 删除工作区和暂存区的fileName文件,如果commit则会删除仓库文件
$ git rm -r fileName
#工作区和暂存区的同一个fileName文件存在不同内容,强制删除工作区和暂存区的fileName文件
#如果commit则会删除仓库文件
$ git rm -f fileName
# 只删除暂存区的fileName文件
$ git rm --cached fileName
#撤销更改在工作空间但不在暂存区的文件
git restore file
#将暂存区的文件从暂存区撤出(从暂存区撤出file文件,不更改工作区文件)
git restore --staged file
#
#处理大文件:
git rm --cached giant_file #仅删除暂存区的giant_file文件
git commit --amend -CHEAD #修改上次提交
# 修改上次提交的描述信息
git commit --amend //把新的内容添加到之前的commit里面,即用新的提交取代了原始提交,但不改变提交描述
git commit --amend -m "提交描述" //用新的提交取代了原始的提交,且改变了描述
四、Git远程库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YEJPtzBC-1639391863846)(C:\Users\Zz\AppData\Roaming\Typora\typora-user-images\image-20210427201903779.png)]
#查看自己添加的远程库
$ git remote #只能看到自己设置的名字
$ git remote -v #能看到别名和远程库地址
#添加新的远程库
$ git remote add <alias别名> <url远程库地址>
#远程地址重新命名
$ git remote rename <old> <new>
#删除指定到远程地址的本地别名
$ git remote remove <name>
#推送本地Git仓库master分支下文件到本地库
$ git push <alias> <branch> # 如 git push name master
#将本地的branch分支推送到alias主机,同时指定branch为默认主机
#下次如果还要推送到这个主机,直接 git push即可
$ git push -u <alias> <branch>
#上面两种是matching方式
$ git push #simple方式推送,需要用-u指定为默认主机
#将远程库拉取到本地工作区(会和工作区的文件合并)
$ git pull <alias> <branch> #本地工作文件将会更新,如果有同名文件,将会强制更新本地库文件
#强制拉取(本地库和远程库有不同的文件时)
$ git pull <alias> <branch> --allow-unrelated-histories #把远程库和本地库同步
#将远程库文件抓取到暂存区,此时本地库和工作区没有合并
$ git fetch <alias> <branch>
# 将缓存区分支文件和本地库文件进行合并(pull= fetch+merge)
$ git merge <alias> <branch>
#将远程库克隆到本地
git clone <url>
五、版本回退
# 查看Git的历史提交记录
$ git log
# 查看Git所有的历史提交记录
$ git reflog
#版本回退(通过指针HEAD)
$ git reset --hard 版本号 #回退到版本号对应的版本
$ git reset --hard HEAD^ #回退一个版本
$ git reset --hard HEAD^^ #回退两个版本
#命令参数有 soft, mixed, hard 三种类型:
#(1) 参数 soft 表示本地Git仓库移动HEAD指针。(软回退)
#(2) 参数 mixed 表示本地Git仓库移动HEAD指针,重置暂存区。(混合回退)
#(3) 参数 hard 表示表示本地Git仓库移动HEAD指针,重置暂存区,重置工作区。(硬回退)
#远程库回退(先将本地库回滚,再强制推送到远程库)
$ git reset --hard 版本号 #回退到版本号对应的版本
$ git push origin master -f
六、文件查看
#列出工作区的所有文件
$ ls
#列出Git本地库的所有文件(包括仅暂存但尚未提交的文件)
$ git ls-files
#列出git repo正在跟踪的所有已提交文件
$ git ls-tree --full-tree -r --name-only HEAD
七、合并远程两个远程仓库(将A仓库合并到B仓库)
############前提#######################################
A仓库远程库已有,无本地库
B仓库远程库已有,有本地库(没有本地库可以建好后把远程库同步过来)
|远程仓库名 | 本地仓库分支 |
| repo_A | 无 |
| repo_B | master |
$ git branch #列出所有分支
$ git branch newBranch #创建新的分支
$ git branch -d Branch #删除Branch分支
$ git checkout master #切换到master分支
$ git checkout -b newBranch #创建并切换到newBranch
$ git merge temp #合并temp分支到当前分支
#######################################################
#1、将远程库A加入到本地仓库B,此时本地仓库对应远程库A与B
$ git remote add repo_A http://...(远程库地址)
#2、从远程库A抓取数据到本地仓库
$ git fetch repo_A #repo_A是远程仓库A的别名
#3、创建本地仓库新分支Temp并关联到远程仓库A/master分支
$ git checkout -b Temp repo_A/master #Temp:新分支repo_A/master:远程库A的master分支
#4、切换会本地分支master
$ git checkout master
#5、将Temp合并到master分支
$ git merge Temp #若提示fatal: refusing to merge unrelated histories 则进行第6步
#6、错误处理
$ git merge Temp --allow-unrelated-historie #会有提示
# 可以直接下面3,4步退出黑框。如果要输入解释的话就需要1-4步:
# 1.按键盘字母 i 进入insert模式
# 2.修改最上面那行黄色合并信息,可以不修改
# 3.按键盘左上角"Esc"
# 4.输入":wq",按回车键即可
#7、解决冲突
git add .
git commit -m "合并"
git push online_repo1 online_a:online //上传到远程库
git checkout master
git merge Temp
git branch -d Temp #删除合并后的临时分支Temp