git上传代码
初始化:git init
切换分支:git checkout branch
拉取分支:git pull branch
注:首次拉取分支:git pull origin branch
添加修改文件:git add .
提交修改信息:git commit -m text
关联远程仓库:git remote add origin http
提交至远程仓库:git push
分支的创建和删除
新建分支:git branch new_branch
新建并切换到分支:git checkout -b new_branch
删除本地分支:git branch -d branch
直接删除本地分支:git branch -D branch
注:git branch -d会在删除前检查merge状态,git branch -D 是git branch --delete --force的简写,它会直接删除。
删除远程分支:git push origin --delete branch
分支状态及信息
查询分支信息:git branch -v
注:git branch -vv ,更详细
查询分支:git branch
查询分支提交信息:git log
注:git log –oneline,更简洁
查询所有远程提交:git reflog
分支拉取及合并
拉取所有分支:git fetch --all
拉取分支:git fetch branch
合并分支:git merge branch
暂存区相关
存储暂存区:git stash
取出暂存:git stash pop
取出指定暂存:git stash pop stash@{num}
存储暂存区,并备注:git stash save text
查看暂存列表:git stash list
删除指定暂存:git stash drop stash@{num}
有时这种 { 符号会导致报错,需 ` 转义一下, git stash drop stash@`{num`}
查看暂存状态:git status
分支回退
第一种方法
- 本地回退至某个版本:git reset --hard commit_Id(注:git pull,撤销本地回退)
- 同步远程仓库:git push --force
第二种方法
先提交,再回退某个版本:git revert HEAD~num
注:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit;
在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入
git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
修改本地和远程分支名称
git branch -m old_branch new_branch
git push origin old_branch
git push --set-upstream origin new_branch
合并单次提交办法
查询历史提交:git log
切换分支:git checkout branch
合并单次提交:git cherry-pick commit_Id
注:也可以多个commit_Id
检查状态:git status
同步分支
清除远程已删除分支:git remote prune origin
清除本地分支:git branch -d branch
当commit了代码,未push时,发现分支错了,则用以下操作:
git reset --soft HEAD^
git reset HEAD~
设置上游
git push --set-upstream origin branch