1、Git环境配置
查看配置
git config -l
查看全局配置
git config --global --list
所有的配置文件都保存在本地
系统级配置文件:gitconfig 目录:Git\etc\gitconfig
全局配置文件:.getcongig 目录:C:\Users\Administrator.getconfig
配置全局配置文件:用户名和密码(必须配,可任意)
git config --global user.name "robot"
git config --global user.email "2602341707@qq.com"
2、操作本地仓库
初始化本地仓库
git init
将文件放入暂存区域
git add .
将暂存区域的文件提交到git仓库
git commit -m "附加消息内容"
相当于add与commit两句命令
git commit -am "附加消息内容"
3、查看状态信息变化
查看状态
git status
查看文件的变化
git diff aaa.txt
查看两个版本之间的区别(两个版本号)
git diff 3158ffc26409ea7bba47a 844a31fbcb918b8c2
查看工作区与暂存区之间的区别
git diff --cached
查看两个分支之间的区别
git diff 分支1 分支2
4、操作提交的版本
查看历史提交过的版本
git log
git log --oneline # 简洁显示
git log -n4 # 查看最近的4条
git log -n4 --oneline # 查看最近4条,简洁显示
查看全部提交的的信息(包括已经撤销的版本)
git reflog
回退到某个版本(先使用 git log 查看版本号)
git reset --hard 版本id
将暂存区的内容全部清空
git reset head
将暂存区的指定内容清除
git reset head 文件名
5、分支操作
创建分支
git branch 分支名
查看全部分支信息
git branch -vv
切换分支
git checkout 分支名
合并分支
git merge 新分支 # 将新分支合并到当前分支上
查看当前分支合并过的分支
git branch --merged
删除分支
git branch -d 分支名
6、解决冲突
先创建一个冲突
在master分支中创建一个新分支cart,在cart分支下创建一个文件cart.java,在文件添加hello world,然后commit到本地仓库,再切换回master中,在cart.java文件添加hi world,然后commit到本地仓库,最后合并分支,发现报错,发生冲突
$ git merge cart
CONFLICT (add/add): Merge conflict in cart.java
Auto-merging cart.java
Automatic merge failed; fix conflicts and then commit the result.
找到冲突的原因
<<<<<<< HEAD
hi world
=======
hello world
>>>>>>> cart
解决冲突
将文件中的分隔符去除掉,然后手动选择要保留的内容,将另一个删除掉,例如保存master分支的内容,修改后文件如下
hi world
然后再次add、commit即可
7、临时加任务处理
在一个工作空间中,当此时的任务还没有处理完,需要处理另一个新任务时,那么也不能将原来没处理完的任务删除,也不能和新的任务混淆,所以就需要将原来的任务暂时存储起来,然后执行新的任务
将当前工作空间的任务存储起来
git stash
然后进行处理新的任务,当处理完新的任务后,将原来的任务取出来,接着处理
取出原来的任务
git stash apply
git stash pop
8、忽略文件
先创建一个目录
mkdir doc
向目录中添加文件及内容
echo "hello world" > doc\file
创建一个忽略文件
vim .gitignore
将要忽略的文件添加到此.gitignore中
# 为注释
*. txt # 忽略所有.txt结尾的文件
!1ib.txt # 但1ib.txt除外
build/ # 忽略bui1d/目录下的所有文件
doc/*.txt # 会忽略doc/notes.txt但不包括doc/server/arch. txt
再次执行git的一些命令时,就会忽略此文件中包含的文件了
9、配置SSH
生成公钥和私钥
ssh-keygen -t rsa -C "你自己的邮箱"
接下来的步骤都可以直接按回车继续(也可以选择输入生成的文件名和密码),最后会生成一个私钥和一个公钥,在系统盘的user –> 用户名 –> .ssh文件中,id_rsa和id_rsa.pub,其中id_rsa.pub是公钥,后续将此文件中的内容复制到GitHub的SSH中
在GitHub的setting中,有一个是SSH and GPG keys,然后点击右面的New SSH key,就可以创建一个SSH key了,标题随意写,内容就复制id_rsa.pub中的内容
使用效果
比如当需要上传文件绑定地址的时候,就可以直接绑定SSH的地址,而不是HTTPS的,因为设置了SSH公钥,所以可以无需输入账号和密码,就能操作,如果使用HTTPS,则需要输入账号和密码
10、操作远程仓库
克隆
克隆远程仓库
git clone https://github.com/RobotCloud/GoldMiner.git # HTTPS方式
git clone git@github.com:RobotCloud/GoldMiner.git # SSH方式(两种方式下载的内容是一样的)
关联
将代码仓库与github关联
git remote add origin github代码仓库的url地址
查看是否已经关联成功
git remote -v
拉取
拉取master分支的内容到本地
git pull origin master
拉取全部分支的内容到本地
git pull
如果本地文件和远程仓库的文件无关联,则拉取时会报错,此时需要设置参数忽略
git pull origin master --allow-unrelated-histories
强行覆盖本地分支
git reset --hard origin/master
推送
提交到远程仓库
git push -u origin master # 将master分支上的内容推送到远程仓库的分支上
提交分支到远程仓库的分支
git push -u origin dev:dev # 提交dev分支到远程仓库中的dev分支中
提交所有分支到远程仓库中
git push 别名 --all
删除与远程仓库的关联
git remote remove 远程仓库别名 # 例如默认的别名就是origin
修改与远程仓库的别名
git remote rename 远程仓库别名 新远程仓库别名
11、上传文件到GitHub仓库
上传文件到远程仓库中的流程
git init # 初始化本地git仓库
git add README.md # 将文件添加到暂存区
git commit -m "first commit" # 将暂存区的内容提交到本地git仓库
git remote add origin git@github.com:RobotCloud/part3.git # 绑定远程仓库地址
git push -u origin master # 将本地仓库中的内容提交到远程仓库的master分支下
如果远程仓库非空,则需要先将远程仓库pull下来,然后再进行操作,修改后再push到远程仓库