多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Git學習筆記

Git學習筆記

來源:程序員人生   發布時間:2016-07-14 15:28:20 閱讀次數:2537次
    1. git基本配置
      1. git config --global user.name "Your Name"

        設置名字

        git config --global user.email "email@example.com"

        設置郵箱

        git commit --amend --author='Your Name <you@example.com>'

        如果名字郵箱有誤,可以修改

    2. git基本命令

    git init

    初始化1個git倉庫

    git add

    添加文件到倉庫

    git commit -m

    提交更改,-m為此次提交的說明(message

    git status

    查看倉庫當前的狀態

    git diff

    文件被修改后,查看修改的內容

    git log

    提交的歷史版本信息(從最近到最遠羅列歷史提交的信息)

    1. 版本回退
      1. HEAD

        表示當前版本

        HEAD^

        表示上1個版本

        HEAD^^

        表示上上個版本

        HEAD~100

        表示往上100個版本

        git reset --hard HEAD^

        回退到上個版本

        git reset --hard 3628164

        如果回退后希望撤消回退,可以直接在hard后面寫上最后1次提交版本的commit id一樣重新回到最新版(條件是當前終端命令行沒有關閉)

        git reflog

        用來記錄你的每次命令,場景:關掉了終端,希望撤消這次回退,則可用來查找最新的版本的commit id

    2. 工作區和暫存區
      1. 工作區

        就是在電腦中能看到的目錄

        版本庫

        工作區有1個隱藏目錄.git,這個不算工作區,而是git的版本庫:

        版本庫里存了很多東西,其中最重要的就是稱為stage(或叫index)的暫存區,還有Git為我們自動創建的第1個分支master,和指向master的1個指針叫HEAD

        暫存區(stageindex)(概念重要)

        git add 實際上就是把文件的修改添加到暫存區
        git commit 實際上是把暫存區的所有內容提交到當前分支
        可以簡單理解為,需要提交的文件修改統統放到暫存區,然后,1次性提交暫存區的所有修改

    3. 管理修改
      1. 管理修改

        git跟蹤并管理的是修改,而非文件

        git diff HEAD -- <fiel>

        查看工作區和版本庫里面最新版本的區分

        git checkout -- <file>

        放棄工作區的修改,把<file>文件在工作區的修改全部撤消,讓這個文件回到最近1次git commit git add 時的狀態

        git reset HEAD <file>

        把暫存區的修改撤消掉(unstage,重新放回工作區

        git reset

        既可以回退版本,也能夠把暫存區的修改回退到工作區。當我們用HEAD時,表示最新版本

        git rm <file>

        在版本庫中刪除某個文件,如果1個文件已被提交到版本庫,那末你永久不用擔心誤刪,但是要謹慎,你只能恢復文件到最新版本,你會丟失最近1次提交后你修改的內容

    4. 遠程倉庫
      1. 創建SSH Key

        $ ssh-keygen -t rsa -C "youremail@example.com"

        SSH本地文件

        主用戶目錄>>/.ssh/id_res.pub里面的是公匙,在github新加SSH Key的時候把里面的內容復制過去

        關聯遠程倉庫

        $ git remote add origin git@github.com:Jiayupeng/learngit.git

        git push

        把本地庫的內容推送到遠程,實際上是把當前分支master推送到遠程

        git push -u origin master

        加上-u參數,Git不但會把本地的master分支內容推送到遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或拉取時就能夠簡化命令

        git push origin master

        從現在起,只要本地做了提交,就能夠通過此命令同步到遠程倉庫

        小結

          1. 要關聯1個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;
          2. 關聯后,使用命令git push -u origin master第1次推送master分支的所有內容
          3. 爾后,每次本地提交后,只要有必要,就能夠使用命令git push origin master推送最新修改;
      2. 從遠程庫克隆

    git clone

    克隆遠程庫到本地     要有需要克隆的遠程庫的地址如:git@github.com:Jiayupeng/gitskills.git,在github倉庫頁面能找到,ssh支持的原生git協議速度最快

    1. 分支管理
      1. 創建與合并分支

    git checkout -b dev

    創建dev分支,然后切換到dev分支,git checkout 命令加上-b參數表示創建并切換,相當于以下兩條命令:

    git branch dev

    創建dev分支

    git checkout dev

    切換到dev分支

    git branch

    查看當前分支

    git merge

    用于合并指定分支到當前分支, git merge dev

    Fast-forward

    1種合并模式,快速合并,只是改變指針的位置而已

    小結:

    git鼓勵大量使用分支

    查看分支:git branch

    創建分支:git branch <name>

    切換分支:git checkout <name>

    創建+切換分支:git checkout -b <name>

    合并某分支到當前分支:git merge <name>

    刪除分支:git branch -d <name>

    1. 合并沖突及解決

    git log --graph

    可以看到分支合并圖

    $ git log --graph --pretty=oneline --abbrev-commit

    上面那個命令的擴大,多了幾個命令

    手動解決沖突

    如果兩個分支都對同1個文件進行了修改,合并的時候會出現沖突,這時候候需要手動解決沖突

    1. 分支管理策略

    --no-ff

    git merge 的禁用Fast forward模式,具體命令:

    git merge --no-ff -m"merge with no-ff" dev

    如果要強迫禁用Fast forward模式,Git就會在merge時生成1個新的commit,這樣,從分支歷史上就能夠看出分支信息

    開發中分支策略的幾個原則

      1. 首先,master分支應當是非常穩定的,也就是僅用來發布新版本,平時不能在上面干活;

     

      1. 那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合并到master上,在master分支發布1.0版本

     

      1. 你和你的小火伴們每一個人都在dev分支上干活,每一個人都有自己的分支,時不時地往dev分支上合并就能夠了

    小結

      1. Git分支10分強大,在團隊開發中應當充分利用。
      2. 合并分支時,加上--no-ff參數就能夠用普通模式合并,合并后的歷史有分支,能看出來曾做過合并,而fast forward合并就看不出來曾做過合并。
    1. bug分支

    git stash

    當需要修復1個bug,而dev分支的內容還沒有提交(還不能提交,功能未完成),這個命令可以把當前工作現場“蘊藏”起來,等以后恢復現場后繼續工作

    git stash list

    存儲的stash,要恢復原來的工作現場,有兩種方法:

    git stash apply

    恢復stash,但是還需要用git stash drop來刪除

    git stash drop

    當用git stash apply恢復stash后,需要用這個命令來刪除這個stash

    git stash pop

    恢復stash的同時,把stash的內容也刪掉

    git stash apply stash@{0}

    可以屢次stash,恢復的時候,先用git stash list查看,然后恢復指定的stash

    小結:

    修復bug時,我們會通過創建新的bug分支進行修復,然后合并,最后刪除;

     

    當手頭工作沒有完成時,先把工作現場git stash1下,然后去修復bug,修復后,再git stash pop,回到工作現場。

    1. Feature分支

    git branch -D <branch name>

    如果要拋棄1個沒有合并的分支,用這個命令,強迫刪除1個分支

    1. 多人協作

    git remote

    當你從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來了,并且,遠程倉庫的默許名稱是origin。

    此命令,查看遠程庫的信息。

    git remote -v

    顯示更詳細的信息,顯示了可以抓取和推送origin地址

    git push origin master

    推送分支,就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上

    git push origin dev

    要推送本地其他分支到遠程,就把后面的本地分支名字改成當前要推送的分支名便可

    哪些分支需要推送?

    masterdev需要,不過bug分支只用于本地修復bug,沒推送必要,feature分支是不是推到遠程,取決于你是不是和你的小火伴合作在上面開發。

    git checkout -b dev origin/dev

    當從遠程clone下來后,默許只有本地的master分支,如果要在dev分支上做修改,需要使用這個命令,創建遠程的origindev分支到本地

    git pull

    如果其他人對一樣的文件做了修改,而自己一樣往遠程push,則會產生沖突,解決方案是先用git pull 把最新的提交從origin/dev抓下來,然后,在本地合并,解決沖突,在推送

    如果pull失敗,根據git的提示,使用下面的命令:

    git branch --set-upstream-to=origin/<branch> dev

    設置devorigin/dev的鏈接,連接后,再次pull就能夠成功了

    git commit -m

    pull成功但是合并有沖突,以后手動解決沖突,再次commit,然后再推送到遠程origin

    多人協作的模式通常是這樣:

      1. 首先,可以試圖用git push origin branch-name推送自己的修改;
      2. 如果推送失敗,則由于遠程分支比你的本地更新,需要先用git pull試圖合并;
      3. 如果合并有沖突,則解決沖突,并在本地提交;
      4. 沒有沖突或解決掉沖突后,再用git push origin branch-name推送就可以成功!

    會出現的問題及解決

    如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream branch-name origin/branch-name。

    小結

      1. 查看遠程庫信息,使用git remote -v;
      2. 本地新建的分支如果不推送到遠程,對其他人就是不可見的;
      3. 從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠程的新提交;
      4. 在本地創建和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好1致;
      5. 建立本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;
      6. 從遠程抓取分支,使用git pull,如果有沖突,要先處理沖突。
    1. git標簽
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩欧美一区二区三区在线观看 | 狠狠2020| 精品国产福利 | japanesefree日本护士 | 中文字幕在线免费视频 | 欧美精品 日韩 | 亚洲高清国产一线久久 | 自拍偷拍亚洲 | 国产二区三区毛片 | 国产五区 | 日本欧美一区二区三区乱码 | 精品国产91乱码一区二区三区 | 久久久久国产精品免费免费不卡 | 夜趣第一宅男福社区国产 | xxxx毛片| 国产一级做性视频 | 国产乱码精品一区二区三区卡 | 久久精品高清 | 在线观看视频中文字幕 | 欧美亚洲国产色综合 | 免费jizz在线播放视频高清版 | 日本一级淫片免费放 | 伊人久爱| 我想看一级毛片免费的 | a久久久久一级毛片护士免费 | 亚洲第99页 | 亚洲日本韩国在线 | 高清二区 | 老司机亚洲精品影院在线 | 国产日韩亚洲 | 久久精品精品 | 欧美精品一区二区久久 | 欧美日本一道道一区二区三 | 四虎永久免费网站入口2020 | 91精品国产综合久久欧美 | 老司机成人在线观看 | 久久精品视频7 | 亚洲天堂精品视频 | 波多野结衣久久国产精品 | 真实国产精品视频国产网 | 黄色在线网站视频 |