Git命令行操作
本地库的操作
一、本地库的初始化(创建本地库)
在创建好的文件夹目录下执行
git init
命令,系统自动生成.git
文件夹设置签名,有项目级别和系统级别的签名(作用:起到表示开发者信息的作用,与
github
账号没有关系)签名形式:
user.name
user.email
设置项目级别的签名:当前本地库有效,保存在
.git/config
中git config user.name [用户名]
git config user.email [邮箱]
设置系统级别的签名:当前登陆操作系统的用户范围有效保存在系统的家目录
~/gitconfig
中(通常只要设置系统级别的就够了)git config --global user.name [用户名]
git config --global user.email [邮箱]
原则:就近原则,优先使用项目级别
基本操作命令
添加、提交、查看状态
git status
作用:查看工作区和暂存区的状态
提示:
On branch master(在master分支/主干)
No commits yet(本地库没有东西可提交)
Nothing to commit(暂存区没什么东西)
git add
作用:添加到暂存区
git rm --cached <file>
作用:从暂存区中移除
git commit <file>
作用:提交暂存区到本地库(需要输入信息,记录本次提交干什么事)
git checkout -- <file>
git commit –a
git reset HEAD <file>
git commit -m "commit message" <file>
作用:-m “书写添加信息”
查看日志
git log
作用:操作日志的显示
git log --pretty=oneline
作用:操作日志的简洁显示
git log –oneline
作用:操作日志的更加简洁显示
git reflog(常用)
作用:操作日志的带指针更加简洁显示
版本的前进与后退
本质是head索引的变化
- 基于索引值的方式
前进/后退:
git reset –hard [索引值]
- 后退一步
it reset –hard HEAD^
- 后退n步
git reset –hard HEAD~n
文件的删除和找回
前提:已经commit到本地库中
还是通过git reset –hard
命令回到某个版本
Hard参数会刷新工作区和暂存区
比较文件
git diff [文件名]
git diff [版本号][文件名]
分支操作
git branch –v
查看分支
git branch [new branch name]
创建新的分支
git checkout [branch name]
切换分支
合并分支
step1: 切换到被合并的分支上
step2: 合并分支
git merge [需要合并的新的分支]
冲突的解决
问题原因:两个分支都修改了相同的文件提交到本地库,git不知道听谁的
1:合并分支
git merge [分支名]
2:修改合并后产生冲突的文件
vim
3:
git add [文件名]
4:
git commit –m “日志”
不需要带文件名
创建远程github的别名
git remote add origin [github的http的url]
git remote –v
fetch(取回)
push(推送)
往
github
的仓库中推送git push origin master
分别是别名+分支
从远程库clone到本地
git clone [url]
完整的把远程库下载到本地
创建origin别名
初始化本地库
从远程库拉取
Pull=fetch+merge
法1:
Git pull [远程地址的别名] [远程地址的分支名]
法2:
Git fetch [远程地址的别名] [远程地址的分支名](不需要登陆,把远程库的内容抓取到本地,本不会合并到本地库)
Git merge [远程地址的别名/远程地址的分支名](合并远程库)
跨团队协作
Fork到远程库
Pull request到本地仓库