git入門

一、基礎
1.初始化git,會在home下生成.gitconfig文件。
git config --global user.name xxx
git config --global user.email [email protected]

2.不使用--global參數時在某項目頂層目錄下生成私有配置config,報告單獨的名字和郵箱

             xxx項目目錄/.git/config

3.需要一個項目的倉庫,有兩種方式得到:
git clone
git init
1) 如何clone一個倉庫:倉庫可以使用http(s)://協議,ssh://協議,git://協議
git clone [email protected]:linker99/myfirst_test.git
然後當前目錄下就會生成項目目錄myfirst_test
2)進入任何一個已經存在的文件夾執行:git init ,就會把當前目錄變爲git倉庫。並且在目錄下生成.git文件夾

  1. git add 添加新創建或者修改過得文件到本地倉庫緩衝區(index)
    git add new.txt
    git add *
    5.git commit 從緩存區或者untracked狀態提交到本地倉庫
    git commit -m "添加一個測試文件
    git commit -a -m "" 這個命令可以直接跳過git add 把已經修改的文件一塊提交,但是新建文件不行,智能使用git add 然後再用git commit

  2. git push提交本地到遠端倉庫

  3. git status 查看git倉庫狀態
    對於untracked狀態的文件,可以執行git add
  4. git diff --cached 可以查看add後緩存區裏面的那些文件被修改了。
    git diff 不加--cached查看已經修改但是還沒有add到緩衝區裏的文件,但是新文件不顯示

        執行了git commit後diff就看不到了
    
        ****比較兩個分支的差異
        git diff master test
        或者git branch master
                git diff test
        還可以只比較某個文件
                git diff test file1
        統計不同分支的改動,多少行               
                        git diff test --stat
  5. git rm與git rm --cached
    當我們需要刪除暫存區或分支上的文件, 同時工作區也不需要這個文件了, 可以使用
    git rm file_path
    git commit -m 'delete somefile'
    git push
    當我們需要刪除暫存區或分支上的文件, 但本地又需要使用, 只是不希望這個文件被版本控制, 可以使用
    git rm --cached file_path
    git commit -m 'delete remote somefile'
    git push
  6. 當我門使用git init在本地創建一個倉庫,而沒有遠程倉庫時git remote add 命令來推送到遠程倉庫
    git remote add origin [email protected]:linker99/myfirst_test.git
    其中origin是本地主機名,可以自定義。
  7. 當我們使用git clone獲取到倉庫,而不是git init,那麼使用git push origin master 推送到遠程,第一次使用加上-u origin,以後就可以直接git push
    git push -u origin master
    12 . git branch 查看當前分支
    git branch xxx創建一個本地分支
    git checkout xxxx 切換當前分支
  8. 當我們在 新分支xxx和主分支master都開發了一些代碼,驗證ok,需要把xxx分支和人主線時。
    先切換到主分支:git checkout master
    再合併:git merge -m "註釋" xxx分支
    此時可能會有衝突,可以使用git status查看,或者分別vi查看,或者
    git diff查看。
    然後:使用vim手動刪除衝突內容
    git add xxx衝突文件
    git commit -m ""
    就可以完成衝入的一些解決操作。
  9. 但我們需要刪除已經被合併的分支時: git branch -d xxxx
    git branch -D xxx 強制刪除
  10. 恢復合併的內容,或者上次commit的內容
    git reset --hard HEAD^
  11. 如何合併的時候兩個分支的內容相同,只是註釋不同,git commit不產生一個新的提交,只是將當前分支指向合並進來的分支。

  12. git 日誌,顯示按提交時間的逆序,使用--reverse可以翻轉顯示
    git log
    顯示fs目錄下makefile文件從2.5開始的日誌
    git log v2.5.. Makefile fs/
    打印詳細提交日誌信息
    git log --stat
    單行顯示如下,還有medium,full,short,email,raw等格式,實在不行也可以自定義
    git log --pretty=online
    增加圖形功能
    git log --graph --pretty=online
    按圖形拓撲顯示
    git log --pretty=format:'%h :%s' --topo-order --graph

二、分佈式入門

  1. 首先clone一個分支,假如兩個人的倉庫在一個電腦上
    git clone /home/shiyanlou/gitproject myproject
    然後第二個人在myproject裏面開發。提交
    接下來,第一個人想合併第二個人的代碼,進入第一個人倉庫,
    git pull /tmp/myproject master 就可以了,有可能要手動解決衝突
    1. git remote 管理遠程倉庫
      給遠程分支起個別名xxxx1
      git remote add xxxx1 xxx遠程地址
      git remote rm xxxx1刪除別名
      git fetch xxxx1只拉去不與本地合併,相當於完成了git pull 的前半步,
      可以使用
      git log -p master..xxxx1/master 查看遠程修改
      其中,xxxx1是遠程地址,第二個master是遠程分支名
      接下來,就可以merge
      git merge myrepo/master
  1. 第一次git clone,下一次就可以直接使用git pull來更新代碼,因爲配置文件已經記錄了遠程地址,可以使用下面的命令查看
    git config --get remore.origin.url

  2. 不同主機,或者不同用戶clone,要求輸入遠程用戶密碼
    git clone ip:/path/倉庫/ test
    git clone localhost:/home/shiyanlou/gitproject test
    5.如果是兩個開發的化,並且使用不同主機,可以使用分別拉去合併對方的代碼方式,通過ssh協議拉取
    git clone ssh://ip/倉庫地址
    6.如果是三個人以上的話,就需要一個公共倉庫,有個人要負責公共倉庫維護,別人都可以通過ssh協議或者http協議把代碼push上去
    git push ssh://ip/倉庫地址, master:master
    或者
    git push ssh://ip/倉庫地址, master

    如果公共倉庫最近有更新,可以push失敗,所以需要先進行git pull再push

三、標籤

  1. 可以改一個commit好創建一個標籤,輕量級標籤
    git tag stale-1 commit號
    然後用git tag查看所有標籤

    2.如果一個標籤加上註釋就是標籤對象,不是輕量級標籤
    git tag stale-1 commit號 -m "註釋"
    如果使用-a 或者-F 則會啓動vim來添加註釋內容

    1. 帶簽名的標籤
      首先你需要在.git/config或~/.gitconfig裏面配置好pgpkey
      git config (--global) user.signingkey <gpg-key-id>
      然後就可以在打標是使用-s簽名
      git tag -s stale-1 commit號 -m "註釋"

      如果key沒有在配置文件中,則可以臨時使用

      git tag -u <gpg-key-id> stale-1 commit號 -m "註釋"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章