git总结大全

一、本地资源第一次推送到远程仓库
进入到一个目录 demo
git init 初始化版本库
git add . 添加 demo 下的文件到暂存区
git commit -m first commit 提交代码到版本库
git remove add origin 远程仓库地址 将本地仓库与远程仓库相关联
git push -u origin 分支名
git push -u origin master // 第一次推送
git push origin master // 第一次推送后,直接使用该命令即可推送修改
git remote 查看所有远程主机
git remote -v 查看所有远程主机的网址
git remote show < 主机名 > 拆线该主机的详细信息
git remote add < 主机名 >< 网址 > 添加远程主机
git remote rm < 主机名 > 删除远程主机
git remote rename < 原主机名 > < 新主机名 > 修改远程主机的名字
git gui

二、第一次从远程仓库clone代码到本地
git clone 远程仓库地
$ git clone xxx.git " 指定目录 "  clone远程仓库到制定目录
clone 某个分支
git clone -b " 分支名 " " 仓库地址名 "
git push origin --delete dev2  删除分支

三、分支
git branch 分支名 创建分支
git checkout 分支名   切换分支
git checkout -b 分支名   创建并切换到分支下
git push origin 本地分支名 : 远程分支名 将分支推送到远程仓库
git push ( -u )   origin 远程分支名 将当前分支推送到远程仓库的分支下,没有就创建
git pull origin 远程分支 : 本地分支 从远程仓库拉取代码到本地分支进行合并
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看所有分支
git log 查看历史日志
git reflog 查看历史命令

四、git版本恢复:resetrevert 
reset: --mixed 默认方式 它回退到某个版本,只保留源码,回退 commit index 信息
          --soft  回退到某个版本,只回退了 commit 的信息,不会恢复到 index file 一级。如果还要提交,直接 commit 即可
          --hard  彻底回退到某个版本,本地的源码也会变为上一个版本的内容
(一) . 本地 commit 错误没有 push 到远程仓库
eg git reset —hard 版本号
(二) .   如果我们某次修改了某些内容,已经 commit 到本地仓库,而且已经 push 到远程仓库了
eg git reset —hard 版本号
        git push origin 远程分支名 -f 强制提交到远程仓库
eg: git push origin master -f
回滚远程仓库代码  
git revert 版本号
git push origin 远程分支名
eg: git push origin master
git revert 是用一次新的 commit 来回滚之前的 commit git reset 是直接删除指定的 commit
revert 和reset的区别
第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

五、pullpushfetch

git pull 取回远程主机某个分支的更新,再与本地的制定分之合并。
git pull < 远程主机名 > < 远程分支名 >:< 本地分支名 >  
eg git pull origin next:master  取回 origin 主机的 next 分支,与本地的 master 分支合并
如果远程分支是与当前分支合并,则冒号后面的部分可以省略
eg git pull origin next  取回 origin/next 分支,再与当前分支合并。实质上,这等同于先做 git fetch ,再做 git merge
0. $ git fetch origin  
0. $ git merge origin/next  
建立追踪关系
git clone 会自动建立追踪关系
git 也允许手动建立追东关系
git branch --set-upstream master origin/next 
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
如果远程主机删除了某个分支,默认情况下, git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致 git pull 不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。
0. $ git pull -p  
等同于下面的命令   
0. $ git fetch --prune origin   
0. $ git fetch -p  
git push   命令用于将本地分支的更新,推送到远程主机
git push < 远程主机名 > < 本地分支名 >:< 远程分支名
如果省略远程分支名,则表示将本地分支推送与之存在 " 追踪关系 " 的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push origin master  上面命令表示,将本地的 master 分支推送到 origin 主机的 master 分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
0. $ git push origin :master  
等同于   
0. $ git push --delete origin master 
上面命令表示删除 origin 主机的 master 分支。
2 )如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push origin
上面命令表示,将当前分支推送到 origin 主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
git push
3 )上面命令表示,将当前分支推送到 origin 主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push -u origin master  
上面命令将本地的 master 分支推送到 origin 主机,同时指定 origin 为默认主机,后面就可以不加任何参数使用 git push 了。
不带任何参数的 git push ,默认只推送当前分支,这叫做 simple 方式。
此外,还有一种 matching 方式,会推送所有有对应的远程分支的本地分支。 Git 2.0 版本之前,默认采用 matching 方法,现在改为默认采用 simple 方式。如果要修改这个设置,可以采用 git config 命令。
0. $ git config --global push.default matching  
0. 或者   
0. $ git config --global push.default simple  
4 )还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用 --all 选项。
$ git push --all origin   将所有本地分支都推送到 origin 主机。
5 )如果远程主机的版本比本地版本更新,推送时 Git 会报错,要求先在本地做 git pull 合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用 --force 选项。
$ git push --force origin
上面命令使用 --force 选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用 --force 选项。
6 )最后, git push 不会推送标签( tag ),除非使用 --tags 选项。
$ git push origin --tags 
git fetch
$ git fetch < 远程主机名 > 更新某个远程主机的更新
$ git fetch 要更新所有的分支,将某个远程主机的更新,全部取回本地
默认情况下, git fetch 取回所有分支的更新。如果只想取回特定分支的更新,可以指定分支名,如下所示 -
$ git fetch < 远程主机名 > < 分支名 >
比如,取回 origin 主机的 master 分支。
$ git fetch origin master
此外,也可以使用 git merge 命令或者 git rebase 命令,在本地分支上合并远程分支。
$ git merge origin/master
# 或者
$ git rebase origin/master
上面命令表示在当前分支上,合并 origin/master

六、merge
合并某个分支到当前分支
合并分支: version.2 到当前分支( master ),如下 -
git branch
git status
git merge version.2
git merge 命令用于将两个或两个以上的开发历史加入(合并)一起。
eg :合并分支 fixes enhancements 在当前分支的顶部,使它们合并
$ git merge fixes enhancements
eg :合并 obsolete 分支到当前分支,使用 ours 合并策略:
$ git merge -s ours obsolete
eg :将分支 maint 合并到当前分支中,但不要自动进行新的提交:
$ git merge --no-commit maint
eg :将分支 dev 合并到当前分支中,自动进行新的提交:
$ git merge dev

七、stash  只针对暂存区的文件(切换分支时,保留修改到暂存区)
git stash 
git stash list 查看 stash 列表
git stash save "work in progress for foo feature" (推荐 多次 stash 后)
git stash save -u "messeag"  加入了代码新文件的开发的 stash
从保留区恢复:
git stash pop  其对应的 stash 在队列中删除
git stash apply stash@{1}   (或 git stash pop stash@{num}
pop apply 区别: apply 不在 stash 队列删,其他和 git stash pop 完全一样
删除:
git stash clear 清空 stash 队列
git stash drop <stash@{id}> git checkout . # 本地所有修改的。没有的提交的,都返回到原来的状态 git stash # 把所有没有提交的修改暂存到 stash 里面。

八、将远程分支代码合并到本地分支
eg: git pull origin next:master  取回 origin 主机的 next 分支,与本地的 master 分支合并
git pull 就相当于执行了如下命令:
git fetch
git merge next

九、将本地分支代码推送到远程分支
eg:
git commit -m “commit”
git push < 远程主机名 > < 本地分支名 >:< 远程分支名
git push origin  localBranch:remoteBrance
将本地localBranch分支推送到远程remoteBrance分支

十、rebase 取出
git rebase remote branchname  将主干分支更新合并到本地开发
对工作区中文件的修改分为三种情况:
(1)修改,但没有用git add将修改添加到暂存区;
(2)修改,已经使用git add将修改添加到暂存区;
(3)修改,已经使用git add将修改添加到暂存区,并再次进行修改;
对于第一种情况,直接使用git checkout -- 文件,即可撤销修改,撤销修改就回到和版本库一模一样的样子。
第二种情况,先使用git reset HEAD -- 文件,然后在使用git checkout -- 文件进行修改撤销。
第三种情况 先使用git checkout -- 文件,文件就会变成添加到暂存区后的状态,也就转换成了“第二种情况”,然后,在使用情况(2)中的处理方法,即可将文件恢复到与版本库一致的状态。
总之,记住一点:“git checkout -- 文件”命令,撤销的是工作中文件的修改,而“git reset HEAD -- 文件”命令,撤销的是暂存区中文件的修改。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值