git基本知识及操作命令

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

  1. 在没有commit 的情况下,可以使用 git merge –abort
  2. commit 后,没有push 可以使用git reset HEAD~
  3. push 之后,查看git log 然后回退到merge之前的 commit id ,git reset –hard commit。 push

rebase 和merge 区别

git官方文档翻译