天天看點

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