命令行输入操作
1.git init 初始化git仓库
2.git add <file> 添加n个文件
3.git commit -m <message>添加说明信息
4.pwd 显示当前目录
5.ls 显示目录
6.ls -ah 显示隐藏目录
7.git status 可以让我们时刻掌握仓库当前的状态
8.git diff 查看diffrence 显示的格式是unix通用的diff格式
9.git log 显示从最近到最远的提交日志,如果信息太多,可以加上 --pretty = oneline
10. HEAD 当前版本,更准确地说,是当目前工作区(working directory)基于的那个版本。首先,本地改动不会改变 HEAD。其次,HEAD 本身就是一盒指针,绝大部分情况是指向 branch(比如 checkout 或者 reset 命令),但个别情况可以指向 commit,这种叫 detached HEAD
11. git reset —hard commit_id 回溯到当前历史版本
12.git log 查看提交的历史,以便确定回到哪个版本
13.git reflog 查看命令历史,以便确定回到哪个版本
14.cat <file> eg: cat package.json 查看文件内容
15.git checkout -- readme.txt 把readme.txt在工作区的修改全部撤销
16.git reset 既可以退回版本,又可以把暂存区的修改退回到工作区
case1: 当你改乱了工作区的某个文件的内容,想直接丢弃工作区的修改,使用git checkout -- .
case2: 当你不但改乱了工作区某个文件的内容,还添加到暂存区时(即 git commit ...) 想丢弃 修改,可使用以下两步操作:
step1: git reset HEAD <file>
step2: 回到case1,执行case1操作
注: 版本回退,前提是没有推送到远端程序(即 git push remote ...)
17. rm <file> 删除文件
18.git status 查看是否删除
两种选择: 1. git rm + git commit
2. git checkout -- <file> 误删
远程操作
一.创建远程仓库 (通常为github, gitlab, 码云)
1.创建SSH Key ,在用户根目录下,查看是否存在 .ssh目录
如果有,再查看是否存在 id_rsa(私钥)和id_rsa.pub(公钥)两个文件
如果没有,命令行:在根目录下 ssh-keygen -t rsa -C "xxxx@example.com"自己邮箱,
最好是远程仓库申请时的邮箱,如github上的邮箱,然后一路回车,使用默认配置
2.打开github, 找到Account Settings,找到侧边栏上的SSH页面
Add SSH key, 粘贴key中的id_rsa.pub
点击Add key 完成操作
二.添加远程库
本地创建了库,又想在github上建库,并将两者同步
登录github , 找到 create a new pro , 然后 respositiy name
关联远程库: git remote add origin git@server-name:path/repo-name.git
关联后使用命令: git push -u origin master 第一次推送master分支的所有内容
此后,每次提交后,只要有必要,就可以使用命令git push origin master提交最新的修改
二.从远程库克隆
git clone git@github.com:xxx/xxxx.git
cd git/...
ls
三.创建与合并分支
1. 创建dev分支,然后切换到dev分支
git checkout -b dev 表示创建并切换分支
等价于 git branch dev + git checkout dev
2.查看当前分支: git branch
3.修改并提交: git add readme.txt
git commit -m "branch test"
4.切换到master: git checout master
5.合并分支: git merge dev 合并到当前分支
6.合并完之后, 删除dev分支: git branch -d dev
-d/-D均可删除 -D 强制删除
7.删除后,再次查看branch: git branch
四.解决冲突
1.git status 查看发生冲突的文件
2.git log --graph 查看分支合并图
五.分支管理策略
合并分支时,通常会用fast forward模式,但在此模式下, 删除分支后,会丢掉分支信息,
如果强制禁止fast forward模式, git 会在merge生成一个新的commit
这样,从分支历史上就可以看出分支信息
合并分支时,用--no --ff参数就可以用普通模式合并了,合并后的历史分支,
可以看出做过合并,而fast forward则合并就看不出曾经做过合并
六. bug分支
git stash 可以把当前工作现场“储藏”起来
git stash list查看刚保存的工作现场
工作现场回复方法
1. git stash apply 恢复后stash内容并不删除, 需要用git stash drop来删除
2.git stash pop 恢复同时把stash内容也删除了
最后用git stash list确认是否删除
feature分支: feature分支上进行开发,完成后合并, 然后删除
多人协作: 远程仓库名默认为: origin
查看远程库信息: git remote / git remote -v 更详细
master分支是主分支,因此要时刻与远程同步
dev分支是开发分支,团队所有成员都需要在上面工作,也需要与远程同步
git push origin master / dev
变基: git rebase 把分支的提交历史 “整理”成一条线
七.标签管理
创建标签: 1.切换到需要打标签的分支上
git branch
git checkout master/dev
git tag <name>
2.查看所有标签: git tag
3.对历史commit打标签: git tag v1.0
4.git tag <tagname> 查看标签信息
5. 查看指定标签信息: git tag -a <tagname> -m "xxx..."
操作标签:1.git push origin <tagname> 推送一个本地标签
2.git push origin --tags 推送全部未推送的本地标签
3.git tag -d <tagname> 删除一个本地标签
4.git push origin: refs/tags/<tagname> 删除一个远程标签
常用的git开发流程图及工具
git-flow:
常用git开发工具: TortoiseGit、source tree、github on desktop