我这里是尽可能地整理一份讲究原为的开发手册。如果想详细的了解git,建议去看看廖雪峰老师的git教程就好了。好!废话不多说,上代码。
跳过安装环节
1.自报家门
git config --global user.name "..."
git config --global user.email "..."
2.建本地仓库
git init
回访建议:
初始化本地仓库的时候,git会自建一个master主仓库。此时强烈建议先commit一条记录。因为git是参照改变做的操作。如果你没个初始的改变记录,然后在git里乱逛,待会就回不来了。
原理:
工作区和暂存区
平常我们操作的目录就是工作区
3. 将工作区的操作添加到暂存区(staged)
git add .
git add demo.txt
. 是任何。
4.将暂存区的操作提交成一次提交(commit)到当前分支
git commit -m '备注的内容'
注意:只能把当前暂存区的提交到分支。如果是在工作区操作但是没有 git add .添加到暂存区,这样并没有保存当前改变。
5.查看当前状态 (工作区&暂存区)
git status
5.1. 查看当前版本库日志
git log
注意:用q退出查看模式
6.撤销改变
6.1.撤销工作区
回到最新的commit或暂存区
git checkout -- file 注意 --,没有--就是切换到另一个分支的命令
git checkout -- demo.txt
git checkout -- . (小心点用)
6.2. 撤销暂存区
git reset HEAD <file>
git reset HEAD .
6.3. 回退版本
git reset --hard HEAD^
git reset --hard 5155902
--hard 指针的意思
HEAD 当前版
^ 上一个版本
^^ 上上个版本
~100 上100个版本
commit id
注意:如果当我们回退之后又想回来。这时 git log 也无法看到之前的commit id。但使用之前commit id 也是可以回退。
7.删除文件
rm <file> linux
git rm <file>
git commit -m '内容'
注意&恢复
rm 删除文件后 git checkout -- 可以回复文件。不过因为一些编辑器有缓存功能,你会以为其他文件没有回退
git checkout -- . 恢复时当前本地目录如果有版本库里的文件名(刚删除的文件。+后缀)则会被版本库里的覆盖。如果没有git会报错
fatal: pathspec 'rm.txt' did not match any files
8.本地分支管理
8.1. 查看当前分支
git branch
8.2. 创建分支
git branch <分支名>
git brach dev
8.3. 切换分支
切换分支时git会提醒要先commit。这是因为git的是管理变化的。其实我们的每一次commit就是一个变化。
error: Your local changes to the following files >would be overwritten by checkout: demo.txt Please commit your changes or stash them before you >switch branches. Aborting
git checkout <分支名>
git checkout dev
8.4 创建+切换
git chekout -b <分支名>
git chekout -b dev
8.5. 合并某分支到当前分支
git merge <分支名>
git merge demoBranch
突然掉到vim中,怎么输入都无效。网上文章有效,这里就不细讲。
8.5.1. 解决冲突
当我们修改的内容冲突的时候,git就会提示我们需要手动修改,并用<<< ==== >>>把不同显示出来。
页面:
<<<<<<< HEAD 德玛西亚德玛西亚德玛西亚德玛西亚德玛西亚git ======= 德玛西亚德玛西亚德玛西亚德玛西亚德玛西亚vim >>>>>> demoBranchbash: Auto-merging demo_branch.txt CONFLICT (content): Merge conflict in >>demo_branch.txt Automatic merge failed; fix conflicts and then commit the result.
这时我们手动确认需要保留后在commit就好。
8.6. 删除分支
git branch -d <分支名>
git branch -d demoBranch
提示没有完全合并,忘记commit。git 也提示可以强制删除 git branch -D demoBranch。
error: The branch 'demoBranch' is not fully merged. If you are sure you want to delete it, run 'git branch -D demoBranch'.
8.7. 禁用Fast forward模式
我这里直接给代码,有什么疑问可以看廖老师的相关文章。
--no-ff参数,表示禁用Fast forward模式
git merge --no-ff -m'merge ' demoBranch
9.保存工作区
从前面的学习我们已经知道了如果在各个分支之间切换。不过呢,分支这种正规(依靠每次的commit)的东西,不一定适合开发中各种琐碎的临时事情。就像廖老师说的万一有个几分钟搞定的bug,那它就不足以我们commit一下了。如果我们不用commit也能把现在的工作区保存下来就Ok了。(学到这里不得不佩服大牛们啊。)
git stash
9.1. 查看保存区
git stash list
10. 配置别名 alias.(用完回不去的东西)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD' 清除暂存区
--git unstage demo.js
git config --global alias.last 'log -1' 最后一次提交
--git last
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
--git lg (用着超爽)
11. 忽略提交 .gitignore
vim .gitignore 创建文件
/node_modules 指定目录
*.js 指定类型文件