git经常使用操做以及常见冲突的解决方法

git 操做(经常使用命令)

注意:远程仓库的默认名称是origin

  • git remote add <name> <url>(本地关联远程仓库)
  • git remote(查看远程仓库的信息 git remote -v 显示更详细的信息)
  • git clone <url>(克隆远程仓库)
  • git push -u origin master
    • 将本地master分支上的内容推送到远程,第一次时须要使用 -u ,即推送内容并关联分支
    • 之后直接用 git push
  • git pull
    • git push命令和git pull命令只有在master分支上有效,在其余分支上须要声明远程仓库的名称以及对应的分支名
    • 拉取远程master分支上的内容。


  • git branch(查看当前分支)
  • git checkout -b <分支名>(在当前分支建立新的分支而且切换到对应分支,没有 -b 表示有分支,直接切换到对应分支)
  • git merge <分支名>(合并指定分支到当前分支下。通常先切换到目标分支,而后在目标分支下去合并须要被合并的分支)
  • git branch -D <分支名>(在某个分支上删除指定的分支)


  • git init(变成git能够管理的仓库)
  • git status(查看当前分支的内容是否被修改)
  • git diff 文件名 (查看对应文件被修改的部分,为确保万一,该命令在add以前执行)
  • git add 文件名(修改文件后添加到暂存区,后面是“.”时,所有)
  • git commit (把暂存区的全部内容提交到当前分支)
  • git log 查看日志
  • git reset --hard <具体的版本命令>(版本命令能够简写,不须要写全,通常写前几个能区分开来就好)
    1. git reset --hard HEAD^(回退到上一个版本)
    2. git reset --hard HEAD^^(回退到上上一个版本)
    3. git reset --hard HEAD~n(回退到第n个版本)

遵照:

  1. 在哪一个分支,就拉取哪一个分支的代码 git pull origin <具体的分支名>
  2. 在哪一个分支,就推送哪一个分支到远程 git push origin <具体的分支名>
    • 开发一个功能以前,先切换到master分支,而后在master分支上建立新的功能分支。
    • 每一个功能分支对应ui和interface。
    • 每开发完一个功能,就将其推送到远程。远程和本地开发创建一一对应的关系。
  3. 若是在哪一个分支上执行推送命令失败,哪么咱们就先执行拉取命令而后再执行推送命令。
    • 缘由:咱们在本地C分支推送内容以前始终要保持本地C分支和远程对应的C分支上的代码都是同样的。
  4. 在A分支上须要合并B分支上的代码,就须要先切换到A分支上,而后在A分支上再合并B分支上的代码
  5. 执行git commit 命令时,开发内容描述要用简单、直接的英文描述。

解决冲突

注意:在公司项目的开发过程当中,通常会对应三种不一样的环境。开发环境、测试环境和生产环境。

  1. 咱们在开发环境写代码,开发环境和远程的分支都对应同一个测试分支(staging),名字随意。
  2. 远程的staging分支对应测试环境。咱们每开发一个功能,都要合并到本地的staging分支,而后将其推送到远程。
  3. 远程的staging分支对咱们解决冲突起着重要的做用
    • 缘由:咱们在本地每完成一个功能就合并到staging,因此staging上永远都是最新且已经解决完冲突的代码。
  4. 可能有的公司并无staging这样一个测试分支对应的测试环境,直接是master分支对应的一个测试环境。
    • 咱们不可能直接在master分支上直接开发功能,因此咱们须要一个像staging分支同样将各个功能整合的分支。
    • 哪么咱们就在开发环境建立一个供本身参考,方便咱们解决冲突的测试分支————own_test,名字随意。
  5. 每作一个功能,将功能对应的分支合并到own_test,而后推送到远程。

最多见产生冲突的缘由

  • 多我的修改了同一文件的同一块区域。

开始解决冲突

注意:对于一个普通的开发者来讲,咱们不该该直接将咱们的功能分支合并到master分支上。这种事情仍是让大佬审核后去作。

远程pr合并时冲突的解决方法

  1. 本地开发环境切换到master分支,而后使用 git pull 拉取远程最新master分支上的代码(被多我的修改)。
  2. 而后本地切换到与远程对应提pr产生冲突的分支D(准备解决冲突)。
  3. 切换到本地D分支后,使用 git merge master 命令合并master分支上的代码(冲突产生)。
  4. 与远程 staging或者own_test 分支上的代码做比较,解决本地D分支产生冲突的部分(真正解决冲突)。
  5. 本地D分支commit后,使用 git push origin D 命令将D分支推送到远程(远程提pr对应的D分支冲突解决)。

本地功能合并到staging分支的冲突解决方法

  1. 对比产生冲突的部分
  2. 分析产生冲突的部分,无非下面几种状况
    • 只增长了不一样的内容
    • 既有增长的内容也有修改的内容
    • 就多了几行空行
  3. 若是是多了几行空行,哪么按照本身写代码的规范处理便可。
  4. 若是是只增长了不一样的内容,将它们整合,调试到该功能完善。
  5. 若是既有增长的内容也有被修改的内容,哪么就须要慎重删减,通过屡次调试,完善功能。

建议

  1. 一个功能对应一组功能分支(ui和interface)。
  2. 开发以前执行 pull 命令拉取最新代码,而后再开发功能。
  3. 执行 commit 命令时的功能描述用英文。
相关文章
相关标签/搜索