~~~
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 git@192.168.31.73:useryx.git 或者 家目錄下的一個文件內如 git clone git@192.168.31.73:/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 'git@aliyun.com' -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 git@192.168.18.35: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 git@192.168.18.35: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
~~~
- 前端
- 技巧匯總
- 構建 Node + Webpack + React 熱加載開發環境
- React
- Redux
- Webpack
- ES6
- HTML5+CSS3
- Javascript
- JS超簡潔拖動代碼
- jQuery
- 后端
- 技巧匯總
- 代碼中特殊的注釋技術——TODO、FIXME和XXX的用處
- PHP
- Xdebug不解之謎
- PHP時間獲取
- PHP遞歸優化 使用匿名函數進行遞歸
- PHP 發起POST請求
- PHP獲得數組的交集與差集
- PHP遞歸獲取下級數組,可指定ID,一維數組
- PHP 判斷是否為Get/Post/Ajax提交
- PHP實現分流隊列平均顯示信息
- PHP多維數組 指定列排序
- PHP 類Class詳解 筆記記錄
- PHP取整函數詳解
- Node
- Elasticsearch
- 數據庫
- 技巧匯總
- Mysql
- Mysql分區表實現
- Mysql union與union all 查詢
- Mysql 表中表查詢
- Mysql 分組查詢 與 分組條件查詢
- MySQL 添加列,修改列,刪除列
- Mysql優化之:構建海量表,定位慢查詢
- Mysql優化之:表的設計滿足3NF
- Mysql優化常見方法
- Mysql存儲過程詳解
- 運維
- 技巧匯總
- Linux
- Linux Centos系統下 設置代理服務器上網
- Centos7增加開機啟動腳本
- centos 掛載windows共享目錄
- CentOS設置SSH Key登錄
- Linux/CentOS單網卡綁定多個IP
- Windows
- Win10開機啟動項設置全解攻略
- PuTTY連接Linux服務器經常斷線解決方案
- Docker
- Docke啟動文件 docker-compose.yml
- Docker命令簡介(未完)
- Docker閑雜筆記
- Apache
- Nginx
- Nginx配置upstream實現負載均衡
- Nginx負載均衡學習
- IDE
- 技巧匯總
- WebStorm
- PHPStorm
- 協作
- 技巧匯總
- Git
- git 放棄本地修改 強制更新
- git編譯安裝與常用命令
- Svn