git(代碼倉庫)

第1章 git介紹html

1.1 參數:python

第2章 git管理一個項目git

2.1 圖示github

2.2 cd /項目路徑sql

2.3 git config --globle user.email  "郵箱地址"vim

2.4 git confgi --globle user.name  'xiaodong'緩存

2.5 git initapp

2.6 git logssh

2.7 git statuside

2.8 git commit -m '描述信息'

2.9 git log

2.10 git add .

第3章 項目回滾

3.1 git reset  --hard  '惟一標識'

3.2 git reflog

3.3 例:完整項目管理

第4章 git 進階(開發未完成時)

4.1 statsh

4.2 git stash

4.3 例:

4.4 git stash pop

4.5 git stash list

4.6 git stash clear

4.7 git stash pop

4.8 git stash  apply

4.9 git stash drop

第5章 分支

5.1 介紹

5.2 git branch

5.3 git branch dev

5.4 git checkout  dev

5.5 git merage

5.6 git branch -d debug

5.7 實戰:

第6章 github應用

6.1 上傳下載github命令

6.2 實戰GitHub

6.3 查看合併信息

第7章 協同開發

7.1 合做者

7.2 組織

7.3 忽略合併某文件

7.4 協同開發過程

第8章 用戶憑證

8.1 祕鑰

8.2 密碼

8.3 相關操做:

8.4 補充版本命令

8.5 git發佈

 

第1章 git介紹

介紹:幫你管理版本的工具

地址:https://git-scm.com

1.1 參數:

$ git

usage: git [--version] [--help] [-C <path>] [-c name=value]

           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]

           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]

           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]

           <command> [<args>]

 

These are common Git commands used in various situations:

 

start a working area (see also: git help tutorial)

   clone      Clone a repository into a new directory

   init       Create an empty Git repository or reinitialize an existing one

 

work on the current change (see also: git help everyday)

   add        Add file contents to the index

   mv         Move or rename a file, a directory, or a symlink

   reset      Reset current HEAD to the specified state

   rm         Remove files from the working tree and from the index

 

examine the history and state (see also: git help revisions)

   bisect     Use binary search to find the commit that introduced a bug

   grep       Print lines matching a pattern

   log        Show commit logs

   show       Show various types of objects

   status     Show the working tree status

 

grow, mark and tweak your common history

   branch     List, create, or delete branches

   checkout   Switch branches or restore working tree files

   commit     Record changes to the repository

   diff       Show changes between commits, commit and working tree, etc

   merge      Join two or more development histories together

   rebase     Reapply commits on top of another base tip

   tag        Create, list, delete or verify a tag object signed with GPG

 

collaborate (see also: git help workflows)

   fetch      Download objects and refs from another repository

   pull       Fetch from and integrate with another repository or a local branch

   push       Update remote refs along with associated objects

第2章 git管理一個項目

2.1 圖示

Git把管理的文件分爲了兩個區域四個狀態

 

l  工做區:當前開發程序所在目錄稱爲工做區,即:工做開發都是在該目錄,該區域的文件會有狀態的變化且狀態由git自動檢測,若是程序中文件作任何操做(增、刪、改),文件狀態均會被檢測到,可使用 git status】命令查看。

l  版本庫:工做區檢測到有文件發生變化,那麼意味着較上一個版本以後對程序進行了修改,修改完成以後,能夠當作下一版本進行提交,那麼就是執行 git add . 將全部文件提交到暫存區,而後再執行【git commit -m '又一個版本'】提交到版本庫的分支便可,以後可使用【git log】命令查看版本記錄

2.2 cd /項目路徑

2.3 git config --globle user.email  "郵箱地址"

解釋:添加郵箱地址

2.4 git confgi --globle user.name  'xiaodong'

解釋:設置master管理名稱

2.5 git init

解釋:管理記錄當前代碼狀態

2.6 git log

解釋:查看當前保存版本

2.7 git status

解釋:查看修改狀態

2.8 git commit -m '描述信息'

解釋:添加描述信息要寫詳細,提交代碼

2.9 git log

查看當前版本以前保存版本,

2.10 git add .

解釋:

新增全部新增功能

亦可:

git add 文件名

添加新增功能文件

git commit -m '新增功能'

工做區:當前開發程序所在目錄稱爲工做區,即:工做開發都是在該目錄,該區域的文件會有狀態的變化且狀態由git自動檢測,若是程序中文件作任何操做(增、刪、改),文件狀態均會被檢測到,可使用git status】命令查看。

第3章 項目回滾

 

3.1 git reset  --hard  '惟一標識'

解釋:回滾項目

 

3.2 git reflog

解釋:查看所有項目,包含被回滾的項目

 

例:

git reset --heart 5ad460f

3.3 例:完整項目管理

$ git status                     # 查看當前git狀態

On branch master

Initial commit

Untracked files:

  (use "git add <file>..." to include in what will be committed)

 

    .idea/

    app01/

    db.sqlite3

    manage.py

    pondo/

    readme

    templates/

 

nothing added to commit but untracked files present (use "git add" to track)

$ git add .                       # 添加當前目錄下全部文件到版本庫

$ git commit -m '第一次提交'        # 提交到版本庫,並填寫版本說明,以便之後回滾。

[master (root-commit) df47fe4] 第一次提交

files changed, 879 insertions(+)

 create mode 100644 .idea/dictionaries/maple.xml

 create mode 100644 .idea/encodings.xml

 create mode 100644 .idea/inspectionProfiles/profiles_settings.xml

第4章 git 進階(開發未完成時)

4.1 statsh

解釋:stash用於將工做區發生變化的全部文件獲取臨時存儲在「某個地方」,將工做區還原當前版本未操做前的狀態;stash還能夠將臨時存儲在「某

4.2 git stash

解釋:

stash:{詞義}隱藏

隱藏爲開發玩的功能,修改之前的功能bug

4.3 例:

$ vim app01/views.py             # 開發直播功能,剛開發到一半

 

$ git status

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

    modified:   app01/views.py

 

no changes added to commit (use "git add" and/or "git commit -a")

 

$ git stash                     # 將開發到一半的直播功能,臨時存儲到「某個地方」

Saved working directory and index state WIP on master: 0972f4b 非洲專區上線

HEAD is now at 0972f4b 非洲專區上線

 

$ git status                    # 工做區回到當前版本未作任何操做前

On branch master

nothing to commit, working tree clean

 

$ vim pondo/settings.py         # 緊急修復bug

$ git status

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

    modified:   pondo/settings.py

no changes added to commit (use "git add" and/or "git commit -a")

 

$ git add .                     # 添加到修改bug的代碼到暫存狀態

$ git commit -m '緊急修復bug'     # 提交修復Bug的代碼到分支

[master 1300d33] 緊急修復bug

file changed, 1 insertion(+)

 

$ git stash pop                 # 將開發到一半的直播功能從「某個地方」再次拿會工做區繼續開發

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

    modified:   app01/views.py

 

no changes added to commit (use "git add" and/or "git commit -a")

Dropped refs/stash@{0} (059d78ca8fa204f9559bd3ce0ae76235969b4301)

 

4.4 git stash pop

解釋:恢復未開發完成的功能

注意:

特別的:執行 git stash pop 命令時,可能會遇到衝突,由於在緊急修復bug的代碼和經過stash存儲在「某個地方」的代碼會有重合部分,因此執行 git stash pop 時候就會出現衝突,有衝突解決衝突便可。

4.5 git stash list

解釋:查看‘某個地方’存儲的全部記錄

4.6 git stash clear

解釋:清空某個地方

4.7 git stash pop

解釋:將第一個記錄從某個地方從新拿到工做區(可能引發衝突)

4.8 git stash  apply

編號,將指定編號記錄從某個地方重新拿到工做區(可能有衝突)

4.9 git stash drop

解釋:編號,刪除指定編號的記錄

第5章 分支

5.1 介紹

branch稱爲分支,默認僅有一個名爲master的分支。通常開發新功能流程爲:開發新功能時會在分支dev上進行,開發完畢後再合併到master分支

5.2 git branch

查看全部分支

5.3 git branch dev

建立新的分支

5.4 git checkout  dev

切換分支

5.5 git merage

合併分支:

git checkout master (先切換到master分支)

git merage dev (將開發完成的dev分支合併到master

 

例:

$ git branch dev                 # 建立新分支,即:拷貝一份當前所在分支代碼到新分支

$ git checkout dev               # 切換到dev分支

$ vim app01/views.py             # 開發功能

$ git status                     # 查看狀態,即:在dev分支修改了app01/views.py文件

On branch dev

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

    modified:   app01/views.py

 

no changes added to commit (use "git add" and/or "git commit -a")

$ git add .                      # 將修改文件添加到版本庫的暫存區

$ git commit -m '新功能開發完畢'    # 將暫存區的內容提交到當前所在分支,即:dev分支

[dev 32b40cd] 新功能開發完畢

file changed, 2 insertions(+)

$ git checkout master             # 切換回master分支

Switched to branch 'master'

$ git merge dev                   # dev分支內容合併到master分支

Updating 0972f4b..32b40cd

Fast-forward

 app01/views.py | 2 ++

file changed, 2 insertions(+)

 

5.6 git branch -d debug

刪除debug分支

5.7 實戰:

線上出現BUG,如何操做?

l  保存當前的修改,切換到master分支,建立debug分支,再切換到debug分支上進行代碼的修改,

l  修改完成以後,提交版本

l  奇幻到master分支,將debug分支上的代碼合併過來,把debug分支刪除。

$ git branch                     # 當前在master分支

* master

$ git branch dev                 # 建立dev分支用於開發新功能

 

$ git checkout dev               # 切換到dev分支

Switched to branch 'dev'

$ vim app01/views.py             # 開發新功能到一半,須要緊急修復Bug

$ git add .

$ git commit -m '新功能開發一半'

[dev b3ac2cb] 新功能開發一半

file changed, 2 insertions(+)

$ git checkout master            # 切換回master分支

Switched to branch 'master'

$ git branch bug                 # 建立bug分支

$ git checkout bug               # 切換到bug分支

Switched to branch 'bug'

 

$ vim pondo/settings.py          # 修改bug

$ git add .                      # 提交bug

$ git commit -m '緊急修復bug'      # 提交bug

[bug f42f386] 緊急修復bug

file changed, 1 insertion(+), 1 deletion(-)

 

 

$ git checkout master            # 切換會master

Switched to branch 'master'

 

$ git merge bug                  # bug分支內容合併到master分支,表示bug修復完畢,能夠上線

Updating 0972f4b..f42f386

Fast-forward

 pondo/settings.py | 2 +-

file changed, 1 insertion(+), 1 deletion(-)

$ git checkout dev               # 切換到dev分支,繼續開發新功能

Switched to branch 'dev'

 

$ vim app01/views.py             # 繼續開發其餘一半功能

 

$ git add .                      # 提交新功能

 

$ git commit -m '繼續開發完成'      # 提交功能

[dev c0bfb27] 繼續開發完成

file changed, 1 insertion(+)

 

$ git checkout master            # 切換回master分支

Switched to branch 'master'

 

$ git merge dev                  # dev分支合併到master分支

Merge made by the 'recursive' strategy.

 app01/views.py | 3 +++

file changed, 3 insertions(+)

第6章 github應用

說明:git能夠是用該URL進行向遠程推送版本信息或獲取版本信息

 

6.1 上傳下載github命令

git remote add origin https://github.com/maple-shaw/pondo.git   # 爲地址起一個別名origin

git push origin master   # 將本地master分支內容以及版本信息推送到GitHub

git push origin dev              # 將本地dev分支內容以及版本信息推送到GitHub

git clone https://github.com/maple-shaw/pondo.git    # 將項目從GitHub中獲取

git branch dev origin/dev                           # 建立dev分支且和遠程dev分支同步

git push origin dev                               # 提交dev分支內容到遠程GitHub託管倉庫的dev分支

 

6.2 實戰GitHub

在家裏,小P開發完畢部分功能將代碼推送到GitHub

$ git remote add origin https://github.com/maple-shaw/pondo.git   # 爲地址起一個別名origin

$ git push origin master              # 將本地master分支內容以及版本信息推送到GitHub

Username for 'https://github.com':                               # 輸入GitHub用戶名

Password for 'https://maple-shaw@github.com':                       # 輸入GitHub密碼

Counting objects: 2, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (2/2), 270 bytes | 0 bytes/s, done.

Total 2 (delta 1), reused 0 (delta 0)

remote: Resolving deltas: 100% (1/1), completed with 1 local object.

To https://github.com/maple-shaw/pondo.git

   634aac4..274f1e4  master -> master

$ git push origin dev              # 將本地dev分支內容以及版本信息推送到GitHub

Counting objects: 3, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.

Total 3 (delta 1), reused 0 (delta 0)

remote: Resolving deltas: 100% (1/1), completed with 1 local object.

To https://github.com/maple-shaw/pondo.git

   274f1e4..50e2169  dev -> dev

在公司,新電腦第一次使用,須要將代碼從GitHub中獲取並繼續開發,開發完事下班就下班回家。

$ git clone https://github.com/maple-shaw/pondo.git    # 將項目從GitHub中獲取

Cloning into 'pondo'...

remote: Counting objects: 31, done.

remote: Compressing objects: 100% (26/26), done.

remote: Total 31 (delta 2), reused 30 (delta 1), pack-reused 0

Unpacking objects: 100% (31/31), done.

$ cd pondo/

$ git Branch                                          # 默認獲取到得只有master分支

* master

$ git branch dev origin/dev                           # 建立dev分支且和遠程dev分支同步

Branch dev set up to track remote branch dev from origin.

$ git checkout dev                                    # 切換到dev分支

Switched to branch 'dev'

 

$ vim app01/views.py                                  # 繼續開發新功能

 

$ git add .                                           # 添加文件到版本庫的暫存狀態

$ git commit -m '公司開發功能1'                         # 提交新功能到版本庫的分支

[dev 9281447] 公司開發功能1

file changed, 1 insertion(+), 1 deletion(-)

$ git push origin dev                                 # 提交dev分支內容到遠程GitHub託管倉庫的dev分支

Username for 'https://github.com': maple

Password for 'https://maple-shaw@github.com':

Counting objects: 4, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (4/4), done.

Writing objects: 100% (4/4), 427 bytes | 0 bytes/s, done.

Total 4 (delta 2), reused 0 (delta 0)

remote: Resolving deltas: 100% (2/2), completed with 2 local objects.

To https://github.com/maple-shaw/pondo.git

   50e2169..9281447  dev -> dev

在家裏,因爲白天在公司已經開發一部分功能並提交到GitHub,家裏電腦的代碼仍是昨晚的版本,因此須要從GitHub拉去最新代碼,而後繼續開發。

$ git checkout dev                                   # 切換到dev分支

Already on 'dev'

$ git pull origin dev                                # 從遠程GitHub倉庫獲取dev分支最新內容,併合併到本地

remote: Counting objects: 4, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0

Unpacking objects: 100% (4/4), done.

From https://github.com/maple/pondo

 * branch            dev        -> FETCH_HEAD

   50e2169..9281447  dev        -> origin/dev

Updating 50e2169..9281447

Fast-forward

 app01/views.py | 2 +-

file changed, 1 insertion(+), 1 deletion(-)

 $ vim app01/views.py                                # 繼續開發新功能

 $ git add .                                         # 添加文件到版本庫的暫存狀態

$ git commit -m '家裏開發功能1'                        # 提交新功能到版本庫的分支

在公司,因爲昨天晚上在家已經開發了一部分功能,在公司須要先把昨晚開發的功能從GitHub中拉取,並繼續開發。

$ git checkout dev                                   # 切換到dev分支

$ git fetch origin dev                               # GitHub倉庫獲取dev分支最新內容到版本庫的分支

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (1/1), done.

remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0

Unpacking objects: 100% (3/3), done.

From https://github.com/maple-shaw/pondo

 * branch            dev        -> FETCH_HEAD

   150d891..65b6604  dev        -> origin/dev

$ git merge origin/dev                               # 將版本庫的分支內容合併到工做區

Updating 150d891..65b6604

Fast-forward

 readme | 5 ++++-

file changed, 4 insertions(+), 1 deletion(-)

$ vim app01/views.py                                 # 繼續開發新功能

$ git add .                                          # 添加文件到版本庫的暫存狀態

$ git commit -m 'xxxxxxxxxxx'                        # 提交新功能到版本庫的分支

久而久之,將GitGitHub結合使用作到避免電腦損壞形成數據丟失以及多地開發的問題,上文執行過程當中執行git pull origin 分支】命令等同於【git fetch origin 分支】+ git merge origin/分支】,而且在執行過程當中可能會出現衝突,緣由是因爲本地代碼和獲取的最新代碼有重合部分,那麼就須要本身手動解決衝忽然後再繼續開發。

                                                    

6.3 查看合併信息

 

第7章 協同開發

協同開發通常有兩種方式:

7.1 合做者

將其餘用戶添加到倉庫合做者中以後,該用戶就具備向當前倉庫提交代碼。

 

7.2 組織

建立一個組織,而後再該組織下能夠建立多個項目,組內成員能夠向組內全部項目提交代碼。PS:也能夠對某個項目指定合做者

 

 

 

 

7.3 忽略合併某文件

 vim gitignore

#將想忽略的文件名添加進來

git add.

git commit -m '添加忽略'

 

7.4 協同開發過程

·         建立程序

o    用戶A建立程序,提交到GitHub

o    用戶B克隆項目

o    用戶C克隆項目

·         開發功能

o    用戶A開發功能1

o    用戶B開發功能2

o    用戶C開發功能3

·         提交

o    用戶A提交功能1,並pushA用戶手速快,先提交。)

o    用戶B提交功能2,沒法push,由於GitHub上已經有其餘人提交的新代碼。
解決方法:從GitHub上獲取最新代碼併合併到本地,提交本身開發的功能2

o    用戶C提交功能3,沒法push,沒法提交,由於GitHub上已經有其餘人提交的新代碼。
解決方法:從GitHub上獲取最新代碼併合併到本地,提交本身開發的功能3

·         獲取最新代碼

o    用戶A獲取最新代碼

o    用戶B獲取最新代碼

o    用戶C獲取最新代碼

在上面紅色標註的解決方法位置能夠有三種方式操做,三者均可以完成合並並提交新功能,可是日誌記錄會有差別,如:前二者版本記錄中會出現合併,而第三種能夠保證版本記錄乾淨整潔。

o    git pull origin master   而後 git push origin master

o    git fetch origin master 而後 git merge origin/master   git push origin master

第8章 用戶憑證

因爲GitGithub交互操做可能會很頻繁,那麼必定少不了用戶受權的操做,爲了防止每次操做重複輸入用戶名和密碼,Git提供了兩種解決方法:

 

8.1 祕鑰

首先建立一對祕鑰  ssh-keygen -t rsa,而後將 id_rsa.pub (公鑰)內容拷貝到github中,往後操做無需再輸入用戶名和密碼。

注意:這種方式須要使用GIt git@github.com:maple-shaw/xxxxx.git 格式地址。

8.2 密碼

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'

 

8.3 相關操做:

        清除緩存:git credential-cache exit

        指定超時:

            [credential]

            helper = cache --timeout=300

注意:這種方式須要使用GIt https://github.com/maple-shaw/xxxx.git 格式地址。

8.4 補充版本命令

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

8.5 git發佈

基本管理

git add .

git commit -m 'xxx'

git push origin master

git pull origin  master

 

版本控制

本地建立版本信息

git tag -a v1.1 -m 'xxx'

把本地版本推送到遠程

git push origin --tags

下載指定版本:

 git clone -b v1.1 https://github.com/wangxiaodong-sir/jesion.git

 

 

 

 

 

1 git介紹... 1

1.1 參數:... 1

2 git管理一個項目... 2

2.1 圖示... 2

2.2 cd /項目路徑... 3

2.3 git config --globle user.email  "郵箱地址". 3

2.4 git confgi --globle user.name  'xiaodong' 3

2.5 git init 3

2.6 git log. 3

2.7 git status. 3

2.8 git commit -m '描述信息' 3

2.9 git log. 3

2.10 git add . 3

3項目回滾... 4

3.1 git reset  --hard  '惟一標識' 4

3.2 git reflog. 5

3.3 例:完整項目管理... 5

4 git 進階(開發未完成時)... 6

4.1 statsh. 6

4.2 git stash. 6

4.3 例:... 6

4.4 git stash pop. 8

4.5 git stash list 8

4.6 git stash clear 8

4.7 git stash pop. 8

4.8 git stash  apply. 8

4.9 git stash drop. 8

5分支... 8

5.1 介紹... 8

5.2 git branch. 8

5.3 git branch dev. 8

5.4 git checkout  dev. 9

5.5 git merage. 9

5.6 git branch -d debug. 10

5.7 實戰:... 10

6 github應用... 11

6.1 上傳下載github命令... 12

6.2 實戰GitHub. 13

6.3 查看合併信息... 16

7協同開發... 16

7.1 合做者... 16

7.2 組織... 17

7.3 忽略合併某文件... 20

7.4 協同開發過程... 20

8用戶憑證... 21

8.1 祕鑰... 21

8.2 密碼... 21

8.3 相關操做:... 21

8.4 補充版本命令... 22

8.5 git發佈    22

相關文章
相關標籤/搜索