1. 程式人生 > >git編譯安裝與常用命令

git編譯安裝與常用命令

git編譯安裝與常用命令
=========================================
一:編譯安裝與設定

1.1:簡介
    github官網地址(下載原始碼包):https://github.com/git/git.git
    git 在 windows mac等系統下載:https://git-scm.com/downloads
    
1.2:依賴關係(解決常見的依賴關係)
    ~]# yum -y install gcc openssl openssl-devel curl curl-devel unzip perl perl-devel expat expat-devel zlib zlib-devel asciidoc xmlto gettext-devel openssh-clients

    ~]# yum -y install openssh-clients
    # ssh-keygen 出現 -bash: ssh: command not found 的解決辦法


1.3:編譯安裝
    方式一:
        ~]# make prefix=/usr/local/git all doc
        ~]# make prefix=/usr/local/git install  install-doc install-html

    方式二:
        ~]# yum -y install autoconf
        ~]# make configure   或者    autoconf
        # 備註:生成 configure 檔案
        ~]# ./configure --prefix=/usr/local/git 
        ~]# make all doc
        ~]# make install install-doc install-html

    方式三:
    ~]# yum -y install git      # 安裝 git
    ~]# yum -y install git-all.noarch      # 安裝 git 所有的包,非必須


1.4:環境配置
    ~]# echo 'export PATH=/usr/local/git/bin:$PATH' > /etc/profile.d/git.sh
    ~]# . /etc/profile.d/git.sh
    ~]# git --version    # 檢視版本


1.5:man 文件配置
    ~]# vim /etc/man_db.conf
    MANDATORY_MANPATH           /usr/local/git/share/man

    檢視幫助
        格式一:
            ~]# git help init
        格式二:
            ~]# man git-init


1.6:ssh使用者,許可權,伺服器身份認證,初始化倉庫 與 拉取倉庫
    1:新增使用者:
        ~]# useradd git

    2:許可權(使用者組合使用者均為git):
        /home/git/.ssh      許可權為:700
        /home/git/.ssh/authorized_keys  許可權為:600
            ~]# mkdir /home/git/.ssh
            ~]# chmod 700 /home/git/.ssh
            ~]# touch /home/git/.ssh/authorized_keys
            ~]# chmod 600 /home/git/.ssh/authorized_keys
            ~]# chown -R git:git /home/git/.ssh 

        # 注意: id_rsa 許可權為 600     id_rsa.pub  許可權為 644  

    3:伺服器身份認證(authorized_keys):
            把本地的公鑰 id_rsa.pub 裡面的內容加入到 /home/git/.ssh/authorized_keys,一行一個,可以加入多個公鑰,git 操作時不再需要密碼。

    4:初始化倉庫:(結尾為 .git)
            建立空專案
                ~]# cd /home/git     # 進入git家目錄
                ~]# git init --bare useryx.git
                    # 例如 git init --bare 倉庫名.git

            專案已有內容
            ~]# git init 
                # cd 進入專案進行初始化
            ~]# git clone --bare 目錄名 倉庫.git
                # 例如:git clone --bare useryx useryx.git
                # 倉庫外面執行

    5:修改倉庫使用者組為 git
            ~]# chown git:git useryx.git

    6:拉取倉庫
            ~]# git clone [ssh://]使用者名稱@地址:倉庫名.git
                # 例如:git clone 
[email protected]
:useryx.git 或者 家目錄下的一個檔案內如 git clone [email protected]:/home/git/dir/a.git 1.7:禁止ssh使用者登入,可以不用設定。 ~]# vim /etc/passwd # 修改git 使用者登入shell 1:使用linux系統的 /sbin/nologin 不允許登入 git:x:1001:1001::/home/git:/sbin/nologin 2:使用git服務 git-shell 的 /usr/local/git/bin/git-shell,which git-shell 檢視命令位置。 git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell 二:客戶端初始化配置 2.1:客戶端生成公鑰與私鑰 ssh-keygen(切換至需要生成公鑰與私鑰的使用者) ~]# su - git # 切換至git使用者 ~]# ssh-keygen # 使用預設 rsa 演算法,2048 長度 ~]# ssh-keygen -t rsa -b 4096 -C '
[email protected]
' -P '3a/Jd3v1wq6M1lrAO+Qc4bCHb2W3SynSTg3CT1GS' # -t 指定演算法 # -C 新增一個註釋 # -b 指定加密長度,預設是2048,建議為4096 # -P 使用加密密碼串 ~]# openssl rand -base64 30 # 30 為生成字串的長度 # 使用 ssh-keygen 按照提示操作,也可直接回車。 2.2:設定使用者名稱和郵箱 ~}# git config --global user.name "使用者名稱" ~}# git config --global user.email "郵箱@aliyun.com" 2.3:初始化新增資料夾 1:建立新版本庫(正常流程操作) git clone
[email protected]
:useryx.git cd useryx touch README.md git add README.md git commit -m "add README" git push -u origin master 2:已存在的資料夾或 Git 倉庫 cd useryx git init git remote add origin [email protected]:useryx.git git add . git commit -m '初始化' git push -u origin master 2.4:檢視預設配置檔案 ~]# git config --list 或者 git config --l 2.5:不更新檔案( .gitgmore) ~]# find ./ -name .gitignore # 查詢 .gitignore 檔案 ~]# find ./ -name .gitignore -delete # 刪除 .gitignore 檔案 # 不更新的檔案或目錄放於此檔案中 2.6:本地克隆 ~]# git clone file://root/test /tmp/test ~]# git clone test /tmp/test # 本地的 git 專案克隆 三:基礎操作 3.1:新增檔案(add) ~]# git add filename # 新增某個檔案 ~]# git add . 或者 git add -A # 添加當前目錄所有檔案 3.2:刪除檔案(rm) ~]# rm # 刪除檔案但不會刪除索引 ~]# git rm -f filename # 未提交需要 -f 刪除 ~]# git rm filename # 刪除檔案並刪除索引 ~]# git rm --cached file # 刪除索引,改變為未追蹤狀態 ~]# git cat-file -p hash碼 # 檢視檔案內容 3.3:修改檔案(mv) ~]# mv # 索引新增新檔案,原來的索引會保留。提交時會有錯誤 ~]# git mv filename newfilename # 修改檔案同時修改索引 3.4:索引檔案新增到快照(commit) ~]# git commit -m '註釋' ~]# git commit -am '註釋' # 新增檔案並提交註釋 3.5:狀態 ~]# git status 3.6:檔案追蹤 已追蹤的(tracked) ~]# git ls-files 未追蹤的(igored) ~]# git ls-files -o 被忽略的(untracked): 檢視檔案 .gitignore 3.7:提交與拉取 ~]# git pull # 拉取:從遠端獲取最新版本到本地,不會自動merge ~]# git fetch # 拉取:從遠端獲取最新版本到本地,會自動merge ~]# git push origin master # 提交:推送本地到遠端主分支, 3.8:日誌(log) ~]# git log ~]# git log --oneline # 行顯示,短格式 ~]# git log --graph # 樹型圖 ~]# git log --pretty=oneline --abbrev-commit 3.9:檔案比較不同 ~]# git diff filename1 filename2 # 比較檔案 ~]# git diff dev # 比較當前分支與主分支 3.9:撤銷操作(reset) 1:git reset –mixed <commit id> <filename>:此為預設方式,它回退到某個版本,只保留原始碼,回退commit和index資訊 2:git reset –soft <commit id> <filename>:只回退 commit 的資訊,保留 index ,如果還要提交,直接commit 3:git reset –hard <commit id> <filename>:徹底回退到某個版本,本地的原始碼也會變為上一個版本的內容 HEAD:當前分支的最近提交 ORIG_HEAD:合併時,新生成的提交保存於此引用中 HEAD^ 回滾前一次,工作目錄不受影響 ^ 回退到上一次 ~<n> 回到幾次,等於連續的 HEAD^ ~]# git reset --hard ORIG_HEAD # 提交後回退 commit 之前狀態 四:分支 3.1:檢視與新建分支 ~]# git branch --all ~]# git branch --list 3.:2:建立與切換分支 ~]# git branch <branch> # 建立分支(基於當前分支) ~]# git branch <branch> <hsah碼> # 建立分支(基於指定 commit id 分支) ~]# git branch bug/first # 建立父目錄分支(基於當前分支) ~]# git branch bug/first <hsah碼> # 建立父目錄分支(基於指定 commit id 分支) ~]# git checkout <branch> # 切換分支 ~]# git checkout -b <branch> # 建立分支時直接切換 3.3:檢視分支以及相關的提交 ~]# git branch # 列出分支 ~]# git branch --list # 列出分支 ~]# git show-branch <branch> # 顯示branch分支詳細資訊 3.4:刪除分支 ~]# git branch -d <branch> ~]# git branch -D <branch> # 強制刪除分支 ~]# git push origin --delete <branch> # 刪除遠端分支 ~]# git push --delete origin <branch> # 刪除遠端分支 3.5:繫結本地分支到遠端 ~]# git push --set-upstream origin dev # 本地在 dev 分支上,執行此次操作後在 dev 分支只使用 git push 3.6:比較兩個分支差異 ~]# git diff dev # 比較當前分支與 dev 分支的區別 3.5:合併分支 ~]# git merge dev # 合併 dev 分支到當前分支 3.7:恢復到合併之前 ~]# git reset --merge # 撤銷到合併之前 3.8:檢視失敗的合併檔案資訊 ~]# git ls-files --unmerged 1:基礎版本 2:我們的版本 3:他們的版本 ~]# cat filename(衝突的檔案)修改檔案內容 ++<<<<< ============ ++>>>>>>>>>. # 修改完成檔案後 add 再次提交 3.9:重新命名分支 ~]# git branch -m <branch> <newbranch> # 重新命名本地分支 3.10:推送分支 ~]# git push origin <branch> # 推送本地分支到遠端 五:打標籤 5.1:tag介紹 git 有 commit,commit號是一串字元不便於查詢,而 tag 的作用是更加清晰明瞭。 把完整的專案提交到 tag 標籤,就可以實現版本的持續釋出。 5.2:建立標籤 ~]# git tag <name> 5.3:檢視標籤 ~]# git tag ~]# git show <tag name> # 可以檢視到commit id 5.4:對 commit id 打標籤 ~]# git tag <tag name> <commit id> ~]# git tag -a <tag name> -m "註釋資訊" <commit id> 5.5:刪除標籤 ~]# git tag -d <tagname> # 本地標籤 ~]# git push origin :refs/tags/<tagname> # 遠端標籤 5.6:推送標籤 ~]# git push origin <tagname> 推送指定的 ~]# git push origin --tags # 推送全部 六:常見問題解決辦法 6.1:git status 檢視狀態時中文亂碼 git config --global core.quotepath false 6.2:檔案許可權引起的衝突(檔案顯示被修改)(低版本git一般會出現此問題) git config core.filemode false