一、本地资源第一次推送到远程仓库
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 默认方式 它回退到某个版本,只保留源码,回退commitindex信息
          --soft  回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
          --hard  彻底回退到某个版本,本地的源码也会变为上一个版本的内容
(一). 本地commit错误没有push到远程仓库
eggit reset —hard 版本号
(二).  如果我们某次修改了某些内容,已经commit到本地仓库,而且已经push到远程仓库了
eggit 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来回滚之前的commitgit 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 <远程主机名> <远程分支名>:<本地分支名>  
eggit pull origin next:master 取回origin主机的next分支,与本地的master分支合并
如果远程分支是与当前分支合并,则冒号后面的部分可以省略
eggit 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:合并分支fixesenhancements在当前分支的顶部,使它们合并
$ 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 [email protected]{1}  (或git stash pop [email protected]{num}
pop apply 区别:apply不在stash队列删,其他和git stash pop 完全一样
删除:
git stash clear 清空stash队列
git stash drop <[email protected]{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 -- 文件”命令,撤销的是暂存区中文件的修改。


相关文章:

  • 2022-12-23
  • 2021-07-14
  • 2021-12-31
  • 2021-04-13
猜你喜欢
  • 2021-04-11
  • 2021-12-25
  • 2021-06-25
  • 2021-08-15
  • 2021-12-06
  • 2022-02-07
  • 2021-11-06
相关资源
相似解决方案