参考资料:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git-分布式版本控制系统
集中式 vs 分布式:
- 集中式
版本库集中存放在中央服务器上;
- 分布式
每一个人电脑都是完整的版本库;
优势:1、不必联网; 2、丰富的分支管理功能
- tips
pwd
显示当前所在路径
ls -ah
显示当前目录下所有文件(包括隐藏文件)
- utf-8
windows自带的记事本编辑utf-8时,会自动在头部添加十六进制字符;
建议用notepad++代替,并选择utf-8 without bom格式;
- git只能跟踪纯文本文件的改动;
图片、视频、microsoft的word是二进制文件,只能覆盖修改,不跟踪每次改动情况;
本地使用
安装
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
版本库
working directory
repository
:stage
,master
(HEAD指针)
文件状态:
untracked
本地新增
Changes not staged for commit
本地修改
staged
add之后
- 日志查看:
git log
查看历史版本记录
(git log --pretty=oneline
)
(git log -- src/a.vue
)
git log --graph
查看分支合并图 (git graph 最左侧的一列为当前分支)
git show commit_id -- src/a.vue
查看指定版本及文件的修改
git reflog
查看未来版本记录
git reset --hard commit_id
git reset -- hard ^HEAD
恢复到指定版本
git status
查看文件状态
git diff
查看修改内容(对比工作区与版本库里的分支)
q
退出查看
- 新增或恢复文件
usegit add <file>...
to include in what will be committed
usegit rm --cached <file>..
to unstage 新增文件后,由暂存区恢复到本地
usegit reset HEAD <file>...
to unstage 新增或修改文件后,由暂存区恢复到本地
usegit checkout -- <file>...
to discard changes in working directory
(用版本库替换本地文件,恢复到最近一次add或commit)
- 删除文件
rm kkk
误删:git checkout -- kkk
删除版本库:git rm kkk
,git commit
远程库
- 关联远程仓库:
在本地项目根目录下执行
git remote add origin git@github.com:myfenni/learngit.git
git remote rm origin
- 推送master分支内容到远程仓库
git push -u origin master
第一次
git push origin master
- 提交本地test分支作为远程的master分支
git push origin test:master
- 提交本地test分支作为远程的test分支
git push origin test:test
- 删除远程的分支
刚提交到远程的test将被删除,但是本地还会保存的
git push origin :test
- 克隆
git clone
分支管理
- 创建并切换分支
git checkout -b dev
等同于
git branch dev; git checkout dev
- 查看本地分支
git branch
- 查看远程分支
git remote -v
- 合并某分支到当前分支
git merge dev
usegit merge --abort
to abort the merge 停止合并 - 删除分支
git branch -d dev
分支切换时对本地文件的影响
- 本地仅有develop分支,且修改了abc文件未提交时,新建本地master分支并切换到master,adb文件仍存在并处于未提交状态
git branch
//develop
git status
//文件a.b,c待add或commit
git checkout -b master
git status
//文件a.b,c待add或commit
git checkout develop
//文件a.b,c待add或commit
git add .
git commit -m 'add'
git status
//devlop分支处于clean状态,已有adc的修改
git checkout master
//master分支处于clean状态,仍无abc的修改
- 本地位于develop分支,同时有master分支,且修改了abc文件未提交时,切换到master会失败并提示:”先提交本地修改再切换分支“
git branch
//develop(位于),master
git status
//文件adc待add,或commit
git checkout master
//提示,先commit本地修改,才能切换分支
git add .
git commit -m 'add'
git status
//devlop分支处于clean状态,已有adc的修改
git checkout master
git status
//master分支处于clean状态,仍无abc的修改