首先進入項目目錄,啟動git--->Git Bash Here,這樣就開啟了git管理系統啟動了一個git圖形界面,執行 $ git init . 初始化,在項目中便形成了一個.git的目錄 然后通過一系列命令進行版本控制。
注意:項目內容在沒有被管理的時候status為紅色,被管理后為綠色!
#開始管理項目(基礎3步走) git init . #首先初始化,生成 .git目錄 git add . #將整個項目管理起來 git commit -m "項目01版本" #"項目的01版本"當然執行的時候可能會報錯,需要配置下git config """ 執行這兩條命令配置郵箱和名稱 git config --global user.email "you@example.com" git config --global user.name "Your Name" """
工作區: 項目中當前的編輯位置.
緩存區:git add 之后的區域,將文件放在緩存區.
版本庫:commit之后的區域就是版本庫.
git常用命令
git init . # 初始化 git add . # 將工作區的所有文件添加到緩存區 git commit -m “提交信息” #將緩存區的內容添加到版本庫,注意:"提交信息"寫的越詳細越好!方便后期管理 git status #查看當前的狀態 git reset --hard hash值 #回退到指定的版本,這里的hash值就是每次commit的時候都會生成一個類似md5值的字符串,例如 "9d2aaf3ea89a9e6b8d8050a6d1a730f6bb4a0d85" git checkout -- file(指定文件) # 將文件回滾到最近一次提交的樣子 該命令比較危險在不確認文件用途的時候慎用!!! git log # 查看當前位置之前的提交記錄 git log -p 文件 #指定版本庫的區別 git log pretty=online #將commit過的值 版本庫信息全部顯示 git log --pretty="format:%an %h %T %ar" #格式化顯示版本庫信息 例如%an 作者名稱 %h 用戶簡短hash值 %ar修訂日期 %T樹狀顯示 git reflog #查看所有的記錄(只要提交過的記錄就能查到) git reset HEAD file # 將文件從緩存區拉取到工作區 git diff 對比文件 # 對比工作區和緩存區 git diff --cached 對比文件 # 對比版本庫和緩存區
git-快照
git stash #將當前內容創建一個快照,並回到最后一次提交的位置,前提是有改變的情況下 git stash list #查看快照列表 git stash pop 回到快照位置,並刪除這個快照 相當於以下兩條命令集合 git stash apply #回到快照 git stash drop #刪除快照
git-分支
分支的作用就是用於團隊協同開發,這樣代碼就會出現較大分歧。這時候就需要用到分支了,不同的任務組在不同的分支上開發,互相之間不會影響。git分支的特性和BUG修改都在不同的分支上進行開發和測試。這樣規范了整個軟件的開發流程。分支之間的互不影響這種特性可以增加團隊合作的效率。GIT分支的另外一個重要特性就是可以合並不同軟件倉庫(fork)的分支。
注意點:一般來說禁止在master分支上修改,因為master為線上代碼,一旦出現問題,會產生嚴重的后果.基本上在dev分支上修改
#分支的常用命令 git branch name #創建一個分支 git branch #查看分支列表 git checkout name #切換分支 git branch -d name #刪除指定分支 git checkout -b name #在當前分支的基礎上 創建並切換一個分支 git merge master bug #將這兩個分支合並
沖突
#下面這種情況就表示出現了沖突 Auto-merging templates/car.html CONFLICT (content): Merge conflict in templates/car.html Automatic merge failed; fix conflicts and then commit the result. <<<<<<< HEAD <li>蘭博基尼2/3</li> ======= <li>蘭博基尼1/2</li> >>>>>>> dev1
Auto-merging templates/car.html
CONFLICT (content): Merge conflict in templates/car.html
The stash entry is kept in case you need it again.
<<<<<<< Updated upstream
<li>奇瑞瑞虎7</li>
=======
<li>奇瑞瑞虎</li>
>>>>>>> Stashed changes
#分支和dev1同時改動同一個文件相同的地方,合並的時候git無法處理,產生沖突,需要人為解決
#創建快照之前,將li標簽改為奇瑞瑞虎,當創建快照后然后在將li標簽改為奇瑞瑞虎7,當執行刪除快照 git stash pop 的時候就會產生沖突,需要手動選擇解決
Github托管代碼
將代碼上傳github
1.先創建一個倉庫,選擇公開和私有隨意.
#上傳操作 git remote add origin https://github.com/liuxiaofei1071/shop.git #將自己github url地址重命名為origin git push origin master #此時上傳master分支代碼到github的coco倉庫 ,如果沒登錄Github就需要進行登錄
2.這樣只能上傳master分支,如果是多分支的話
git push origin dev #傳dev分支到github git push origin dev1 #傳dev分支到github
將從github代碼拉取到本地
1.進入對應倉庫,如我的 liuxiaofei1010/shop,點擊Clone or download按鈕,復制github上的項目url,在git中執行對應的命令
#相關git命令 git clone github的url #該命令就可以將代碼從github上拉取下來,但是僅限於master分支 #拉取其他分支代碼 git checkout -b dev origin/dev #拉取dev分支 git checkout -b dev1 origin/dev1 #拉取dev1分支
兩台機器分別更改github代碼
#公司pc git pull origin dev1 #將dev1分支代碼同步到機器dev1分支 #修改后 git push origin dev1 #將本地dev1分支代碼同步到github的dev分支 #home-pc 操作同上..
兩台機器分別更改代碼同一位置push異常
#錯誤信息 $ git push origin dev1 To https://github.com/liuxiaofei1071/shop.git ! [rejected] dev1 -> dev1 (fetch first) error: failed to push some refs to 'https://github.com/liuxiaofei1071/shop.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. #這就是所謂的提交沖突問題

#嚴格按照公司規定 1.每個人都用自己的分支,在自己的分支上提交 2.合並分支的時候人都要在,各自對自己的代碼負責 3.完成一個小功能合並一次(2-3) 4.一般組長來合並代碼 5.review 組長 帶你的人
變基
#作用就是將多台機器push后的分支由曲線變為一條直線 git rebase #變基 --雞肋 --治療強迫症
給別人貢獻代碼

#加好友步驟 1.進入對方github所在項目 -->settings --->Collaborators 2.輸入對方username 添加對方,等待對方email驗證通過 3.方式一 : 通過后進入對方項目,拿到對方項目url,通過git clone 克隆,本地修改 3.方式二 : 個人用戶下拉框 settings --->Organizations --> 新建一個組織 --->設置組織名稱,郵箱 --->邀請成員 --->Continue --->Submit

#給別人修改代碼 1. Fork --選擇自己/創建的組織 2. 本地進行修改即將改動的地方, 3.new pull request 4.等待對方確認即可
tags標簽
一般在大項目開發完成或項目開發到一個里程碑的時候會打上標簽
#常用命令 git tag -a v1.0 -m "標簽信息" #打造一個標簽 git tag #查看標簽 git push origin --tags #push到github git tag -d v1.0 #刪除標簽 git push origin :refs/tags/v1.0 #推送一個空的標簽
忽略敏感信息
例如不想被別人看到的信息 db
#了解. gitignore文件
Gitpython
用python操作git
安裝模塊 gitpython
from git import Repo repo = Repo("PATH") repo.index.add() #添加 repo.index.commit() #提交 repo.index.checkout() #回滾 repo.index.reset(commit=hash5,head=True) repo.create_head() #創建分支 repo.create_tag() #創建標簽 repo.branches() #獲取所有的分支 r = git.Repo.clone_from(url,to_path) #克隆 r.remote() r.pull() r.push() g = git.Git(PATH) g.add() g.commit ("-m ")
...待續