1. 程式人生 > >git與GitHub那些事兒(三)

git與GitHub那些事兒(三)

Git與GitHub互動操作

git 直接無法建立倉庫,必須先在GitHub上建立好倉庫,拿到倉庫URL地址然後使用git遠端操作

git可以是用該URL進行向遠端推送版本資訊或獲取版本資訊,如下圖機制:

git操作GitHub

git遠端基本流程

在公司:

git remote add origin https://github.com/Hydrostaticwater/maoyam.git   # 為地址起一個別名origin
git push origin master                                                 # 將本地master分支內容以及版本資訊推送到GitHub
Username for 'https://github.com':                                     # 輸入GitHub使用者名稱
Password for 'https://
[email protected]
': # 輸入GitHub密碼 git push origin first # 將本地first分支內容以及版本資訊推送到GitHub 在家: git clone https://github.com/Hydrostaticwater/maoyam.git # 將專案從GitHub中獲取 git Branch # 可以檢視預設獲取到得只有master分支 git branch first origin first # 建立first分支與遠端first分支同步 git checkout first # 切換到first分支 vim maoyam.py # 繼續開發新功能 git add . # 新增檔案到版本庫的暫存狀態 git commit -m '新功能開發' # 提交新功能到版本庫的分支 git push origin first # 提交first分支內容到遠端GitHub託管倉庫的first分支 在公司: git checkout first # 切換到first分支 git pull origin first # 從遠端GitHub倉庫獲取first分支最新內容,併合併到本地 vim maoyam.py # 繼續開發新功能 git add . # 新增檔案到版本庫的暫存狀態 git commit -m '新功能開發1/3' # 提交新功能到版本庫的分支 在家: git checkout first # 切換到first分支 git fetch origin first # 從GitHub倉庫獲取first分支最新內容到版本庫的分支 git merge origin first # 將版本庫的分支內容合併到工作區 vim maoyam.py # 繼續開發新功能 git add . # 新增檔案到版本庫的暫存狀態 git commit -m '新功能開發2/3' # 提交新功能到版本庫的分支

長此以往,將Git和GitHub結合使用做到避免電腦損壞造成資料丟失以及多地開發的問題,上文執行過程中執行 【git pull origin 分支】命令等同於【git fetch origin 分支】+ 【git merge origin/分支】,並且在執行過程中可能會出現衝突,原因是由於原生代碼和獲取的最新程式碼有重合部分,那麼就需要自己手動解決衝突然後再繼續開發。

Git配置

Git的配置檔案有三個:

  • 系統配置: /private/etc/gitconfig
  • 使用者配置: ~/.gitconfig
  • 專案配置:.git/config

使用者憑證

由於Git和Github互動操作可能會很頻繁,那麼一定少了使用者授權的操作,為了防止每次操作重複輸入使用者名稱和密碼,Git提供了兩種解決方法:

  • 祕鑰
    首先建立一對祕鑰  ssh-keygen -t rsa,然後將 id_rsa.pub (公鑰)內容拷貝到github中,日後操作無需再輸入使用者名稱和密碼。
    注意:這種方式需要使用GIt中 [email protected]:hydrostaticwater/xxxxx.git 格式地址。
  • 密碼
    Https訪問git時,避免每次操作需要輸入使用者名稱和密碼,可以在配置檔案中新增如下配置項:
        [credential]
        helper = store/cache/第三方

    store:
            表示將使用者名稱和密碼儲存在硬碟上
            第一次輸入過使用者名稱和密碼之後,使用者名稱和密碼就會儲存在當前使用者根目錄的 .git-credentials 檔案中,內容格式為:https://使用者名稱:密碼@github.com

            自動新增配置命令:git config credential.helper store
    cache: 
            表示將使用者名稱和密碼儲存在快取中
            第一次輸入過使用者名稱和密碼之後,使用者名稱和密碼就會儲存在快取中,預設超時時間是 900 秒,快取相關檔案儲存在當前使用者根目錄的 git-credential-cache 中 
            自動新增配置命令:
                   git config credential.helper cache
                   git config credential.helper 'cache --timeout=300'

    相關操作:
            清除快取:git credential-cache exit 
            指定超時:
                [credential]
                helper = cache --timeout=300
    注意:
             這種方式需要使用GIt中 https://github.com/WuPeiqi/xxxx.git 格式地址。
             指定使用者名稱和密碼: https://使用者名稱:密碼@github.com/hydrostaticwater/xxx.git 

版本相關:

git tag -a v1.0 -m '版本介紹'        本地建立Tag
git show v1.0                       檢視
git tags -n                         檢視本地Tag
git tag -l 'v1.4.2.*'               檢視本地Tag,模糊匹配
git tag -d v1.0                     刪除Tag
git push origin :refs/tags/v0.2     更新遠端tag
git checkout v.10                   切換tag
git fetch origin tag V1.2

git push origin  --tags
git pull origin  --tags
    
git clone -b v0.1

.gitignore檔案

以斜槓“/”開頭表示目錄;

以星號“*”通配多個字元;

以問號“?”通配單個字元

以方括號“[]”包含單個字元的匹配列表;

以歎號“!”表示不忽略(跟蹤)匹配到的檔案或目錄;
# Byte-compiled / optimized / DLL files
 
# pycharm
.idea/
.DS_Store
offline-script/
media/
 
# database migrations
*/migrations/*.py
!*/migrations/__init__.py
 
 
__pycache__/
*.py[cod]
*$py.class
 
# Django stuff:
*.log
local_settings.py
*.sqlite3
 
 
# C extensions
*.so
 
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
 
# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
 
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
 
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
 
# Translations
*.mo
*.pot
 
 
# Flask stuff:
instance/
.webassets-cache
 
# Scrapy stuff:
.scrapy
 
# Sphinx documentation
docs/_build/
 
# PyBuilder
target/
 
# Jupyter Notebook
.ipynb_checkpoints
 
# IPython
profile_default/
ipython_config.py
 
# pyenv
.python-version
 
# celery beat schedule file
celerybeat-schedule
 
# SageMath parsed files
*.sage.py
 
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
 
# Spyder project settings
.spyderproject
.spyproject
 
# Rope project settings
.ropeproject
 
# mkdocs documentation
/site
 
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
View Code