git常用技巧(详细篇)

一,Git pull 拉取远程内容强制覆盖本地文件

1,查看远程分支 加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话):

 # git rebase 不会取回代码 要用git fetch先取回, git rebase 是合并代码

 cd /data/wwwroot/www.xxx,com/your-project
 git branch -a  # 查看远程分支

第一种方法:

 cd /data/wwwroot/www.xxx,com/your-project

 git fetch --all                  # 更新远程跟踪分支
 git reset --hard origin/master   # 合并代码
 git fetch                  # 下载远程最新的, 然后,git reset master分支重置

 git pull   # 获取代码

第二种方法:

cd /data/wwwroot/www.xxx,com/your-project
git reset --hard HEAD    # 回退版本信息

git pull   # 获取代码

2,解决git 【 合并冲突 】 的思想:

安装beyond compare,解决git冲突 https://blog.csdn.net/gaokcl/article/details/81666049   (这是我总结朋友经验,方便查找使用)

(1)首先,新建一个分支:【 git branch 分支名 】 再切换到分支 【 git checkout -b 分支名 】

(2)把修改的文件提交到分支 :【 # git add --all # git commit -a -m "分支提交"】

(3)与主干同步【 git fetch origin 】。然后rebase,在【 git rebase origin/master 】的时候提醒和主干有冲突 (4) 找到有冲突的文件,并手工解决掉该冲突。 解决完冲突后执行git –continue操作

(5)将分支【 分支名 】提交到远端服务器

(6)切换到主干分支

(7)在主干分支上合并分支feizhi,并提交到本地,然后提交到远端git服务器

具体代码:

  git branch fenzhi
  git checkout -b fenzhi
  git add --all
  git status
  git commit -a -m "分支提交"

  git fetch origin  #更新远程跟踪分支
  git rebase origin/master  
  # git rebase 不会取回代码 要用git fetch先取回, git rebase 是合并代码

  找到冲突的代码 ,手工修改(不要乱删,与同事先协商好保存那一部分代码( 小冲突,可以这样做。)
  大一点,复杂一点,借助下面介绍的工具( beyond compare )

  git rebase --continue            # 合并代码

  git push --force origin fenzhi   # 将分支feizhi提交到远端服务器的分支feizhi
  git checkout master              # 切换到主干分支 

  在主干分支上合并分支feizhi,并提交到本地,然后提交到远端git服务器

  git merge fenzhi # 在主干分支上合并分支feizhi
  git commit -a -m "合并分支后提交"
  git push   #  本地拉取 服务器代码

二,常用的git命令

1,基本使用:

 git config --global user.name   # 用户名
 git config --global user.email  # 用户邮箱

 git init           # 创建本地仓库
 git clone xxxxx    # 克隆远程项目到本地

 git status                # 查看状态
 git add 1.txt             # 要上传的代码
 git commit -m "1.txt提交"  # 注释代码,git必填,不要乱写,方便管理的
 git status
 git diff 1.txt   # 查看与上一个版本比较,修改了哪些
 git status
 git remote add origin https://git.oschina.net/nehpets/test.git # 添加到线上环境
 git push -u origin dev  #添加到远程的分支
 git pull #解决冲突后,拉取代码

版本回退:

git log  
git reflog      # 查看历史记录的版本号id

git reset --hard HEAD~  #回退到上一个版本  (~100 指定版本)

2,创建使用分支:

git branch dev   # 创建本地分支dev
git checkout dev  # 切换本地分支,从 master(默认)切换到分支
git push origin dev # 远程分支就是本地分支push到服务器上,默认是 master (本地远程分支同步)

git checkout --track origin/dev  # 从服务器上拉取特定分支的时候,需要指定远程分支的名字
git push origin dev:dev  # 提交分支数据到远程服务器 
git push # 提交代码到服务器分支
git push origin :develop  # 删除远程分支

3,合并分支:

本地:

 composer install   # 安装composer,有些PHP框架需要,方便管理
 git pull    # 拉取远程的代码到本地,(多个人使用)要先合并分支
 git branch -a # 查看所有的分支
 git checkout dev # 切换分支,当前本地默认的是 master
 git merge dev  #  dev 这里是远程分支
 git pull  # 合并分支

 其他:
 git pull origin dev # 拉远程的某一个分支

三,git 工作使用:(PHP的laravel框架为例)( git请自行百度安装 )

  1. 在Windows10下,按照自己的意愿下,要 www 目录下打开 Git Bash

1.克隆远程 master 分支

  git clone https://XXXXXXXXXXXXXXXXXXXXXXX

2.进入项目目录

  cd your-project

3.安装依赖(composer下载安装 参考 中国镜像 )

  composer install

4.复制 .env 文件模版

 cp .env.example .env

5.生成密钥

 php artisan key:generate

6.在本地创建和远程 dev 分支对应的本地 dev 分支, 并切换到本地 dev 分支(也可以默认origin/master(远程) master(本地))

 git checkout -b dev origin/dev

7.PhpStorm 打开项目目录, 确认右下角显示的是 Git:dev, 开始写代码

8.修改 .env 文件的数据库配置( wampserver 自带的 MySQL )

DB_DATABASE=db
DB_USERNAME=root
DB_PASSWORD=


git branch -a  # 查看分支

----------- 每天编码后使用 --------------------

9.将写好的代码文件添加到暂存区准备提交, 包括所有的新增文件和修改的文件

git add .  # . 代表你在项目中的所有操作

10.提交修改

git commit -m "做了哪些修改"

11.将修改推送到远程分支 dev (默认为 origin/master )

git push -u origin dev

(只有第一次推送时用这条命令, -u 选项用于创建本地 dev 到远程 dev 的追踪关系)

git push origin dev    #之后用这个简写命令,没有 【 -u 】 了

12,远程仓库覆盖本地仓库 【 重要 】

git fetch --all
git reset --hard origin/dev
git pull   # 拉取代码
git status  # 查看下状态

13,清空本地环境在拉取线上代码 【 重要 】

git reset --hard
git clean -fd
git pull   # 拉取代码
git status  # 查看下状态

四,解决冲突(一般情况下):

方法一:

1,先把自己的工作整理干净

git reset --hard
git clean -fd

git add .

2,隐藏工作区,是当前的工作区

git stash save "工作中"
git stash list

git pull  # 拉取代码

git stash apply  +Tab  # 恢复工作区

3,解决冲突(先要安装mergetool 或者使用 TortoiseGit(类似于 svn 使用方法) )

git mergetool # 弹出解决冲突软件

方法二:

1,先把自己的工作环境整理干净

git reset --hard
git clean -fd

git add .
git commit -m "工作了那些"
git pull

2,解决冲突(先要安装mergetool 或者使用 TortoiseGit(类似于 svn 使用方法) )

git mergetool # 弹出解决冲突软件

五,git设置mergetool可视化工具,解决冲突

参考:https://www.cnblogs.com/zhangzhifeng/p/7344100.html

1,树冲突

(1)文件名修改造成的冲突,称为树冲突。 比如,a用户把文件改名为a.c,b用户把同一个文件改名为b.c,那么b将这两个commit合并时, 会产生冲突。

git status

added by us:    b.c
both deleted:   origin-name.c
added by them:  a.c

(2)如果最终确定用b.c,那么解决办法如下:

git rm a.c
git rm origin-name.c
git add b.c
git commit

(3)执行前面两个git rm时,会告警“file-name : needs merge”,可以不必理会。

(4)树冲突也可以用git mergetool来解决,但整个解决过程是在交互式问答中完成的, 用d 删除不要的文件,用c保留需要的文件。最后执行git commit提交即可。

2,内容冲突,解决办法:

git pull   # 报错
git rebase remote-branch-name #需要进入报错的项目(git库)目录,然后执行git rebase解决

(1)直接在 发生冲突的代码中 修改后 commit (多人协作,要问清当事人)

(2)执行git mergetool用预先配置的Beyond Compare解决冲突

3,git集成beyond compare(beyond compare,自行百度下载安装)

参考: https://www.jianshu.com/p/11f52449cff9

$1. mac os 配置

#!/bin/sh
git config --global diff.tool bc4
git config --global difftool.prompt false
git config --global difftool.bc4.cmd '"/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"'

git config --global merge.tool bc4
git config --global mergetool.prompt false
git config --global mergetool.bc4.cmd '"/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
git config --global mergetool.bc4.trustexitcode true

将以上内容保成为setgitconfig文件,赋可执行权限:chmod +x setgitconfig

执行前运行:git config –list 查看可用配置 
执行后再运行一次,对比下看有没有生效,或者直接在一git项目中运行 git difftool

$2. windows 配置

 打开【开始菜单——所有程序——git——Git Bash】,在其中执行以下命令:

  git config --global diff.tool bc4
  git config --global difftool.prompt false
  git config --global difftool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE"'

  git config --global merge.tool bc4
  git config --global mergetool.prompt false
  git config --global mergetool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
  git config --global mergetool.bc4.trustexitcode true

六,git 解释

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

Git基本常用命令如下:

 mkdir:         XX (创建一个空目录 XX指目录名)
 pwd:          显示当前目录的路径。
 git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
 git add XX       把xx文件添加到暂存区去。
 git commit –m “XX”  提交文件 –m 后面的是注释。
 git status        查看仓库状态
 git diff  XX      查看XX文件修改了那些内容
 git log          查看历史记录
 git reset  --hard HEAD^ 或者 git reset  --hard HEAD~ 回退到上一个版本
 (如果想回退到100个版本,使用git reset –hard HEAD~100 )
 cat XX         查看XX文件内容
 git reflog       查看历史记录的版本号id
 git checkout -- XX  把XX文件在工作区的修改全部撤销。
 git rm XX          删除XX文件
 git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
 git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
 git clone https://github.com/tugenhua0707/testgit  从远程库中克隆
 git checkout –b dev  创建dev分支 并切换到dev分支上
 git branch  查看当前所有的分支
 git checkout master 切换回master分支
 git merge dev    在当前的分支上合并dev分支
 git branch –d dev 删除dev分支
 git branch name  创建分支
 git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
 git stash list 查看所有被隐藏的文件列表
 git stash apply 恢复被隐藏的文件,但是内容不删除
 git stash drop 删除文件
 git stash pop 恢复文件的同时 也删除文件
 git remote 查看远程库的信息
 git remote –v 查看远程库的详细信息
 git push origin master  Git会把master分支推送到远程库对应的远程分支上

你可能感兴趣的:(laravel,git)