游离操作 (经常)
checkout 几种使用方式
1 git checkout -- 文件名 (检出 移除文件前面的动作 )
2 git checkout 分支 (切换分支)
3 git checkout sha1 (切换到游离状态)
场景:
master 分支上4次 commit
git checkout sha1(历史版本的)
/*
1. 您处于游离状态
2. 您可以写操作,但是写操作必须要提交 (commit --》 sha1)
3. 如果你要保存你的修改,必须建立分支,这个分支必须指向于 sha1
*/
echo 'xxxx' >> a.txt
git add .
git commit -m '...' //sha1:123456
//保存修改 起一个新分支,这个分支指向
git branch 新分支名 123456
git switch -c <new-branch-name>
//不保存修改 不用起分支指向于这个版本就ok
git checkout master
保存现场 (经常碰到)
git使用规则:
1. 建议:(可以不遵守)在一个功能没有开发完毕的情况下 ,不要commit(形成版本)
2. 规范:(必须遵守) 如果两个分支处于不同的commit阶段,一个分支在没有commit情况下不能切换到其他分支
场景:
git init
touch a.txt
git add .
git commit -m 'init'
git checkout -b dev
echo 'dev...' >> a.txt
//可以切分支 因为: dev 和 master 指向同一个commit ,dev和 master 共享工作区,切master 也可以看到 dev分支的修改
git add .
git commit -m 'dev 1' //dev产生一个新的版本 ,dev分支 指向于这个新的版本
//可以切换
echo 'dev xxxx' >> a.txt
//不可以切换分支的 因为: dev 和 master 指向不同的commit 阶段,不会共享工作区 ,如果切过去会丢失当前的dev修改操作
/*
error: Your local changes to the following files would be overwritten by checkout:
a.txt
Please commit your changes or stash them before you switch branches.
Aborting
*/
/*
方式一:分支前提交
方式二:保存现场: git stash
*/
git stash // 保存没有写完的代码 :保存现场
保存的代码实际是和上一个commit 代码做对比 ,只要新的代码都会被保存起来
git checkout master
...
切回来
git checkout dev
git stash pop // 还原未开发完毕的代码 :还原现场
Git-bash 文件操作相关命令
- touch:创建文件
- cat:查看文件
- less:查看大文本文件
- vi:visual interface
- Esc 退出到命令模式
- i 进入插入模式
- :q 退出vi
- :w 保存编辑
- :wq 保存并退出
- :q! 强制退出不保存修改
- vi 的所有操作基本全部是命令,这里掌握基本使用基于可以了
- 有时候使用 git commit 进行提交的时候希望能多写几行提交日志,这时候可以省略 -m 参数进入 vi 编辑模式