#git stash命令git stash pop #取回暂存的内容,自动检测合并git stash list #查看"暂存区"的所有记录git stash clear #清空"暂存区"git stash pop #取回暂存区第一个记录git stash apply 0 #取回"暂存区"指定的记录 编号0git stash drop 0 #删除"暂存区"指定记录git reflog #查看包括回滚的历史记录#回滚到指定版本. 指定版本标识git reset --hard 9bbb0ef17234d40c941fec0f0408d994b52a5060 #git branch 命令git branch #查看分支git branch dev1 #创建新分支dev1 即拷贝当前所有代码到新分支git checkout dev1 #进入dev1分支git checkout master #回到主分支 git branch bug #创建新分支bug, 然后修复bug完毕.git checkout master #切回mastergit merge bug #把bug分支合并过来. git branch -d bug #再删除分支git checkout dev1 #回到dev1分支,继续开发新功能.#本地仓库拉取远程仓库(已有本地仓库)git initgit config --local user.name "X "XXX"git config --local user.email "XX "l "XXX@yhglobal.com"git remote add origin http://user:passwd@xxxgit pull origin mastergit fetchgit checkout -b 11.11 origin/11.11 #拉取远程分支到本地(本地没有此分支)#本地仓库拉取远程仓库(无本地仓库)git clone http:user:pwd@xxx #拉取远程分支(本地没有此分支)git checkout -b 本地分支名 origin/远程分支名#推送本地分支到远程库(远程仓库没有此分支)git push --set-upstream origin 本地分支名 #修改本地关联的远程仓库 方法一: git remote rm origin git remote add origin git@github.com:xxx/xxx.git 方法二: git remote origin set-url --push方法三: 直接修改.git/config文件 #相关远程命令 查看远程仓库 git remote -v 删除远程仓库 git remote rm #git fetch命令 $ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master $ git log -p master origin/master //比较本地的仓库和远程的对比 $ git merge master //合并拉取下来的分支和本地分支 $ git fetch origin master:tmp //拉取远程分支到本地分支(新建) $ git diff tmp //比较本地分支和拉取下来的分支不同 $ git merge tmp //合并分支 $ git branch -d tmp //删除临时拉取下来的tmp分支 # revert和reset区别
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.
第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突(或git push -f强制推送).但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.