4-实践-git

常用命令

  1. 场景: 创建本地git仓库并提交代码
  1. git init 初始化仓库(只需要执行一次)
  2. git add . 将修改提交到缓存区
  3. git commit –m “commit message” 将修改提交到本地仓库
  4. git remote add origin https://github.com/githubname/mytest 添加远程仓库
  5. git fetch + git rebase origin/master 同步远端代码,并合并到本地(自己修改代码的时候可能会有别人同时对项目做了修改,在提交自己的代码之前需要先将这些修改同步到本地)
  6. git push origin HEAD:refs/heads/master 将修改提交到远程仓库(因为一个项目可以指定多个远程仓库,origin是为了指定是哪个远程仓库,HEAD:refs/ heads /master则是为了指定将本地的什么修改提交到远程仓库的什么地方)。
  1. 场景:本地对项目完成修改好,需要提交修改。

只需要重复2)、3)、5)、6)

  1.  

分支管理

  1. 创建分支
  1. git branch newBranch
  2. git checkout –b newBranch oldBranch(可以是本地地址,也可以是远程地址)

第一条命令只能将当前分支复制到newBranch;第二条命令可以将任意分支复制到newBranch。执行完第一条命令,本地仍处于oldBranch,需要再执行切换分支命令切换到newBranch;执行完第二条命令将本地切换到新的分支

  1. 切换分支

git checkout branchname(切换分支不是用git branch,git branch 是创建分支)

  1. 分支重命名

git branch –m oldName newName

  1. 查看项目的所有分支

git branch 只查看当地分支

git branch –a 查看当地分支和远程分支

  1. 删除分支

git branch –d branchName (删除之前要先切换到别的分支)

  1. e

rebase冲突解决

https://www.cnblogs.com/blackeyes/p/7636768.html

  1. 冲突之后git会对冲突文件做如上的修改,用“========”做分隔(上面的是远程代码,下面的是本地代码),我们需要手动做出修改。
  2. 修改完成后,使用git add .来标记完成修改;
  3. 使用git rebase --continue进行rebase
  4. 备注:当冲突出现时可以使用git rebase –skip强行rebase,也可以使用git rebase –abort放弃rebase。

merge冲突解决

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000/

  1. 出现冲突之后手动修改文件
  2. 重新git add 、git commit

reset

reset后面只有一个关于文件的参数(git reset --hard HEAD~1),这个操作并不涉及到远程分支。

  1. soft:只有head指针回退;
  2. hard:head指针、缓存区、本地全部回退;
  3. mixed(默认策略):head指针、缓存区回退,本地不回退。

reset后面有两个关于文件的参数(git reset HEAD filepathname)

  1. 使用HEAD覆盖掉本地文件的修改(此时本地的一部分修改没被提交到本地仓库中)

代码回退

  1. 未使用git add:
  1. git checkout -- filepathname(注意要加--,否则就成了检出分支了)
  2. git checkout . 表示全部回退(注意不包括新建文件,因为新建文件不被索引)
  1. 使用了git add 改动了缓存区

git reset HEAD filepathname (git reset表示用HEAD重置缓存区,而非reset本地)

git reset HEAD . 表示全部回退

  1. 使用了commit

参见本文中的reset

辅助命令

  1. git status
  2. git log

git log:打印当前分支的所有commit

git log--all:打印所有分支的所有commit

git log--all –graph;以图形的方式打印所有分支的所有commit

  1. git show $commitId
  2. e

其他

  1. 在本地的修改没有提交的情况下使用checkout -b切换到别的分支otherBranch,本地的修改仍然会存在,在otherBranch分支上git status可以查看到本地的修改。(不使用-b参数会切换失败)
  2. pull命令=fetch+merge
  3. rebase和merge的区别(效果如下图)

rebase先撤销本分支的最新修改,再将别的分支的修改作用于本分支,最后将第一步撤销的修改作用于本分支,最终是线性的分支结构

merge是直接将两个分支合并,最终是树状的分支结构

 

 

  1.  
上一篇:12.Spring AOP配置与应用


下一篇:Git 分支之变基-3.6