Git是用於代碼託管工具。python
開發來龍去脈:2002 Linux kernel 項目開發使用商業版的BitKeeper 版本控制系統(VSC)管理項目程序,但與開發BK的公司關係決裂,免費版本開始收費,促使Linux開發者本身開發新的代碼託管工具。尤爲是Linus Torvalds(Linux之父)等,爲建立一個快速、簡單、多併發、像Linux同樣高效管理大型項目,而研發的開源代碼管理工具。git
# Maxos會有內置git,不須要單獨安裝,Windows須要下載安裝。 # git 全局命令 git --version # 查看git版本號,安裝後查看 git clone url # 供其餘終端使用
Git能夠更改config文件,自定義化主題。Git配置文件可能存儲到三個位置: 1. /etc/gitconfig file: 全局配置文件 2. ~/.gitconfig or ~/.config/git/config file:本地存儲我的帳號 3. .git/config:本地git倉庫路徑中的文件,包含初始化,上傳,下載的配置
# 配置全局帳號 git config --global user.name "John Doe" git config --global user.email johndoe@example.com # --global參數只能設置一個帳號,若是使用多個帳號,須要省略此參數
# 自定義編輯器(for mac) git config --global core.editor emacs # (for windows) git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession"
# 查看git配置 git config --list # 查看用戶名 git config user.name
本地創建新git 倉庫(repository )數據庫
# for mac cd /User/henry/*** # 進入本地文件夾(即將進行託管的文件夾) git init # 進行git 初識化,同時會生成本地倉庫(.git/)目錄 git add 文件名(.) # 添加到staging area git status # 查看git 信息,此時可看到已添加到staging area的文件以及爲添加的文件 git commit -m '提示符' # 對文件進行標記,利於區分 git remote add henry https://gitee.com/***/***.git # 關聯到碼雲帳戶 git push -u henry master # 推送到碼雲,會提示輸入密碼 # for windows 進入待託管的文件夾,右擊鼠標,打開git bash here 其他步驟同mac
若是已經使用過git 可使用clone 命令vim
# for example # 若是想重命名直接在url後添加文件名,也可省略表示默認文件名 git clone https://gitee.com/***/*** (文件名)
Note: git 不只支持http協議,還支持ssh 傳輸協議windows
# 報錯1 # 緣由:本地倉庫爲空 error: src refspec master does not match any. error: failed to push some refs to 'https://gitee.com/***/***.git' # 解決方案 git add 文件名 或(.所有文件) git commit -m "版本名"
# 報錯2 # 緣由:本地與託管平臺數據不一致,常是由在託管平臺刪除致使 ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://gitee.com/***/***.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. # 解決方案 git pull henry master # 強制把遠端數據與本地數據同步 git push -u origin master # 從新推送便可 # 若是上述步驟不生效,還提示錯誤,可以使用 git push origin master -f # -f 表示強制上傳,不建議常用
本地倉庫中的任意文件只有兩種狀態:tracked (追蹤)或者untracked(待追蹤)。安全
untracked的文件,git不會進行託管,只有tracked的文件才能push到remote(遠端)。bash
tracked文件能夠有3種狀態:unmodified(第一次clone後), modified(本地修改的文件)或者staged(add的文件)。session
# 告知 git, 要刪除的文件 git rm filename # 查看文件狀態 git status # git 已經檢測到用戶刪除的文件
# 作標記 git commit -m 'test' # git push origin master
Note: 登錄remote端,便可看到已經刪除文件記錄併發
# 本步驟,主要針對於小白,沒法解決遠端和本地同步問題 1. git add . 2. git commit -m 'test' 3. git push origin master -f
說明:ssh
# 在使用git的過程當中,咱們爲了省事常常會使用 git add . 添加全部文件,可是又一些 .**的文件會同時被 track 到,這個時候咱們就須要使用選擇性忽略
# step1 打開本地git 項目倉庫,Mac/Linux用戶能夠在terimal中打開項目文件夾,windows用戶在項目文件夾中打開Bash。
# step2,新建文件 vim .gitingore
# step3 添加須要忽略的文件
# 效果圖對比
# 配置 .gitignore 前的Working Directory狀態
# 配置 .gitignore 文件
# 配置 .gitignore 後的Working Directory狀態
# 設置好.gitignore 文件後,下次就能夠任性的使用git add . 的操做了。
備註:若有不當之處,歡迎廣大碼友指正。
References:
1. https://book.git-scm.com/book/en/v2/Getting-Started-About-Version-Control 2. 轉載請註明出處。