最常用git命令

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

猜你喜欢

转载自blog.csdn.net/hongxingabc/article/details/85159250