####git命令行操作
#####本地库初始化
- 初始化: git init
- 命令:git add
- 效果:
- 注意: .git目录中存放的是本地库相关的子目录和文件,不需要删除和修改。
#####设置签名
- 形式:
- 用户名: Tom
- Email地址: goodMorning@qq.com
- 作用: 区别不同开发人员的身份
- 辨析: 这里设置的签名和登录远程库(代码托管中心)的账号密码没有任何关系
命令:
- 项目级别/仓库级别:仅在当前本地库范围有效
- git config user.name tom_pro
- git config user.email goodmoring@qq.com
- 信息保存的位置 ./.git.config文件中
- 系统用户级别 :登录当前操作系统的用户范围
- git config –global user.name tom_glb
- git config –global user.email goodmoring@qq.com
- 信息保存的位置 cd ~ 到home目录下的.git.config 文件中
- 级别优先级
- 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
- 如果只有系统用户级别的签名,就以系统用户级别的签名为准
- 二者都没有不允许
####命令汇总
- 项目级别/仓库级别:仅在当前本地库范围有效
状态查看 获取当前状态
- git satus
- 可以查看工作区.暂存区的工作状态
- 添加操作 将文件提交到暂存区
- git add xxx文件
- 将工作区的新建/修改添加到暂存区
- 提交操作
- git commit -m “commit message” 文件名
- 将暂存区的内容提交到本地库
- 查看日志
- git log 查看你的提交日志
- 多屏显示方式:
- 空格向下翻页
- b向上翻页
- q退出
- 多屏显示方式:
- git log –pretty=oneline 每个提交记录只占一行
- git log –oneline 将hash值只显示一部分占一行
- git reflog 能显示版本之间需要移动指针的次数
- git log 查看你的提交日志
- git rm –cached xxx文件 将文件从暂存区移出变成未追踪的文件
######分支的前进后退
- 基于索引值操作(推荐)
- git reset –hard [局部索引值]
- git reset –hard 79c7a63
- 使用^符号:只能往后退有几个 ^就代表后退几个版本
- git reset –hard HEAD^
- 使用~符号 波浪线后的n代表后退几个版本
- git reset –hard HEAD~n
######reset 命令的三个参数对比
- –soft 参数
- 仅仅在本地库移动指针
- –mixed参数
- 在本地库移动HEAD指针
- 重置暂存区
- –hard 参数
- 在本地库移动head指针
- 重置暂存区
- 重置工作区
####删除文件
- 能找回删除的文件的前提是:删除前,文件存在的状态提交到了本地库
- 操作:git reset –hard[指针位置]
- 删除操作已经提交到本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用HEAD
####比较文件
- git diff [文件名]
- 将工作区中的文件和暂存区进行比较
- git diff [本地库中的历史版本] [文件名]
- 将工作区的文件和本地库历史记录比较
####分支的操作
- 查看所有分支 git branch -v
- 创建一个分支 git branch [分支名]
- 切换分支git checkout [分支名]
- 合并分支
- 第一步:切换到接受修改的分支上(被合并的,增加新内容) git checkout [被合并的分支名]
- 第二步:执行 git merge [有新内容的分支名]
- 解决冲突
- 冲突的表现
- 1.先使用git marge[分支名] 如果有冲突会提示你手动合并
- 2.使用vim编辑文件删除特殊符号解决冲突问题
- 3.使用git add [文件名] 提交
- 4.使用git commit -m “xxx” 提交 注意不要后面不要加上文件名
####为常用操作起别名
查看所有存在的别名
git remote -v
如将远程库的地址取别名为origin:git remote add origin https://github.com/diedline/huashan.git
####推送和克隆
#####推送
将本地的资源推送到远程
git push [别名][分支名]
#####克隆
- 命令 git clone[远程地址]
- 完整的将远程库资源下载到本地
- 创建oragin远程地址别名
- 初始化本地库
- 效果
- 完整的把远程库克隆到本地
- 创建oragin远程地址别名
- 初始化本地
如果远程库需要多人协作的话可以在库的settings中选择Collaborators 将添加邀请发给另外一个人
如果你需要登录其他人的GitHub可以将windows凭据管理器中GitHub的凭据删除
#####远程库修改的拉取
如果觉得不会产生冲突的话直接使用
git pull origin master
如果是为了保险可以先fetch看一看,如果没有问题再合并分支
- pull 相当于fetch + merge
- git fetch [远程库地址别名][远程分支名] 使用 git checkout [远程地址别名/远程分支名] 切换到那个分支然后cat 看文件
- git merge [远程地址别名/远程分支名]
####协同开发冲突的解决
如果当你push时远程库和本地库冲突了,可以先将远程库pull拉取下来获取最新版本的文件,然后手动修改冲突的文件然后git add git commit (注意commit 后面不需要加文件名)提交到本地库最后push
####跨团队协作
- 先fork获取分支
- 然后再将项目克隆到本地修改上传到自己的远程库
- 然后使用Pull requests 将自己的修改提交给别人
####使用SSH登录免除每次push都需要输入密码的麻烦
cd ~ 进入用户家目录
rm -r .ssh/ 删除以前存在的ssh
ssh-keygen -t rsa -C 邮箱地址 生成ssh密匙目录
cd .ssh/ 进入.ssh目录查看文件列表
ll
cat id_rsa.pub 查看id_rsa.pub内容
然后将id_rsa.pub中的内容复制到github上
回到gitbash 创建远程地址别名 注意是ssh的地址
然后就可以愉快的push 文件了
####IDEA操作
#####工程初始化为本地库
选择create git Repository
#####将项目提交到本地的git
先add
然后commit Directory
然后在github 上创建一个仓库
然后通过ssh提交或者直接使用IDEA自带的push直接提交 提交成功后GitHub就能直接看到提交的文件了
复制ssh地址
在本地项目目录使用gitbash 为shh地址取别名
然后直接push 这个分支吧
成功上传
#####克隆项目
选择git
然后输入GitHub项目的url就能成功克隆到本地