git的配置和基本使用 01
[TOC]
19年5月16号看了文章,发现写的有点啰嗦,于是重写为 -- [git的配置和基本使用 02]()
因为之前博客有出现删库的操作,打算把博客的内容备份到github中,记录git的使用和出现的问题
2018/11/23更新
Git介绍
Linus方便Linux内核管理而创建的一个版本控制器;
现在常用的版本控制器是SVN/Git,而Git支持分布式管理被广泛使用;
现在的GitHub/Gitlab等是基于Git的网页版本控制器,Gui鼠标点点点;
简单来说就是Git是现在流行的版本控制器,推荐使用。至于Git优点会用
才体会到,就不扯了;
本地使用软件
github四大位置
说明:1.git跟踪(add)本地代码到待提交列表,2.将列表信息提交(commit)到本地仓库,3.本地仓库推送(push)到远程仓库
1. 下载安装git 下载地址
2. git本地的配置--主要是配置用户信息
2.1 生成本地的ssh公钥
命令行操作,输入后一直回车,进入用户根目录下的.ssh目录下的id_rsa.pub文件,复制邮箱前面的代码(公钥)进行绑定
ssh-keygen -t rsa -C "your_email@youremail.com"
2.2 使用SSH Keys进行绑定(以后提交代码就不用每次都输入用户信息了)
进入github主页setting -- 在出现的页面左侧点击SSH and GPG keys -- 在出现的页面右上角点击New SSH key -- 在出现的页面中填写title(随便)和key(前面复制的公钥信息)
2.3 检查操作是否成功
命令行输入--成功则显示:You've successfully authenticated, but GitHub does not provide shell access
ssh -T git@github.com
2.4 设置git提交的用户信息(用户名和邮箱)
git config --global user.name "your_name" git config --global user.email "your_email@youremail.com"
2.5 查看/修改git提交得用户信息(全局使用--global)
//查看 $ git config user.name $ git config user.email //修改 $ git config user.name "name" $ git config user.email "email"
2.6 关联一个远程仓库并推送到远程主分支
推荐在github上新建一个仓库而不是改原来已有的仓库名git remote add origin git@github.com:yourName/yourRepo.git git push -u origin master
#栗子
# 告诉Git你是谁
git config --global user.name "fishhello"
git config --global user.email "2874497884@qq.com"
#关联fishhello账号下的learn库--需要在github自建好learn仓库
git remote add origin git@github.com:fishhello/learn.git
# 选择你喜欢的文本编辑器
git config --global core.editor vim
# 添加一些快捷方式(别名)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit
3. 创建本地仓库
3.1 第一种:clone仓库
git clone xxxx.git
3.2 第二种:初始化git本地仓库
git init .
4. git的简单使用
4.1 提交文件代码到暂存区
git add <filename>
git add *
4.2 提交到本地仓库
git commit -m "代码提交信息"
4.3 提交到远程仓库
master是初始的默认分支,可以指定
git push origin master
#第一次使用加一个-u
git push -u origin master
提交到远程仓库出现的问题
这是因为本地的github中我的仓库是原来用的,只改了仓库的名字,里面有文件,导致仓库没有同步
git push origin master
To git@github.com:fishhello/blog.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:fishh ello/blog.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by anothe r repository pushing
hint: to the same ref. You may want to first integrate t he remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push -- help' for details.
一、可以把原来github上指定的仓库删除重建,然后再提交远程仓库
二、可以运行命令把远程仓库与本地的仓库同步,然后再提交远程仓库
git pull --rebase origin master
补充-删除远程文件
git rm <文件>
rm后,跟踪->提交本地->远程
5. 查看工作目录和缓存区的状态
git status
6. 查看已提交到项目历史的信息
#空格键滚动,q键退出,-n指定输出log条数
git log
git log -n 4
#查看记录的每一次命令
git reflog
6. checkout的使用
6.1 可以查看仓库的旧版本信息(就是你以前的所有提交信息)
#在查看旧版本信息的时候,你需要知道旧版本的id,然后使用 checkout+版本id 查看信息
git log --oneline //显示:版本id+版本提交时commit的注释
git checkout -b '分支名' de99788(版本id) //把de99788的提交内容切换成一个新的分支
//这时候命令行使用ls看看(就会显示版本id提交时的内容)
#返回当前的版本
git checkout master
6.2 如果你只对某个文件感兴趣,你也可以用 git checkout 来获取它的一个旧版本
git checkout de99788 文件名
#如果你不想保留旧的版本,你可以用下面的命令回到到最近的版本
git checkout HEAD 文件名
6.3 撤销工作区的修改
用本地仓库里的版本替换工作区的版本(也可以在不小心删除工作区的一个文件后用于恢复)
#修改readme.md文件后发现修改错误,需要回到修改前状态
git checkout -- readme.md
6.4 分支
主分支为master,HEAD指向当前分支 创建与合并分支
创建:把HEAD指向新的分支
合并:把master主分支指向新分支(如果不同分支修改了相同的文件会造成合并冲突,需要手动解决)
#创建并切换到新的分支(切换后用*标出当前分支)
git checkout -b dev
#查看当前分支
git branch
#切换当前分支到master主分支
git checkout master
#合并指定分支到当前分支上(快速合并)
git merge dev
#删除dev分支
git branch -d dev
7. 撤销缓存区中的文件
如果把一个错误的文件add进了缓存区后
可以使用git reset HEAD xxx和git checkout -- xxx 恢复
vim reset1
vim reset2
git add .
#发现reset1有错误,需要取消reset1的缓存
git reset HEAD reset1
#查看信息确认reset1已清出缓存区(绿色),变成modified状态(红色)
git status
#使用checkout清除修改 ------------------------------把文件弄脏后恢复到仓库状态
git checkout -- reset1
8. 从本地仓库中撤销提交(revert、reset)
reset的使用需要谨慎(只能在自用的仓库使用)
8.1 git revert 在项目历史中增加了一个提交来撤销修改,而不是删除
vim revert
git add revert
git commit -m 'revert test'
#撤销提交命令
git revert HEAD
8.2 取消最近的提交--版本回退(比如取消最近两次的commit)
git reset --hard HEAD~2
或者
git reset --soft HEAD~1 //柔和的方式撤销最新一次的提交
9. 文件删除
未追踪文件:在工作区的本地代码
#看看有哪些文件需要删除的
git clean -n
#执行删除
git clean -f
#删除不需要文件
git rm xxx //会把删除记录添加到待提交列表中
10. 比较工作区和本地仓库文件的diff
#以本地仓库中的文件为准,对比工作区:缺少-,增加+
git diff HEAD -- 文件
11. .gitignore(提交时忽略特定文件)
新建.gitignore与.git目录同级
可以使用通配符,相对路径等指定文件
12. 合并冲突
1.先同步本地仓库
2.冲突原因:修改了同一个文件的同一个地方,造成Git无法自动合并代码
3.把别人的代码上下移动,或(跟造成冲突的同事)沟通后确认后把它删除
4.跟踪提交再走一遍
git pull
xxxx修改
git add
git commit -m 'xx'
git push [origin xx分支]
13. 使用遇到问题
emsp;1.修改git提交用户名(忘了):git config user.name "shafish"
评论已关闭