Git 和 Github 的終極指南

?

文章亮點:  

  1. Git 簡介
  2. Git 存儲庫結構
  3. Github 的
  4. 通過 HTTPS 或 ssh 訪問 Github 中央倉庫
  5. 使用 git – 重要的 Git 命令

Git 簡介

關于在 ubuntu 上的安裝目的,可以參考這篇文章: 如何在 Ubuntu 上安裝、配置和使用 GIT? 

Git 是一個分布式版本控制系統。那么,什么是版本控制系統?

版本控制系統是一個系統,當我們在團隊或個人中工作時,它會維護您項目的不同版本。(系統管理對文件的更改)隨著項目的進展,會向其添加新功能。因此,版本控制系統會為您維護項目的所有不同版本,并且您可以通過為其命名(如 MyProject、MyProjectWithFeature1 等)回滾到所需的任何版本,而不會給您維護不同版本帶來任何麻煩。

分布式版本控制系統意味著每個協作者(任何從事團隊項目的開發人員)在他/她的本地計算機中都有一個項目的本地存儲庫,這與 central 不同,團隊成員每次將他們的工作更新到主中央存儲庫時都應該有 Internet 連接。

所以,分布式是指:項目是分布式的。存儲庫是保存所有項目文件、圖像等的區域。就 Github 而言:不同版本的項目對應提交。
關于 Github 介紹的更多細節,可以參考:Github 介紹 

Git 存儲庫結構

它由 4 個部分組成:

  1. 工作目錄:這是您創建項目 (編寫代碼) 并對其進行更改的本地目錄。
  2. 暫存區(或索引):這是您在提交之前首先需要放置項目的區域。這用于其他團隊成員的代碼審查。
  3. 本地倉庫:這是您的本地倉庫,您可以在將更改推送到 Github 上的中央倉庫之前將更改提交到項目。這就是分布式版本控制系統提供的內容。這對應于我們目錄中的 .git 文件夾。
  4. 中央存儲庫: 這是中央服務器上的主項目,其副本與每個團隊成員一起作為本地存儲庫。

所有存儲庫結構都是 Git 內部的,對開發人員是透明的。

一些與存儲庫結構相關的命令:  

// transfers your project from working directory
// to staging area.
git add .

// transfers your project from staging area to 
// Local Repository.
git commit -m "your message here"


// transfers project from local to central repository.
// (requires internet)
git push

Github 的

Github 基本上是 Microsoft 擁有的一家營利性公司,它在線托管 Git 存儲庫。它幫助用戶在線、與其他用戶共享他們的 git 存儲庫,或遠程訪問它。您還可以在 Github 上免費托管公共存儲庫。

用戶出于各種原因在線共享他們的倉庫,包括但不限于項目部署、項目共享、開源貢獻、幫助社區等等。

訪問 通過 HTTPS 或 SSH 的 Github 中央存儲庫

在這里,transfer project 意味著 transfer changes,因為 git 非常輕量級并且適用于項目中的更改。它在內部通過使用無損壓縮技術并傳輸壓縮文件來執行傳輸。Https 是訪問 Github 中央倉庫的默認方式。

  • 通過 git remote add origin http_url:remote 表示遠程中央倉庫。Origin 對應于您需要定義的中央存儲庫(在此提供 HTTPS URL),以便將更改推送到 Github。
  • 通過 SSH:遠程連接到 Linux 或其他服務器。

如果您通過 ssh 訪問 Github,則無需在每次將更改推送到 GitHub 時都鍵入用戶名和密碼。

終端命令: 

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
This does the ssh key generation using RSA cryptographic algorithm.

eval "$(ssh-agent -s)" -> enable information about local login session.

ssh-add ~/.ssh/id_rsa -> add to ssh key.
cat ~/.ssh/id_rsa (use .pub file if not able to connect)
add this ssh key to github.


Now, go to github settings -> new ssh key -> create key

ssh -T git@github.com -> activate ssh key (test connection)

Refresh your github Page.

使用 git – 重要的 Git 命令 

Git 用戶配置(第一步)  

git --version (to check git version)
git config --global user.name "your name here"
git config --global user.email "your email here"

這些是附加到提交的信息。

初始化目錄 

git init 

初始化您的目錄以使用 git 并創建本地存儲庫。.git 文件夾已創建 (OR)

git clone http_url 

如果我們有一個現有的 git 倉庫,并且我們想將其內容復制到新的地方,就可以這樣做。

連接到遠程存儲庫

git remote add origin http_url/ssh_url 

連接到中央倉庫進行 Push/Pull。pull 意味著將遠程倉庫上的更改采用到您的本地倉庫。push 將本地倉庫中的更改合并到遠程倉庫。

git pull origin master

在推送之前,應始終先從中央存儲庫中提取內容,以便了解其他團隊成員的最新工作。它有助于防止合并沖突。這里,master 是指 master 分支(在 Git 中)。

git 中的 Stash Area

git stash

無論暫存區域中存在哪個文件,它都會在提交之前將該文件移動到 stash。

git stash pop

每當我們想從 stash 提交文件時,我們應該使用這個命令。

git stash clear

通過執行此作,將刪除存儲區域中的所有文件。

將文件添加到遠程存儲庫的步驟: 

首先,您的文件位于您的工作目錄中,通過鍵入將其移動到暫存區域:

git add -A (for all files and folders)
#To add all files only in the current directory
git add .

Git Status:此處,未跟蹤的文件是指您尚未添加到暫存區域的文件。Changes are not staged for commit 意味著您在工作目錄中對該文件進行更改之前暫存了文件,并且需要再次暫存更改。Changes ready to be commit:這些是已提交并準備推送到中央存儲庫的文件。

git status
git commit -a -m "message for commit"
-a: commit all files and for files that have been 
     staged earlier need not to be git add once more
-a option does that automatically.
git push origin master -> pushes your files to 
                         github master branch
git push origin anyOtherBranch -> pushes any 
                      other branch to github.
git log ; to see all your commits
git checkout commitObject(first 8 bits) file.txt-> 
revert back to this previous commit for file file.txt

以前的提交可以通過 git log 命令看到。

HEAD -> pointer to our latest commit.  

提交時忽略文件

在許多情況下,該項目會創建大量日志和其他不相關的文件,這些文件將被忽略。所以要忽略這些文件,我們必須將它們的名稱放在 “.gitignore” 文件中。

touch .gitignore
echo "filename.ext" >>.gitignore
#to ignore all files with .log extension
echo "*.log" > .gitignore

現在,在推送新提交時,寫入 .gitignore 文件中的文件名將被忽略。獲取 commits、commit 和 working tree 之間的更改。

git diff

'git diff' 命令將暫存區域與工作目錄進行比較,并告訴我們所做的更改。它比較早期信息和當前修改的信息。

Git 中的分支 

create branch ->
git branch myBranch
or
git checkout -b myBranch -> make and switch to the 
                                  branch myBranch

在你的分支中做工作。然后

git checkout master ; to switch back to master branch

現在,通過以下方式將內容與您的 myBranch 合并:

git merge myBranch (writing in master branch)

此合并將進行新的提交。

另一種方式 

git rebase myBranch

這將以串行方式將 branch 與 master 合并。現在

git push origin master

移除或刪除文件

刪除。我們使用的 Git 倉庫中的一個文件

git rm “file name”

僅從暫存區域中刪除

git rm –cached “ file name”

撤消更改

要將所有文件更改為與上一個提交相同,請使用

git checkout -f

為開源做出貢獻

開源可能被視為全球用戶可以分享他們的意見、自定義或共同解決問題或共同完成所需項目的一種方式。許多公司在 Github 上在線托管存儲庫,以允許開發人員訪問以更改他們的產品。一些公司(不一定是全部)以不同的方式獎勵他們的貢獻者。

您可以通過 fork 項目、對 fork 的存儲庫進行所需的更改,然后打開拉取請求來為 Github 上的任何開源項目做出貢獻。項目所有者將審查您的項目,并要求改進它或合并它。

?

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

32
10
6