git基本知识及操作命令
git基本概念
- 工作区(Working Directory)
可以理解为一个项目代码的文件目录 - 版本库
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的。
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区(Stage)。
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

git基本命令
- git clone -b [new_branch_name] xxx.git <文件名称>
- git branch 创建分支
- 查看所有分支 git branch -a
- git checkout 切换分支
- git checkout -b dev origin/dev 在本地新建同名的(“dev”)分支,并切换到该分支
- git checkout -b dbus_work_ok 92483401abdc41bc64bbdde1a63ed7bbee403e19 创建分支以commitId 为创建节点
- git branch -d 分支名称 — 删除分支
- git branch -b 分支名称 — 创建分支
- git status 查看工作区状态
- git log –pretty=oneline — 查看当前分支的提交记录(格式化)
- git reflog 查看操作日志
- git log –graph 查看git 提交图
git提交代码命令
- git add 这里有点特殊。要先加入到 staging area 的改动才会被 git commit 提交。同一个文件也可以 add 多次。不想add可以: git commit -m ‘提交描述’ -a (未add 的文件属于untracked状态)
- git commit 提交代码,前提是git add 将对应的修改加入 staging area区域
- git push origin develop 推送到远程指定分支
- git pull = git fetch + git merge git pull的默认行为和git push完全不同。当我们执行git pull的时候,实际上是做了git fetch + git merge操作,fetch操作将会更新本地仓库的remote tracking,也就是refs/remotes中的代码,并不会对refs/heads中本地当前的代码造成影响。
- git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。
- git diff HEAD — readme.txt
- git checkout — file 回退未提交到暂存区的修改
- git reset HEAD file 回退已提交到暂存区的修改
- git reset –soft commit id (已经提交commit但是未push,可以回退到commit状态,代码仍保留,git add不撤销)
- git reset –hard commit id (已经提交commit但是未push,可以回退到commit状态,代码不保留,完全回退到commit版本)
- git reset –mix commit id(已经提交commit但是未push,可以回退到commit状态,代码仍保留,git add撤销)
git合并代码命令
- git merge <分支名称>
- git status 查看解决冲突情况
- git merge –abort 取消进行中的merge
- git rebase -i HEAD~2 合并某几次提交内容, git push -f origin testgit push 需要强制覆盖远程(适用于一个人分支开发,或者多个commit未push)
- git rebase rebase branchName到本地分支
- git rebase –continue 继续rebase
- git rebase –abort 取消rebase
git stash(工作区) 使用
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
基础命令:
$git stash
然后开发一些功能,commit、push。想恢复之前的文件:
$git stash pop
git merge 和git rebase 区别

rebase合并完后,还是一条主线,感觉就没合并一样
git merge后要取消merge
- 在没有commit 的情况下,可以使用 git merge –abort
- commit 后,没有push 可以使用git reset HEAD~
- push 之后,查看git log 然后回退到merge之前的 commit id ,git reset –hard commit。 push