首頁  >  文章  >  開發工具  >  如何二十分鐘搞懂git的基礎使用

如何二十分鐘搞懂git的基礎使用

WBOY
WBOY轉載
2022-01-05 17:36:571610瀏覽

這篇文章為大家帶來了git的基本使用相關知識,其中包括git的基本操作,分支操作以及更改提交的操作等等,希望對大家有幫助。

如何二十分鐘搞懂git的基礎使用

1. 設定SSH Key

#設定SSH Key 使得裝置可以有權限存取帳號裡面的程式碼倉庫

$ ssh-keygen -t rsa -C "your_email@example.com"
  • "your_email@example.com" 設定為自己GitHub帳號的註冊信箱
  • id_rsa 檔案是私人金鑰,id_rsa.pub 是公開金鑰。
$ cat ~/.ssh/id_rsa.pub

ssh-rsa 公開金鑰的內容your_email@example.com

  • 然後把公鑰拷貝下來,加入到帳號裡面,注意要把前面的ssh-rsa 也拷貝下來
  • ##頭像》Settings》SSH Key》new SSH Key

  • ##接下來驗證一下,出現successfully字樣即為成功
$ ssh -T git@github.com
Enter passphrase for key '/c/Users/MYPC/.ssh/id_rsa':
Hi abc! You've successfully authenticated, but GitHub does not provide shell access.

2. git 基本操作

2.1 git clone 已有倉庫

$ git clone git@github.com:hirocastest/Hello-World.git

這裡會要求輸入GitHub 上設定的空開密鑰的密碼,認證成功後,倉庫便會被clone 到目前目錄。

2.2 git add 將檔案加入暫存區

程式碼寫完成之後,將程式碼新增至系統的暫存區

$ git add 文件夹/文件

2.3 git commit 儲存倉庫的歷史記錄

git commit 指令可以將目前暫存區中的檔案實際儲存到倉庫的歷史記錄中。透過這些記錄,我們就可以在工作樹中復原文件。

$ git commit -m "记录一行提交信息"

m 表示對這個提交的概述,如果想要記錄詳細信息,就把- m 去掉
  • 2.4 git push

之後只要執行

push

指令,GitHub 上的倉庫就會被更新<pre class="brush:php;toolbar:false">$ git push</pre>2.5 git init 初始化倉庫

clone

方法建立倉庫,不需要執行init 操作。如果要把本地文件設定為倉庫,那麼就需要進行init 操作<pre class="brush:php;toolbar:false">$ mkdir git-tutorial $ cd git-tutorial $ git init</pre>2.6 git status 查看倉庫狀態

$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

結果現實,我們正處於masteer 分支下,並且沒有可提交的內容

2.7 git log 查看提交日誌

git log

指令可以查看以往倉庫提交的日誌。包括什麼人在什麼時候進行了提交或合併<pre class="brush:php;toolbar:false">$ git log commit 5dbbff6e009abb8a6cc44187c93b694f94fbf82a (HEAD -&gt; main, origin/main, origin/HEAD) Author: ywm &lt;ywm_up@qq.com&gt; Date:   Sun Feb 28 17:17:00 2021 +0800</pre>只想現實提交資訊的第一行,可以在

git log

命令後加上-- pretty=short <pre class="brush:php;toolbar:false">$ git log --pretty=short</pre>2.8 git diff 查看更改前後的差別

#執行

git diff

查看目前工作書與暫存區的差別<pre class="brush:php;toolbar:false">$ git diff</pre>

3. 分支操作

可以建立多個分支,同時進行完全不同的作業。等分支作業完成之後再與 master 分支合併。透過靈活運用分支,可以讓多人同時有效率的進行並發開發。

3.1 git branch 顯示分支一覽表

master 分支左邊有 「*」(星號),表示這是我們目前所在的分支。

$ git branch
* master

3.2 git checkout 建立、切換分支

建立並切換到分支feature-A

$ git checkout -b feature-A

實際上,上面那條指令,等價於下面兩條指令

$ git branch feature-A

$ git checkout feature-A

切換回分支mian

$ git checkout main

切換回上一個分支

$ git checkout -

操作一下:建立一個新的分支feature,在新的分支上修改README. md,並且add、commit
  • 透過實際操作可以證明:只要創建多個分支,就可以在不互相影響的情況下同時進行多個功能的開發

#3.3 git merge 合併分支

合併時加上--no–ff 參數,可以儲存先前的分支歷史

$ git merge --no-ff feature

隨後編輯器會啟動,用於輸入合併提交的資訊

3.4 git log --graph 以圖示的形式查看分支

$ git log --graph

#4. 更改提交的操作

4.1 git reset 回溯歷史版本

$ git reset --hard 目标时间点的hash值

透過

git reflog

查看目前倉庫的操作日誌,可以找到回溯歷史之前的雜湊值。只要不進行 git 的 GC(垃圾回收),就可以透過日誌隨意調取近期的歷史狀態。即使開發者錯誤執行了 git 操作,基本上也可以用 git reflog 指令恢復到原先的狀態。 <pre class="brush:php;toolbar:false">$ git reflog</pre>上面列印的是最近的操作,下面列印的是最舊的操作

#4.2 消除衝突

合併操作的時候,容易出現衝突,這時候需要
    開啟編輯器
  • ,來解決衝突在實際開發中,往往需要刪除其中之一,所以務必在
  • 仔細分析衝突部分的內容後再進行修改
  • 解決衝突之後,再進行add 和commit 操作
  • 如果對上一條提交資訊不滿意,可以使用amend 參數進行修改
$ git commit --amend

4.3 git rebase -i 壓縮歷史

在合併分支之前,如果發現已提交的內容中有些拼寫錯誤,不妨提交一個修改,然後將這個修改包含到前一個提交之中,壓縮成一個歷史記錄。

git rebase -i HEAD~2

可以選定檔期按分支中包含 HEAD 在內的兩個最新歷史記錄為對象,並在編輯器中開啟

5 推送至远程仓库

5.1 git remote add 添加远程仓库

在创建新仓库的时候,建议不要勾选 README.md 文件,这样会使本地仓库和远程仓库失去整合性。虽然到时候可以强制覆盖,但防止这一情况发生,还是不要勾选,就创建一个空仓库就好。

git remote 在先写代码,后创建仓库的情况下能较好的使用

$ git remote add origin git@github.com:github-book/git-tutorial.git

对于一般先创仓库,后写代码的,需要先 pull 下来仓库,再对文件进行修改

5.2 git push 推送至远程仓库

推送至 master 分支

$ git push -u origin master

-u 参数可以在推送的同时,将 origin 仓库的 master 分支设置为本地仓库当前分支的 upstream(上游),添加这个参数,将来运行 git pull 命令从远程仓库获取内容的时候,本地仓库的这个分支就可以直接从 origin 的 masteer 分支获取内容,省去了另外添加参数的麻烦

除了 master 分支之外,还可以推送到其他分支

$ git checkout -b feature-D

$ git push -u origin feature-D

6 从远程仓库中获取

6.1 git clone 获取远程仓库

$ git clone git仓库地址

将本地的 feature-D 分支更新到最新状态

$ git pull origin feature-D
  • 多名开发者在同一个分支中进行作业时,为减少冲突情况的发生,建议更频繁的进行 push 和 pull 操作

推荐学习:《Git教程

以上是如何二十分鐘搞懂git的基礎使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除