git 使用详解 笔记
Feature Branching(极力推荐的工作流):
- 任何新的功能(feature)或 bug 修复全都新建一个 branch 来写
- branch 写完后,合并到 master,然后删掉这个 branch
- 操作 (所在分支)
- git pull (master)
- git chekcout books 在分支上开发 (master to books)
(开发完成后 , git add . git commit -m ‘books功能完成’) - git checkout master (books to master)
- git pull # merge 之前 pull 一下,让 master 更新到和远程仓库同步 (master)
- git checkout books (master to books)
- git rebase master (books)
- git checkout master (books to master)
- git merge books (master)
- git push (master)
- git branch -d books (master)
- git push origin -d books (master)
本地提交代码后 删除本地分支、 用 -d 参数把远程仓库的 branch 也删了
- git clone https:git地址
- git log
- git status
- git add
- git commit (按一下 “i”(小写)来切换到插入模式 要按 ESC 键返回到命令模式,然后连续输入两个大写的 “Z” (用 Shift 键或 Capslock 键都可以) 就保存并退出了)
- git pull (git fetch && git merge)
- git push
当前 commit 在哪里,HEAD 就在哪里,这是一个永远自动指向当前 commit 的引用,所以你永远可以用 HEAD 来操作当前 commit - git branch feature1
- git checkout feature1 (git checkout -b 名称)
- git branch -d 名称
- git config
- git push –set-upstream origin feature111
- git push origin branch_name(本地的新分支)
- git merge feature1
- git merge –abort (Git 仓库就会回到 merge 前的状态)
- git merge origin/HEAD
- git log -p (查看commit日志信息)
- git log –stat (查看commit日志 简略信息)
- git show
- git show 5e68b0d8 (查看某个commit的详细改动)
- git show 5e68b0d8 shoppingList.txt (看指定 commit 中的指定文件)
- git diff (比对工作目录和暂存区)
- git diff –staged (比对暂存区和上一条提交)
- git checkout branch1 (先切换到某个分支 然后rebase master 分支,和merge是相反的)
- git rebase master
- git checkout master
- git merge branch1
- git commit –amend (编辑当前commit 生成一条新的 commit)
- git rebase -i HEAD^^ (把当前 commit ( HEAD 所指向的 commit) rebase 到 HEAD 之前 2 个的 commit 上:git rebase –interactive 相对commit)
- git reset –hard HEAD^(撤销刚刚commit的代码:git reset –hard 目标commit)
git rebase –onto HEAD^^ HEAD^ branch1
(以倒数第二个 commit 为起点(起点不包含在 rebase 序列里哟),branch1 为终点)
git rebase –onto 第3个commit 第4个commit branch1当错误的 commit 已经被 push 上去时的解决方案
- 如果出错内容在私有 branch:在本地把内容修正后,强制 push (push -f)一次就可以解决 git push origin branch1 -f (强制提交自己的分支到远程仓库)
- 如果出错内容在 master:不要强制 push,而要用 revert 把写错的 commit 撤销 (用法很简单,你希望撤销哪个 commit,就把它填在后面:git revert HEAD^) 可以,但是要想清楚,revert 是强行在你的commits链条上去除某一个环节,因此不是非常确定对后续的commit没有任何影响的话,最好还是不要乱用
git reset –hard HEAD^ (在最新的 commit 写错时,可以用 reset –hard 来把 commit 撤销;reset 的本质:移动 HEAD 以及它所指向的 branch;参数 –hard :在 reset –hard 后,所有的改动都被擦掉了;参数 –soft :在重置 HEAD 和 branch 时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区,可以通过 git show –stat 查看)
reset 如果不加参数,那么默认使用 –mixed 参数。它的行为是:保留工作目录,并且清空暂存区。(git reset HEAD^)git checkout branch2 本质上的功能其实是:签出( checkout )指定的 commit
git checkout –detach => Git 就会把 HEAD 和 branch 脱离,直接指向当前 commit
暂存手上的工作处理其他的事务,处理完后再从暂存里读出来
当前分支 git stash
切到其他分支处理事务
完事后,切回当前分支 git stash pop
注意: 没有被 track 的文件(即从来没有被 add 过的文件不会被 stash 起来,因为 Git 会忽略它们,如果想把这些文件也一起 stash,可以加上 -u
参数,它是 --include-untracked
的简写 git stash -u
慎用多条stash,可以使用 git stash list ,查看全部stash列表。然后 git stash apply stash@{0},
恢复之前的工作。接着 git stash drop stash@{0},删除这个stash。
git checkout . && git clean -xdf => git丢弃本地修改的所有文件(新增、删除、修改)
找回被误删的分支
git reflog (查看一下 HEAD 的移动历史)
git checkout c08de9a (签出到分支最后一次commit的地方)
git checkout -b branch1 这样,你刚删除的 branch1 就找回来了.gitignore 排除不想被管理的文件和目录 常用的不上传 node_modules
git tag
// 创建带备注标签(推荐)
git tag -a 1.0.0 -m “这是备注信息”
// 指定版本发送
git push origin 1.0.0
/// 删除远程仓库对应标签
// Git版本 > V1.7.0
git push origin –delete 1.0.0