git解決衝突操作 - CSDN

2020-12-16 CSDN技術社區

本文全為實戰  建議觀後實踐

(上周寫的哦)

大家假期安康,我是測試君。

下面我們來一起學習git操作,相信我這對你來說並不難。

一、Git原理

1、Git是什麼?

Git是目前世界上最先進的分布式版本控制系統(沒有之一)。

2、Git有什麼特點?

簡單來說就是:高端大氣上檔次!

3、GIt與SVN區別

SVN管理:

屬於集中式版本控制系統,版本庫是集中存放在中央伺服器,必須聯網才能工作,脫離區域網,採取網際網路提交大文件會比較慢

Git管理:

屬於分布式版本控制系統,根本沒有「中央伺服器」,安全性高,每個人的電腦上都是一個完整的版本庫,即電腦硬碟上會有個版本這樣,你工作的時候,就不需要聯網了。即使中央伺服器出了問題,從其他人那複製一個就好了

4、Git 工作流程

一般工作流程如下:

下圖展示了 Git 的工作流程:

 

二、Git 配置

1、配置個人的用戶名稱和電子郵件地址

$ git config --global user.name "username"

$ git config --global user.email yourmail

2、在客戶端生成ssh key

  • 安裝客戶端後在桌面任意空白處右擊

  • 打開Git Base Here然後輸入下面命令

  • 打開本地git bash,使用如下命令生成ssh公鑰和私鑰對

  • ssh-keygen -t rsa -C 'xxx@xxx.com' 然後一路回車(-C 參數是你的郵箱地址)

  • 然後打開~/.ssh/id_rsa.pub文件(~表示用戶目錄,比如我的windows就是C:\Users\Administrator),複製其中的內容

  • 打開gitlab,找到Settings -->Profile -->SSH Keys--->Add SSH Key,並把上一步中複製的內容粘貼到Key所對應的文本框,在Title對應的文本框中給這個sshkey設置一個名字,點擊Add key按鈕

三、Git常用操作

1、創建一個版本庫

Ps:只是一個空目錄哦

$ mkdir mytest

2、通過git init命令把這個目錄變成Git可以管理的倉庫

$ git init

Initialized empty Git repository in C:/Users/userAccount/Desktop/test/.git/

ps:目錄下會自動生成.git,誤刪,畢竟全靠它做版本管理

第一步,用命令git add告訴Git,把文件添加到倉庫:

$ git add readme.txt

執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是「沒有消息就是好消息」,說明添加成功。

第二步,用命令git commit告訴Git,把文件提交到倉庫:

$ git commit -m "test add file"

[master (root-commit) 5a92835] test add file

 1 file changed, 1 insertion(+)

 create mode 100644 mytest/readme.txt

3、版本的操作內容操作查看

本地版本操作:(連續操作一個文件並提交好多次)

git log日誌查看命令

$ git log

commit d9669171c9c5890fd282c40a7e7fe0c372074233 (HEAD -> master)

Date:   Thu Apr 4 14:52:23 2019 +0800

    test third version

commit 6b39a4a6ce09c472e7f9c09e50c79c78b2efee16

Date:   Thu Apr 4 14:51:11 2019 +0800

    test second version

commit 9e42e41abf01d85e163b3d63c41bf5b099920d47

Date:   Thu Apr 4 14:47:32 2019 +0800

    test first version

commit dca156cf9c72b17f5d1aaff88ebfbfc79d5b91e2

Date:   Thu Apr 4 14:46:39 2019 +0800

    test add file

:

比較直觀的方式查看

$ git log --pretty=oneline

4、版本回退操作

比如返回上一個版本

$ git reset --hard HEAD^

HEAD is now at 6b39a4a test second version

Git的版本是生成是十六進位生成的,我的上一版本是如截圖:

再查看日誌當前版本是否為6b39a4a

回滾到某個指定版本

$ git reset --hard dca156cf

HEAD is now at dca156c test add file

再查看日誌當前版本是否為dca156cf

優勢:回滾很快呀

5、git status 查看狀態

比如我對readme.txt內容做了修改,再輸入git status查看狀態

git checkout -- file可以丟棄工作區的修改,即撤銷修改

$ git checkout -- readme.txt

再次輸入git status 發現文件回滾到改動之前了

6、刪除文件操作

先增加一個文件

$ git add delete.txt

再刪除文件

$ rm delete.txt

查看文件狀態

$ git  status

On branch master

Changes to be committed:

  (use "git reset HEAD ..." to unstage)

        new file:   delete.txt

Changes not staged for commit:

  (use "git add/rm ..." to update what will be committed)

  (use "git checkout -- ..." to discard changes in working directory)

        deleted:    delete.txt

提交修改

$ git commit -m "remove test.txt"

[master cc6aa8f] remove test.txt

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 mytest/delete.txt

7、將本地倉庫和遠程倉庫相關聯

$ git remote add origin git@172.16.5.128:RefainZero/demo.git

把本地庫的所有內容推送到遠程庫

$ git push -u origin master

從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

Everything up-to-date

8、從遠程倉庫獲取代碼

$ git clone git@172.16.5.128:RefainZero/demo.git

Cloning into 'demo'...

remote: Counting objects: 16, done.

remote: Compressing objects: 100% (5/5), done.

remote: Total 16 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (16/16), done.

9、解決衝突

1)、先製造一個衝突

情景,readme.txt中的,文本默認是test

git status

修改本地的readme.txt中文本內容為「20191635」

在伺服器也修改了readme.txt,修改文本內容為「就想衝突下」

2)、提交本地的代碼到遠程倉庫

在伺服器執行git pull(獲取最新代碼)

不負眾望,果然發生代碼衝突

3)、解決文件中衝突的的部分

打開衝突的文件

4)、把衝突標記刪掉,把衝突解決正確

提交修改,並同步到遠程倉庫

$ git add readme.txt

$ git commit -m '解決衝突的測試'

[master 0feb18f] 解決衝突的測試

$ git push origin master

Counting objects: 8, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (4/4), done.

Writing objects: 100% (8/8), 740 bytes | 740.00 KiB/s, done.

Total 8 (delta 0), reused 0 (delta 0)

To 172.16.5.128:RefainZero/demo.git

   ca9bc5e..0feb18f  master -> master

5)、再次從伺服器上獲取最新代碼,驗證是否衝突

$ git pull

Already up to date.

四、附:Gitlab顯示的提交內容

END

Android ADB命令大全

導入導出文件測試點

對不起,這是一篇負能量爆棚的文章

還有一件重要的事情要和大家說,我不是經常看公眾號後臺,所以有時候大家在後臺發留言,時間一旦超過2天,我就沒有回覆權限了。所以,我要公布自己的微信號了,歡迎大家來埋伏我?

*本文創作:糖小幽

不需要打賞,在看就好!

相關焦點

  • 從工作到現在Git操作總結
    本文主要講解自己學習Git的方法以及解決自己遇見的各種Git問題。首先強烈給大家推薦掘金小冊 Git 原理詳解及實用指南。(不是託)如果你是新人,讀了這本小冊並且跟著實際操作,你會對Git有一個大致的了解。
  • Git使用全解
    可以參考下大佬的:https://blog.csdn.net/weixin_41975655/article/details/82887273git diff  顯示目錄裡的原文件和最新提交//查看一個文件或者所有文件的每一次提交這一操作會輸出commit IDgit checkout  <commitID>  <filename>或者.
  • git fetch & pull詳解
    而git pull 則是將遠程主機的最新內容拉下來後直接合併,即:git pull = git fetch + git merge,這樣可能會產生衝突,需要手動解決。下面我們來詳細了解一下git fetch 和git pull 的用法。
  • Git入門篇:常用命令以及遠程倉庫使用
    這一節, 先看一下衝突的情況push衝突的狀態現在,我們將要學習怎樣解決衝突。首先,我們用「demo」和「demo2」製造一個衝突狀態。 下一節, 來看一下如何解決衝突吧解決衝突在上一個節我們提及到,執行合併即可自動合併Git修改的部分。但是,也存在無法自動合併的情況。
  • Gitee 在線解決代碼衝突上線,解決衝突不再需要 Git 命令 - 開源中國
    許多開發者在使用 Git 的時候會遇到代碼衝突的情況:當兩名開發者先後往同一個分支發出合併請求,或者多個分支的代碼合併到一個分支時,代碼衝突就會出現,進而引起分支無法自動合併的問題。這時,我們一般的解決流程是:找到衝突文件-->手工修改衝突的內容-->重新提交解決衝突後的文件。雖然整個流程並不是特別的複雜和困難,但 Gitee 仍然想幫助大家儘量減少不必要的操作,最大化自己的工作效率,於是便推出了通過 WebIDE 在線解決代碼衝突的功能。
  • git的幾種實用操作(合併代碼與暫存-復原工作修改)
    git操作。1.git合併遠程倉庫的代碼2.git stash保存當前的修改這兩種情況大家應該都使用比較多,現在大家使用git進行團隊開發代碼的情況比較普遍,所以我們經常需要進行合併代碼;此外,當我們在開發過程中,突然遇到緊急任務插入,我們需要再其他分支進行工作
  • git的幾個常用基本操作
    來個實際場景,我先新建兩個文件,然後把他們都加到stage:$ touch a.txt b.txt$ git add .$ git statusOn branch masterChanges to be committed: new file: a.txt new file: b.txt然後我又修改了
  • Git入門實戰教程
    Git本地操作Git最基本的操作圖中的index指的稍後所說的暫存區,Objects值得稍後所說的對象區。新建文件dota.txt。輸入內容:dota中最強的英雄是影魔。通過上面的操作將修改的文件放入對象區。又玩了一段時間,發現電魂不是最厲害的,於是修改文件為:dota中最強的英雄是卡爾。類似操作,放入對象區。
  • 部分克隆實現Git大文件倉庫的優雅管理
    當然針對這個問題Git開源社區也一直在想辦法解決,比如一個解決問題(不是根本)的辦法Git LFS。用於通過git media sync命令進行同步Git LFS2015年,Git社區發布了自帶的解決方案Git LFS(Large File Storage),該方案類似於git-media。
  • 我到底應該用git-merge還是git-rebase呢?
    git merge是我們在git操作中頻繁會用到的一個命令,它主要實現的功能便是為我們進行分支代碼的合併,也就是將兩個或兩個以上的開發歷史合併在一起的操作。合併分支,乍一看好像與merge命令擁有同樣的功能,是的,它們都能合併,不過彼此的合併原理卻大大不同,git merge是將合併結果產生新節點,不影響歷史的提交,而git rebase是基於變基的操作,它會將分支的開始點基於rebase的分支重新設置,並將rebase的分支重新提交,直接貼到該分支開始點之後,再之後才是該分支自己的提交。
  • 程式設計師需要了解的8種Git技術
    要克隆存儲庫,請運行git clone命令,然後輸入存儲庫的路徑:git clone http s://XXXXXX/test/my_git_project.git每當克隆存儲庫時,都可以選擇多種協議來連接到源。
  • 前端面試題:git reset、git revert 和 git checkout 有什麼區別
    三個區的轉換關係以及轉換所使的命令如下圖git reset、git revert 和 git checkout的共同點:來撤銷代碼倉庫中的某些更改。然後是不同點: 先,從 commit 層來說: git reset 可以將個分的末端指向之前的個 commit。然後再下次 git 執垃圾回收的時候,會把這個 commit之後的 commit 都扔掉。
  • 工作流一目了然,看小姐姐用動圖展示10大Git命令
    、git reset、git revert、git fetch、git pull、git reflog……你知道這些 git 命令執行的究竟是什麼任務嗎?如果我們想把 dev 合併到 master,就會出現一個合併衝突:你想要標題是 Hello! 還是 Hey!?當嘗試合併這些分支時,Git 會向你展示衝突出現的位置。我們可以手動移除我們不想保留的修改,保存這些修改,再次添加這個已修改的文件,然後提交這些修改。完成!
  • 程式設計師值得收藏的Git常用命令與操作,這篇足夠了!
    2,git commit -m x.htnl:提交代碼,x.htnl就是需要提交的文件。3,git checkout master & git merge dev:將dev合併到master。4,git checkout master & git checkout -b dev:意思是從master分支創建dev分支並切換到dev分支。5,git branch -D issues:本地強制刪除分支issues。
  • 如何在nas中搭建自己的Git伺服器
    Git Server在nas套件中搜索git關鍵字,安裝Git Server,然後選擇打開的用戶名nasurl:nas的地址舉例:ssh -p 22 xiaomi@192.168.1.31回車命令行會提示你輸入密碼 輸入密碼時是不可見的 輸入完回車 就如到了linux系統找到一個目錄我的目錄是volume1/Git 你也可以選這別的目錄在Git目錄下 我們先建一個裸Git文件,裸Git是指不帶目錄的,這樣你在其他電腦push時不會出錯,否則會有目錄衝突
  • Git代碼託管,如何選擇和使用,關鍵點都在這了
    git mergegit rebasegit resetgit revertgit cherry-pickgit fetch>git pullgit reflog三,分支管理1.合併PR或打回管理員收到PR後,根據情況處理:1) 合併代碼,如果有衝突,需要解決後再合併。2) 如果有問題,可以關閉不做任何處理,然後通知開發修復問題。
  • 讓伺服器代碼和 git 關聯的辦法
    這裡給出我的一個簡單的解決辦法(我不是專業運維,如果方法不好大家不要噴我。)二、解決辦法2.1、解決思路:(1)創建一個git庫,不管伺服器代碼還有本地代碼都以git中的為準。(2)本地修改完代碼後push到git中(3)去伺服器的項目中將git中的代碼pull下來。2.2、解決方法:(1)創建一個git庫,將最新的代碼提交到git中。
  • gradle 依賴衝突 - CSDN
    2.解決方法(解決方法都跟第三部分依賴樹有很大關係,建議結合起來看啦)方法①可以看到appcompat-v7和runner中都有依賴support-annotations,可以看到衝突存在的位置是26.1.0–>27.1.1還有一種更簡單的方法可以看到衝突所在,在module下的gradle.buildd
  • 跟蹤多個 Git 遠程倉庫
    解決此問題的一個方法是標準化兩個詞的使用和含義:origin 指的是你個人的 example.com/<USER>/* 倉庫,而 upstream 指的是你從 origin 倉庫復刻fork出來的 example.com
  • Gitee在線解決代碼衝突功能上線,無需手動修改輕鬆解決衝突 - Gitee
    許多開發者在使用 Git 的時候會遇到代碼衝突的情況,當兩名開發者先後往同一個分支發出合併請求,或者多個分支的代碼合併到一個分支時,代碼衝突就會出現,進而引起分支無法自動合併的問題。這時,我們一般的解決流程是:找到衝突文件-->手工修改衝突的內容-->重新提交解決衝突後的文件。雖然整個流程並不是特別的複雜和困難,但 Gitee 仍然想幫助大家儘量減少不必要的操作,最大化自己的工作效率,於是便推出了通過 WebIDE 在線解決代碼衝突的功能。