git push 提交
git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push
,可以使用git branch -r
,查看远程的分支名
git pull 拉取 git fetch 获取
为何将这两个放一起呢,因为他们的功能很像,都是从远端把代码拉下来
git pull
命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
一句话总结git pull和git fetch的区别:
git pull = git fetch + git merge
git fetch
不会自动进行合并。执行后需要手动执行git merge
合并分支,而git pull
拉取远程分之后直接与本地分支进行合并。更准确地说,git pull
使用给定的参数运行git fetch
,并调用git merge
将检索到的分支头合并到当前分支中。
git pull origin master
将远程origin主机的master分支拉取过来和本地的当前分支进行合并
上面的pull操作用fetch表示为:
git fetch origin master
git merge brantest
git merge 合并
git merge origin/master
将远端master分支,合并到当前本地分支
git merge --abort
该命令仅仅在合并后导致冲突时才使用。git merge --abort将会抛弃合并过程并且尝试重建合并前的状态。但是,当合并开始时如果存在未commit的文件,git merge --abort在某些情况下将无法重现合并前的状态。(特别是这些未commit的文件在合并的过程中将会被修改时)
git commit 提交文件
git commit -m “message”
提交到版本库(暂存区),并指定提交信息, -m
参数表示可以直接输入后面的“message”
git commit -a -m “message”
-a
参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add
添加到暂存区
git commit --amend
追加提交,它可以在不增加一个新的 commit-id 的情况下将新修改的代码追加到前一次的 commit-id 中。
git add 添加
git add -A 或 git add .
把所有已修改或者删除的文件添加到暂存区
git branch 分支
git branch
不仅仅可以用来创建删除分支,当它不加任何参数的时候,会得到当前所有分支的一个列表,带有*
号的表示当前分支
git branch -r
查看远程分支,r是remote的简写
git branch branchName
创建名为 branchName
的本地分支 需要注意,此处只是创建分支,不进行分支切换;git checkout -b _分支名
创建一个新的本地分支,同时切换到刚新建的分支上
git branch -d | -D branchName
删除指定分支。-d
是一个安全的操作,因为当分支中含有未合并的变更时,Git会阻止这一次删除操作 -D
则是强制删除指定分支,即便其中含有未合并的变更。该命令常见于当开发者希望永久删除某一开发过程中的所有commit
git branch -m | -M branchName
当前分支重命名为 branchName
如果名字已经存在,则需要使用-M
强制重命名,否则,使用-m
进行重命名
git branch -a
列出本地分支和远程分支
git branch -v
查看各个分支最后一次提交
git branch --merged
查看哪些分支已经合并到当前分支,此列表下没有* 标记的分支可以删除,不会报错。
git branch --no-merged
查看还未合并到当前分支的分支,此时如果去删除未合并的分支,会报错的。与git branch --merged
命令后边都可以加分支名称,这样可以查看指定分支的合并状态,而不用检出他们
git branch 组合的用法
git branch -d -r branchName
删除远程branchName
分支,通知还需要执行push命令,才能真正删除:git push origin : branchName
补充:如果不执行push命令,虽然通过git branch -r
已经看不到branchName
了,但在GitHub的网页上依然能看到branchName
,而且执行git fetch命令后,再git branch -r
,由可以看到branchName
,说明如果不push没有真正删除远程分支。
git branch -r --no-merged origin/branchName
查询远程分支中没有进行合并origin/branchName
分支的分支
git checkout 切换/检出
git checkout branchName
切换为branchName
的本地分支
git checkout -b branchName
创建一个branchName
本地分支,同时切换到刚新建的分支上
git checkout -b branchName origin/branchName
基于远端分支创建一个branchName
本地分支,同时切换到刚新建的分支上
git checkout .
放弃所有工作区的修改
git checkout – filename
放弃对指定文件的修改
git checkout -f
放弃工作区和暂存区的所有修改