git使用

li-羡鱼發表於2024-09-27

目錄
  • 從無到有:如何將一個專案上傳到遠端倉庫
    • 一、使用者認證
      • 1. 生成 SSH 金鑰對
      • 2. 將公鑰新增到 Gitee
      • 3. 配置 SSH 代理
    • 二、上傳
      • 1. 在 Gitee 上建立倉庫
      • 2. 初始化本地專案為 Git 倉庫
      • 3. 新增檔案到 Git 倉庫
      • 4. 新增遠端倉庫
      • 5. 推送程式碼到遠端倉庫
  • 從有拉取:如何從遠端倉庫拉取一個專案
    • 1. 安裝 Git
    • 2. 克隆遠端倉庫
    • 3. 進入專案目錄
    • 4. 檢視專案分支
    • 5. 推送更新
  • 本地與遠端衝突無法上傳,如何解決
    • 預處理
    • 1. 檢視衝突檔案
    • 2. 手動解決衝突
    • 3. 標記衝突已解決
    • 4. 提交解決衝突後的更改
    • 5. 再次嘗試推送程式碼

從無到有:如何將一個專案上傳到遠端倉庫

一、使用者認證

  1. 生成 SSH 金鑰對
  2. 將公鑰新增到 Gitee
  3. 配置 SSH 代理
  4. 重新嘗試推送程式碼

1. 生成 SSH 金鑰對

如果你還沒有生成 SSH 金鑰對,可以使用以下命令生成:

ssh-keygen -t ed25519 -C "your_email@example.com"

這將生成兩個檔案:

  • ~/.ssh/id_ed25519(私鑰)
  • ~/.ssh/id_ed25519.pub(公鑰)

2. 將公鑰新增到 Gitee

  1. 開啟公鑰檔案

    cat ~/.ssh/id_ed25519.pub
    
  2. 複製公鑰內容

  3. 登入 Gitee:開啟瀏覽器,訪問 Gitee 並登入你的賬戶。

  4. 新增 SSH 金鑰

    • 點選右上角的頭像,選擇“設定”。
    • 在左側選單中選擇“SSH 公鑰”。
    • 點選“新增公鑰”,貼上你複製的公鑰內容,並填寫一個標題(例如 My Laptop)。
    • 點選“確定”。

3. 配置 SSH 代理

  1. 啟動 SSH 代理

    eval "$(ssh-agent -s)"
    
  2. 新增私鑰到 SSH 代理

    ssh-add ~/.ssh/id_ed25519
    

將一個本地專案提交到 Gitee 上,假設 Gitee 上還沒有建立倉庫,可以按照以下步驟進行:

二、上傳

1. 在 Gitee 上建立倉庫

  • 登入 Gitee:開啟瀏覽器,訪問 Gitee 並登入你的賬戶。
  • 建立新倉庫
    • 點選右上角的“+”按鈕,選擇“新建倉庫”。
    • 填寫倉庫名稱(例如 my-project)、描述等資訊。
    • 選擇倉庫的可見性(公開或私有)。
    • 點選“建立”。

2. 初始化本地專案為 Git 倉庫

  • 進入專案目錄

    cd /path/to/your/project
    
  • 初始化 Git 倉庫

    git init
    

3. 新增檔案到 Git 倉庫

  • 新增所有檔案到暫存區

    git add .
    
  • 提交檔案到本地倉庫

    git commit -m "Initial commit"
    

4. 新增遠端倉庫

  • 獲取 Gitee 倉庫的 URL:在 Gitee 上建立的倉庫頁面中,可以看到倉庫的 URL。例如,https://gitee.com/username/my-project.git

  • 新增遠端倉庫

    git remote add origin https://gitee.com/username/my-project.git
    

5. 推送程式碼到遠端倉庫

  • 推送程式碼到遠端倉庫

    git push -u origin master
    

    如果倉庫的預設分支名稱不是 master,請替換為實際的分支名稱。例如,如果預設分支名稱是 main,則使用:

    git push -u origin main
    

從有拉取:如何從遠端倉庫拉取一個專案

從遠端倉庫(如 Gitee、GitHub 等)拉取一個已有的專案到本地。

1. 安裝 Git

確保你的計算機上已經安裝了 Git。如果沒有安裝,可以從 Git 官方網站 下載並安裝。

2. 克隆遠端倉庫

使用 git clone 命令將遠端倉庫克隆到本地:

  • 開啟終端或命令列工具

    • Windows 使用者可以使用 Git Bash 或者命令提示符。
    • macOS 和 Linux 使用者可以使用終端。
  • 導航到你希望儲存專案的目錄
    sh cd /path/to/your/directory

  • 使用 git clone 命令克隆遠端倉庫

    • 假設遠端倉庫的 URL 是 https://gitee.com/username/repo.git,使用以下命令:

      git clone https://gitee.com/username/repo.git
      
      • 使用的是 SSH 方式(SSH方式預處理見第一部分),URL 會有所不同:
      git clone git@gitee.com:username/repo.git
      

ps: 執行git clone 命令會自動執行git init 等一系列命令。

3. 進入專案目錄

克隆完成後,進入專案目錄:

```sh
cd repo
```

4. 檢視專案分支

  • 檢視當前分支:

    git branch
    
  • 檢視所有的遠端分支:

    git branch -r
    
  • 此時,可以建立並切換到新的本地分支,並跟蹤遠端分支(儘量保證your_branchName和branchName 保持一致):

    git checkout -b your_branchName origin/branchName 
    
  • 推送當前本地分支到指定分支:

    git pull origin branchName 
    

5. 推送更新

  • 新增所有檔案到暫存區

    git add .
    
  • 提交檔案到本地倉庫

    git commit -m "Initial commit"
    
  • 推送程式碼到遠端倉庫

    git push -u origin branchName 
    

本地與遠端衝突無法上傳,如何解決

假設你目前處於合併衝突的狀態,無法向遠端提交專案。

預處理

拉取最新的專案程式碼到一個臨時分支。

git checkout -b tmp-branch origin/master

切換回要提交的分支,假設為master。

git checkout master

嘗試將拉取的專案和本地專案融合。

git merge tmp-branch

1. 檢視衝突檔案

使用 git status 命令確認哪些檔案存在衝突:

git status

輸出應該類似於:

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" if you want to integrate the remote branch with yours)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   src/main/java/com/example/demo/Demo1Application.java

2. 手動解決衝突

開啟衝突檔案 src/main/java/com/example/demo/Demo1Application.java,找到衝突標記(<<<<<<<, =======, >>>>>>>),手動編輯檔案,刪除衝突標記,保留你希望保留的程式碼。

例如,衝突檔案可能看起來像這樣:

<<<<<<< HEAD
public class Demo1Application {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
=======
public class Demo1Application {
    public static void main(String[] args) {
        System.out.println("Hello, Gitee!");
    }
}
>>>>>>> feature-branch

手動編輯檔案,解決衝突後,檔案可能看起來像這樣:

public class Demo1Application {
    public static void main(String[] args) {
        System.out.println("Hello, Gitee!");
    }
}

3. 標記衝突已解決

使用 git add 命令將解決衝突後的檔案新增到暫存區:

git add src/main/java/com/example/demo/Demo1Application.java

4. 提交解決衝突後的更改

解決所有衝突後,提交更改:

git commit -m "Resolved merge conflicts"

5. 再次嘗試推送程式碼

解決衝突並提交更改後,再次嘗試將程式碼推送到遠端倉庫:

git push -u origin master