天天看点

Git使用和冲突处理一.流程操作二.零散操作处理

文章目录

  • 一.流程操作
            • 1.如果希望保留git服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
            • 2.反过来,如果希望用git代码库中的文件完全覆盖本地工作版本(基本上不会这样处理). 方法如下:
  • 二.零散操作处理
    • 1.git add 多个文件,但却想要忽略其中的某一个文件
    • 2. .gitignore规则不生效
    • 3. 分支创建、切换、拉取
    • 4. 合并分支
    • 4. 发版打标签(tag)
      • 删除 tag

一.流程操作

##1. git 使用

cd 进需要存放的文件夹中
if(git上没有项目)
{
	1.git init    //创建一个Git仓库
	2.在此路径中创建项目
	3.git remote add origin [email protected]:CoderLanni/PCH-Const-.git  
	4.git status
	5.git add 文件名 文件名
	6.git commit -m "提交提示信息"
	7.git pull
	8.git push
}
else{
	1.git clone [email protected]:CoderLanni/PCH-Const-.git  
	2.git status
	3.git add 文件名 文件名
	4.git commit -m "提交提示信息"
	5.git pull
	6.git push
}

           

每次使用都需要跑一边提交流程

>1.git status

2.git add 文件名 文件名

3.git commit -m “提交提示信息”

4.git pull

5.git push

##2. 文件冲突

当 add && commit && pull 后出现冲突

打开冲突文件,找到代码中会被<<<<<<< 、=、>>>>>>>包围,这是冲突标记:冲突标记<<<<<<< 与=之间的内容是我的修改,=======与>>>>>>>之间的内容是别人的修改。

然后再跑一边提交代码流程

##3. 配置文件冲突

在ios的开发中有些配置文件xcode是会自动生成修改的,每部电脑都会不一样,然后多人开发git pull时则会出现些那一处理的代码冲突(不能进文件<<<<<<< 、=======、>>>>>>>中修改)

特别是project.pbxproj这个文件不好处理,不提交就缺少引用要手动add files ,提交又容易引发冲突
           

error: Your local changes to the following files would be overwritten by merge:

.DS_Store

myApp.xcodeproj/project.pbxproj

Please, commit your changes or stash them before you can merge.

1.如果希望保留git服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

(要先git add 和 git commit把自家修改的代码提交到本地git仓库中)

git stash

git pull

git stash pop

git push

git stash

是指把本地仓库的自己代码放在暂存区中

git pull

把远程的代码pull先来(假如有代码冲突需要进去文件的<<<<<<< 、=======、>>>>>>>中修改,修改完成后再次add 和commit 以及pull一次)

git stash pop

然后把暂存区重中的代码合并过来

然后可以使用

git diff -w +文件名

来确认代码自动合并的情况.

2.反过来,如果希望用git代码库中的文件完全覆盖本地工作版本(基本上不会这样处理). 方法如下:

git reset --hard

git pull

其中

git reset

是针对版本,如果想针对文件回退本地修改(单独取消此文件的本次修改,丢弃工作区的改动),使用

git checkout HEAD myApp.xcodeproj/project.pbxproj

二.零散操作处理

1.git add 多个文件,但却想要忽略其中的某一个文件

使用

git add fileName fileName

把多个文件放入暂存区

通过

git reset HEAD fileName

命令将某个已经被放入暂存区的文件撤销到工作区

2. .gitignore规则不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git pull
git push

           

3. 分支创建、切换、拉取

//查看本地分支
 git branch
//查看远程分支
 git branch -a
 //删除dev分支
 git branch -d dev
 
           

A: 远程仓库中没有dev分支

  1. 新建dev分支
git branch dev

//新建并切换
git checkout -b dev
           
  1. 切换分支
//切换分支
git checkout dev 
           
  1. 把分支推上远程仓库
git push origin dev:dev

           

B: 远程仓库中有dev分支

  1. 更新获取远程代码获取分支信息
git pull
           
  1. 根据远程dev分支创建本地分支并切换
git checkout -b dev origin/dev
           

4. 合并分支

两个分支相互切换合并

1.创建新分支 bugFix

git branch bugFix
           

2.切换到该分支

git checkout bugFix
           

3.提交一次

git add
      git commit
           

4.切换回 master

git checkout master
           

5.再提交一次

git add
    git commit
           

6.用 git merge 把 bugFix 合并到 master

git merge bugFix
           
  1. 提交合并的记录
git push
           

8.(master 的分支被混入到所有的提交记录,但 bugFix 没有,所以要进行下面的操作) 再把 master 分支合并到 bugFix(因为 master 继承自 bugFix,Git什么都不用做,只是简单地把 bugFix 移动到 master所指向的那个提交记录。)

git checkout bugFix; 

     git merge master
           

4. 发版打标签(tag)

  1. 切换到指定的分支(通常是master)
git checkout master
           
  1. 查看所有标签:
git tag
           
  1. 打标签
git tag v1.0 -m "version 1.0 released"
           
  1. 推送某个标签到远程
git push origin v1.0
           

删除 tag

以tag v1.1为例,这个tag已经同步到远程,但是现在发现了一个问题,需要撤回该tag

删除本地tag:

git tag -d v1.1
           

删除远程tag:

git push origin :refs/tags/v1.1