廖雪峯老師git教程筆記

1. 建立版本庫 java

  命令:git initgit

2. 提交文件      github

  命令: git add <fileName>  sql

      git add .       //增長全部文件ruby

                   git commit -m "提交備註信息"   bash

                   git commit <fileName> -m"只提交file1" 提交指定文件ssh

3. 查看提交記錄日誌 url

      命令:git logspa

                   git log --pretty=oneline    3d

$ git log --pretty=oneline
aeeebd9b1c514fe6d922284aa9e20893c33d8502 (HEAD -> master) 新增第三行
7decb271aa65f74bbe3ff59ef9ec7be02cda2fe1 新增一行
d2a4bf09538d3991cc879f07864ceaa59cc78af7 add file1.txt

注:前面爲git版本號
$ git log --oneline 也能夠顯示日誌,只不過前面版本id不是全id
如 $ git log --oneline d2a4bf0 (HEAD -> master) add file1.txt

  若是提交的歷史紀錄很長,回車會逐步顯示,輸入q能夠退出

4. 還原到上個版本 

  git reset --hard HEAD^ 後面^表明第幾個版本 ,^^表明還原到pre 2版本

       git reset --hard HEAD~100  //還原到前100個版本  

5. 回退到指定版本

  git reset --hard commit_id(能夠不寫全)  如 git reset --hard d2a4bf

6.查看全部操做命令 

  git reflog

7. 撤銷修改  git checkout -- <fileName>

                     只是修改了工做區的readme.txt還未add,能夠直接git checkout  -- readme.txt 文件會撤銷修改

                     已經add後使用git reset HEAD readme.txt 而後git checkout -- readme.txt 文件會撤銷修改

                   

  只要沒有提交 均可以使用git checkout -- <fileName>還原,已經commit的須要使用git resest --hard HEAD^版本回退 

8. 文件刪除   

       刪除命令以下:

       rm <fileName>  相似直接在文件夾中刪除

       git rm <fileName>

       git commit -m "message"

  誤刪時只要沒有提交 均可以使用git checkout -- <fileName>還原,已經commit的須要使用git resest --hard HEAD^版本回退, git checkout實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」。

   

   1).批量刪除多個文件可使用上述方法提交,但過於繁瑣,首先須要清楚下面命令意思:   

          git add . :他會監控工做區的狀態樹,使用它會把工做時的全部變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。 

          git add -u :他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區。add -u 不會提交新文件(untracked file)。(git add --update的縮寫) 

          git add -A :是上面兩個功能的合集(git add --all的縮寫) 

        故一次性刪除多個文件,可使用命令:

        git add -A

        git commit -m 'msg'

  2).刪除文件夾:

       git rm -rf <文件夾名>

      git add -A

 9.遠程倉庫  

  第1步:建立SSH Key 在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"你須要把郵件地址換成你本身的郵件地址,而後一路回車,使用默認值便可,若是一切順利的話,能夠在用戶主目錄裏找到.ssh目錄,裏面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。

       第2步:登陸github -->setting-->ssh keys   粘貼id_rsa.pub內容

注:GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送

10.添加遠程庫

     在github上新建repository,用來同步關聯本地repository,如在github建立learngit庫使用下面命令關聯本地庫

     命令:$ git remote add origin git@github.com:你的git帳號/learngit.git

     而後推送本地庫內容到遠程庫,命令:$ git push -u origin master 【把本地庫的內容推送到遠程,用git push命令,其實是把當前分支master推送到遠程,因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。】

     第一次推送後,每次本地庫提交後,均可以使用 $ git push origin master命令同步推送到遠程庫。

     刪除與遠程庫的關聯 git remote rm origin

11.從遠程庫克隆

    GitHub遠程庫詳情頁複製remote url(遠程庫鏈接)而後使用命令:$ git clone git@github.com:git帳號/庫名稱.git     

    $ git clone git@github.com:seanzhang1988/clonefromgithub.git  

    或 

    $ git clone  https://github.com/seanzhang1988/CloneFromGitHub.git

    

12. 分支

    git 默認一個分支master,能夠建立分支分支提交不影響master,分支提交完畢後能夠合併master並能夠刪除新建立的分支

      建立分支:git branch dev

      切換分支:git checkout dev

      上述兩個能夠合併 git checkout -b dev

      查看當前分支:git branch 

      合併分支:git merge dev  (dev分支工做結束後master合併)

      刪除分支:git branch -d dev

      合併時保存分支信息  $ git merge --no-ff -m "merge with no-ff" dev

13.bug分支           

  出現bug後,能夠新建臨時分支處理bug,處理完畢後合併並刪除臨時分支。可是當你正在dev分支處理別的任務且還未完成,此時讓你來處理bug又該如何操做?git提供stash功能git stash,即暫時存儲dev分支,而後切換master分支建立bug分支,bug分支修改完畢提交後合併並刪除bug分支,再繼續dev分支的工做,此時使用命令:$ git stash pop 恢復dev正在進行的工做提交後合併會顯示bug分支修改的內容和dev分支內容。

14.多人協做

  查看遠程庫信息 git remote 或者 git remote -v

       推送本地分支到遠程  git push origin dev

       場景:A建立dev分支修改後提交到遠程,若是B也想在dev上修改東西必須建立遠程origindev分支到本地,命令:git checkout -b dev origin/dev,有可能A的最新提交和B有衝突,B須使用git pull拉取最新的提交,而後在本地合併解決衝突後推送。拉取失敗緣由是沒有指定本地dev分支與遠程origin/dev分支的連接(specify which branch you want to merge with),命令:git branch --set-upstream-to=origin/dev dev,而後再git pull. 拉取成功後合併有衝突須手動解決,而後在提交push.

15.標籤管理

  首先切換到須要打標籤的分支而後git tag <標籤名>,標籤都是打在commit上的,使用命令git log --pretty=oneline --abbrev-commit查找commit id,而後 git tag <標籤名> commit id打標籤,如:git tag v0.9 76afcc2,使用命令 git show <tagName> 查看標籤信息。命令git tag -a<tagName> -m "標籤描述",能夠給標籤添加解釋信息。

刪除標籤:git tag -d v0.1

推送標籤到遠程:git push origin <tagName> 或一次性推送所有標籤 git push origin --tags

刪除已推送遠程的標籤:git tag -d v0.1(先刪除本地),git push origin :refs/tag/v0.1(再刪遠程)。

16.使用GitHub

  在GitHub上點擊fork就能夠在本身帳號下自動建立相應倉庫,這樣咱們能夠修改推送本身的倉庫,若是直接克隆別人的庫到本地,咱們沒有權限推送修改,可是能夠在github上發起pull request請求。

17.使用Gitee 碼雲

   1.上傳本身的SSH公鑰,用戶主目錄 .ssh/id_rsa.pub 文件內容粘貼

   2. gitee上新建項目hk001

        3. 新建文件夾hk001右鍵git bash,使用命令git init新建本地倉庫,項目代碼粘貼到hk001

        4. 本地庫代碼提交

        5. 關聯遠程庫,git remote add origin git@gitee.com:gitee帳號/hk001.git

        6. 推送遠程庫,git push  -u origin master

        注意:若是推送失敗須要先拉取遠程庫git pull,拉取若是報錯:fatal:refusing to merge unrelated histories可使用命令:git pull origin master --allow-unrelated-histories,而後再git pull再推送。

       推送處理過程:

                             

           git支持關聯多個遠程庫,本地庫既能夠關聯github也能夠關聯gitee. 注意遠程庫名稱不是origin

   step1.關聯github遠程庫:git remote add github git@github.com:帳號/hk001.git

           step2.關聯gitee遠程庫:  git remote add gitee   git@gitee.com:帳號/hk001.git

           step3. 推送遠程庫:         git push github master  git push gitee master

 18.忽略特殊文件

    項目中有些文件不須要推送到遠程庫,能夠在git本地庫根目錄建立 .gitignore文件,而後把要忽略的文件名寫進去,git會自動忽略這些文件。https://github.com/github/gitignore 提供了各類配置文件,裏面有visualstudio.gitignore把該文件放入項目根目錄。 而後推送到GitHub.  

     命令:git add -f <fileName> 能夠強制添加被 .gitignore忽略的文件

    

    19.實戰修改文件後推送遠程

       1.查看狀態

  $ git status

  On branch master
  Your branch is up to date with 'origin/master'.

  nothing to commit, working tree clean


  2.查看當前分支
  $ git branch
  * master

  3.建立工做分支
  $ git checkout -b Feat_sean
  Switched to a new branch 'Feat_sean'

  4.修改文件後加入暫存區
  $ git add README.md

  5.提交文件
  $ git commit -m "modified README.md"
  [Feat_sean be12fa6] modified README.md
  1 file changed, 1 insertion(+), 6 deletions(-)

  6.推送到遠程
  $ git push -u origin Feat_sean
  Counting objects: 3, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (3/3), 301 bytes | 301.00 KiB/s, done.
  Total 3 (delta 1), reused 0 (delta 0)
  remote: Powered by Gitee.com
  To https://gitee.com/moce-technology/hk001
  * [new branch] Feat_sean -> Feat_sean
  Branch 'Feat_sean' set up to track remote branch 'Feat_sean' from 'origin'.

  7.查看狀態
  $ git status
  On branch Feat_sean
  Your branch is up to date with 'origin/Feat_sean'.

  nothing to commit, working tree clean

  8.切換主分支
  $ git checkout master
  Switched to branch 'master'
  Your branch is up to date with 'origin/master'.

  9.合併分支
  $ git merge Feat_sean
  Updating df5a59b..be12fa6
  Fast-forward
  README.md | 7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)

  10.刪除工做分支

  $ git branch -d Feat_sean  Deleted branch Feat_sean (was be12fa6).

相關文章
相關標籤/搜索