拉取远程仓库至本地
- git clone myrepo.xxx.com/project/.gi…
分支相关
- git branch 查看本地分支
- git branch -a 查看所有分支
- git branch --remote 查看所有远程分支
- git checkout -b new_branch 新建本地分支
- git checkout exist_branch 切换本地分支
- git checkout -b dev origin/dev 以远程dev分支为源新建本地dev分支
- git checkout --track origin/<remote_br_name> 从远程分支创建一个本地同名分支并跟踪,并切换到该本地分支
- git branch -d <br_name> 删除本地分支
- git branch -D <br_name> 强制删除分支
- git branch -d -r origin/<br_name> 删除远程分支
日志
- git log 查看提交记录
- git log --author=<user_name> 查看某个用户的提交记录
- git log -p <file_path> 查看某文件的提交历史
- git log - 查看最近n次的提交
- git log -p 查看提交详情,相当于 git show 所有提交
推送
- git push origin <local_br_name> 将本地分支推送到远程新建本地同名分支
- git push origin <local_br_name>:<remote_br_name> 将本地分支,推送到远程分支
- git push -u origin <local_br_name>:<remote_br_name> 将本地分支,推送到远程分支,并设置分支关联
- git push origin -d <remote_br_name> 删除远程分支 -d --delete
其他
- git status 查看当前工作区的状态
- git add 将没有track的文件添加至暂存区
- git commit -m '' 将暂存区的内容提交至分支
- git commit --amend 修改前一次提交的描述信息
- git stash 保存当前工作区的修改至缓存堆栈,用于不想提交的一些信息的暂存
- git stash list 查看当前缓存区的列表
- git stash pop 移出缓存区的第一个stash至工作区
- git stash apply stash @{1} 移出缓存区的第二个stash至工作区
场景
-
分支合并
- 当前在本地dev分支想合并远程master分支的代码(git merge)
- 最好先保持当前分支clean 把当前工作区内容提交commit或stash
- git status 查看当前分支的状态
- git fetch 获取远程库的变动
- git merge origin/master
- 处理冲突无则跳过
- git push 推送至远程dev分支(本地dev已关联远程dev
如希望分支树整洁可以采用 git rebase合并分支,可以参考 git-scm.com/book/zh/v2/…
- 当前在本地dev分支想合并远程master分支的代码(git merge)
-
代码回滚
- git reset --soft|--mixed|--hard
- git reset --soft commitId 重置HEAD到指定版本,不修改Index和working tree 执行该条语句将commitId之后的提交记录全部回滚至暂存区,修改变更后再重新commit即可(无需add)
- git reset --mixed commitId 与--soft不同的是它修改了Index执行该条语句将commitId之后的提交记录全部回滚至unstaged区,修改变更后需重新add 再重新commit
- git reset --hard commitId 则会修改当前工作区,执行该条语句会将本地代码回滚到commitId这条记录状态,commitId之后的代码改动全部摒弃掉彻底还原且无法找回,慎用
- git reset --soft commitId 重置HEAD到指定版本,不修改Index和working tree 执行该条语句将commitId之后的提交记录全部回滚至暂存区,修改变更后再重新commit即可(无需add)
- git revert commitId 表示回滚commitId的改动 || git revert HEAD~3 表示回滚最近的第四条的提交记录,git revert操作会产生一个新的commit,将这次回退作为一次修改记录提交不会修改历史提交记录。
- git reset --soft|--mixed|--hard
-
合并提交记录 开发中可能会多次提交记录,合并后记录会更清晰些
- git log 查看当前工作区提交记录,找到要回退的commitId
- git rebase -i commitId 或者 git rebase -i HEAD~2(最近两次提交记录)
- 这时候,会自动进入 vi 编辑模式如下图所示修改pick -> s 保存退出会自动进入commit message确认页修改或#注释掉不需要的message保存退出
- 这时候git log 查看提交记录原2条记录已合并为一条,最后git push -f 推送远程