Git 和 Github 的終極指南
?
文章亮點:
- Git 簡介
- Git 存儲庫結構
- Github 的
- 通過 HTTPS 或 ssh 訪問 Github 中央倉庫
- 使用 git – 重要的 Git 命令
Git 簡介
關于在 ubuntu 上的安裝目的,可以參考這篇文章:
Git 是一個分布式版本控制系統。那么,什么是版本控制系統?
版本控制系統是一個系統,當我們在團隊或個人中工作時,它會維護您項目的不同版本。(系統管理對文件的更改)隨著項目的進展,會向其添加新功能。因此,版本控制系統會為您維護項目的所有不同版本,并且您可以通過為其命名(如 MyProject、MyProjectWithFeature1 等)回滾到所需的任何版本,而不會給您維護不同版本帶來任何麻煩。
分布式版本控制系統意味著每個協作者(任何從事團隊項目的開發人員)在他/她的本地計算機中都有一個項目的本地存儲庫,這與 central 不同,團隊成員每次將他們的工作更新到主中央存儲庫時都應該有 Internet 連接。
所以,分布式是指:項目是分布式的。存儲庫是保存所有項目文件、圖像等的區域。就 Github 而言:不同版本的項目對應提交。
關于 Github 介紹的更多細節,可以參考:
Git 存儲庫結構
它由 4 個部分組成:
- 工作目錄:這是您創建項目 (編寫代碼) 并對其進行更改的本地目錄。
- 暫存區(或索引):這是您在提交之前首先需要放置項目的區域。這用于其他團隊成員的代碼審查。
- 本地倉庫:這是您的本地倉庫,您可以在將更改推送到 Github 上的中央倉庫之前將更改提交到項目。這就是分布式版本控制系統提供的內容。這對應于我們目錄中的 .git 文件夾。
- 中央存儲庫: 這是中央服務器上的主項目,其副本與每個團隊成員一起作為本地存儲庫。
所有存儲庫結構都是 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 上的任何開源項目做出貢獻。項目所有者將審查您的項目,并要求改進它或合并它。
?
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















