git status 显示版本状态
git branch 分支显示/创建/删除/远程关联
git branch 显示所有本地branch,等于git branch —list
git branch —list 显示所有本地branch
git branch -r 显示所有远程branch
git branch -a 显示所有branch及细节,红色是remote branch
git branch —merged/—no-merged 显示哪些分支已被并入当前分支
git branch —contains 显示当前分支包含哪些子分支
git branch <branch_name> 在当前分支(假设为master)下创建新分支 = git checkout -b branch_name
git branch --set-upstream-to=origin/TopItem TopItem 本地新建一个分支后,必须要做远程分支关联,git clone的时候所有本地分支默认与远程主机的同名分支,
git branch —unset-upstream 取消远程分支关联
git branch -d esCtr 删除本地分支esCtr
git branch -d -r origin/esCtr 删除远程分支esCtr
git checkout 分支切换——HEAD是灵魂
git checkout <branch_name> 切换到branch_name分支
git checkout -b branch_name 在当前分支下创建一个新的branch并切换到该分支
git checkout -b branch_name develop 在develop分支下创建一个新的branch并切换到该分支
git fetch 从远程拉取
git fetch <远程主机名> 将远程主机的更新取回本地
git fetch 默认取回全部分支的更新
git fetch origin master 取回origin主机上master 分支,在本地分支表示为origin/master,注意跟本地master分支不同
git merge 合并两个或者以上分支
git merge b1 b2 在当前分支顶部合并b1和b2
git merge origin/master 在当前分支上合并远程origin/master
git merge —abort 取消merge,当合并开始时如果存在未commit的文件,git merge --abort在某些情况下将无法重现合并前的状态,建议使用git-stash命令将这些未commit文件暂存起来,在解决冲突以后使用git stash pop把这些未commit文件还原出来
git merge —squash 从当前分支和对方分支的共同祖先节点之后的对方分支节点,一直到对方分支的顶部节点将会压缩在一起,使用者可以经过审视后进行提交,产生一个新的节点
git merge —ff /—no-ff, 是否使用fast-forward模式(默认--ff)进行合并,将不会创造一个新的commit节点。
git merge master feature 把master分支合并到feature上,= git checkout feature; git merge master
git rebase 更干净的合并,当前分支与待合并分支共同的祖先commit节点到当前分支当前commit节点之间的的commit暂存为补丁,当前分支更新到待合并分支最新节点,然后应用这些补丁到当前分支,因此合并不产生merge commit。但要注意永远不在在一个公共的分支中使用rebase.
git fetch origin master 拉取远程origin主机的master到本地,分支origin/master
git rebase origin/master 将origin/master合并到当前分支
git push 把当前分支push到远程
如果把这个rebase换成merge,则是把当前分支和origin/master自动生成一个commit,有两个parents,导致review比较麻烦。
git pull 远程拉取并合并
git pull <远程主机名> <远程分支名>:<本地分支名>,当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
git pull origin master:esMerge
git pull origin master 从名为origin的远程仓库的master branch拉取最新版本,与当前branch合并
等同于:
git fetch origin
git merge origin/next
git remote
git remote add $name $gitAddress 添加一个命名为$name的远程路径
git remote rm $name 删除一个远程路径
git remote -v 显示fetch和push的origin
git push 本地分支的更新,推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master 本地的master分支推送到origin主机的master分支(命令中远程分支名可以省略)
git push origin :master = git push origin --delete master 如果省略本地分支名,表示删除指定远程分支,等同于推送一个空的本地分支到远程分支
git push origin 当前分支推送到origin主机的对应分支(前提,当前分支与远程分支之间存在追踪关系)
git push 当前分支只有一个追踪分支,主机名也可以省略
git push -u origin master 当前分支与多个主机存在追踪关系,-u指定默认主机,后面就可以不加任何参数使用git push
push配置:
git config --global push.default simple (默认)只push当前分支
git config --global push.default matching 会push所有远程分支匹配上的本地分支
git push -all origin 本地所有分支推送到远程,如果远程没有对应的分支,新建之
git push origin —tags 默认git push不会推送标签(tag),除非使用–tags选项
git push origin HEAD 当前分支推送到远程的同名的简单方法
git push origin HEAD:master 当前分支推送到远程的指定分支
git co . # 抛弃工作区修改
git diff
git diff <file> # 比较当前文件和暂存区文件差异 git diff
git diff <branch1> <branch2> # 在两个分支之间比较
git diff origin/master master 查看远程分支与本地分支的差别
git tag/show 标签和详情
git tag 查看所有标签
git tag tagName 创建轻量级标签
git tag -a tagName -m “mark” 创建带注释的标签 如git tag -a v1.4.3 -m “v1.4.3"
git checkout tagName 切换到某一标签
git show tagName 查看相应标签的版本信息
git push origin tagName 单独将tag push到远程
git push —tags 将所有tag push到远程(不推荐)
git stash:
git stash 当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态
git stash pop 将stash的内容弹出,默认弹出最上面的那条
git stash list 列出当前仓库下所有的stash条目
git stash drop [stash@{n}] 丢弃stash条目,默认丢弃最上面的那条,stash@{0
git stash clear 清除所有的stash条目
Git global setup
git config --global user.name "xxxxsx"
git config --global user.email "xxxx.com”
git reset 重置
git fetch
git reset —hard origin/master 将当前分支重置为远程分支(舍弃所有与远程分支不同的修改)
Create a new repository
git clone http://git.code.oa.com/OPENREC/juliasong.git
cd juliasong
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder or Git repository
cd existing_folder
git init
git remote add origin http://git.code.oa.com/OPENREC/juliasong.git
git add .
git commit
git push -u origin master