git remote:
- git remote 查看当前的远程库
- git remote -v 查看远程库详细信息
git pull:
- git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin next:master
取回远程主机origin的next分支,与本地的master分支合并,如果远程分支(next)与当前分支合并,则冒号后边的部分可以省略
git pull origin next
如果当前分支与远程分支存在追踪关系,git pull可以省略远程分支名
git pull origin
如果当前分支只有一个追踪分支,那么主机名都可以省略
git pull
git pull –rebase
这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把本地当前分支更新为最新的”origin”分支,最后把保存的这些补丁应用到本地当前分支上
git pull相当于git fetch然后git merge
git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用–rebase,它运行git rebase而不是git merge
git push:
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master
上面命令表示:将本地master分支推送到origin主机上的master分支上,如果origin主机上不存在master分支,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
git push origin:master
等同于
git push origin --delete master
如果当前分支和远程分支存在追踪关系,则本地分支和远程分支都可以被省略
git push origin
如果当前分支只有一个追踪分支,那么主机名都可以省略
git push
版本回退
只是修改了工作区的文件,还没有add
git checkout --<file> 把指定file文件在工作区的修改全部撤销
已经add了,还没有commit
git reset HEAD <file> 可以把暂存区的修改撤销掉,重新放回到工作区
再使用
git checkout --<file>可以将工作区的修改也丢弃,
3.已经commit了
git reset --hard HEAD~1
HEAD表示当前版本,上一个版本用^ 表示,上上个版本用^^ 表示,上10个版本可以用HEAD~10表示
使用命令
git reset --hard commit_id
回到指定版本
用git log
查看提交历史,用git reflog
查看命令历史,以便确定回到哪个版本git reset –hard|soft|mixed|merge|keep 或HEAD
–hard 例如:git reset --hard HEAD~1
表示为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本
例如:git reset --hard origin/branch_oversea_wbl7365_wbl7361_t5891_rel_gionee
–soft 例如:git reset –soft HEAD~1 表示将版本库软回退一个版本,所谓软回退表示将版本库的HEAD指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区
–mixed 默认参数,例如:git reset HEAD~1 表示将版本库回退一个版本,将版本库的HEAD指针全部重置到指定版本,且将这次提交之后的所有变更都移动到未暂存阶段
–merge 例如:git reset –merge ORIG_HEAD 表示回退到上一个版本,并且不清除工作区中的内容,比如当你使用git
pull获取最新更新后后悔了,可以使用这个命令回退到git pull之前的状态。如果使用
git reset --hard ORIG_HEAD
,这个命令将会清空工作区,丢弃未使用git add
的那些修改(关于ORIG_HEAD:Git通过记录HEAD指针的上次所在的位置ORIG_HEAD提供了回退的功能,当你发现某些操作失误了,比如错误的reset到了一个很早很早的版本,可以使用git reset --hard ORIG_HEAD
回退到上一次reset之前)
git log:
-
git log --pretty=oneline //每一行表示一次提交,一行内容包括commitId和commit message
git log --name-status . //查看当前目录下的log
git log -p <file> //查看file文件的每一次详细修改
git checkout:
1.
git checkout commitId //切换到指定commitID版本
git checkout commitId filename //切换指定文件到指定commitID版本
git checkout filename //撤销对指定file的修改
git checkout -- . //删除本地修改
2. 基于远程分支创建dev分支:
git checkout -b dev origin/branch
添加远程仓库,建立追踪关系
与远程仓库建立追踪关系
git branch --set-upstream dev origin/dev git branch --set-upstream-to=origin/dev dev git push --set-upstream origin dev //指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream master origin/next //指定本地master分支追踪origin/next分支
添加远程仓库
git remote add origin git@github.com:mry1/MyNotes.git git push -u origin master
- 修改远程仓库地址
git remote set-url origin 新地址
warning: push.default 尚未设置,它的默认值在 Git 2.0 已从 ‘matching’
变更为 ‘simple’。若要不再显示本信息并保持传统习惯,进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
当 push.default 设置为 ‘matching’ 后,git 将推送和远程同名的所有
本地分支。
从 Git 2.0 开始,Git 默认采用更为保守的 ‘simple’ 模式,只推送当前
分支到远程关联的同名分支,即 ‘git push’ 推送当前分支。
参见 ‘git help config’ 并查找 ‘push.default’ 以获取更多信息。
git cherry-pick commitId
将其它分支上的修改合并到当前分支
git status
git status -uno可以只列出所有已经被git管理的且被修改但没提交的文件。
git status -s
git show commit-ID [file]
显示某一次提交记录中file的详细修改
git blame [file]
可以查询每一行代码的 commit ID、提交者和提交日期。
git blame [commitID] [file]
查询某一次commitID中某文件每一行代码的提交者和提交日期
git diff
git diff 工作区与暂存区的区别
git diff HEAD 工作区与版本库的区别
git diff --cached 暂存区与功版本库的区别