工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫政恍。
mkdir learnGit //創(chuàng)建目錄
cd learnGit//切換到learnGit目錄
pwd //打印路徑地址
git init //初始化
git add readme.txt //添加文件
git commit -m “wrote a readme file”//提交修改
rm <fileName>//移除文件
git status//命令可以讓我們時刻掌握倉庫當(dāng)前的狀態(tài)
git diff //查看更新內(nèi)容
pod update 庫名--verbose --no-repo-update//更新指定付
//版本回退
git log //查看提交的日志記錄
git reset --soft 狀態(tài)代碼 恢復(fù)狀態(tài)
git log --pretty=oneline //如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù):
git log --stat 查看提交文件記錄
git reset —hard HEAD//退回上個版本定踱,上上一個版本就是HEAD^,往上100個版本寫HEAD~100
git reset --hard 3628164//回到指定版本
git reflog //查看命令歷史
//撤銷修改
git checkout -- fileName //可以丟棄工作區(qū)的修改,無—就變成了‘切換到另一個分支’的命令
git reset HEAD file //當(dāng)add后未commit恃鞋,想丟失時
//本地上傳遠(yuǎn)程倉庫
創(chuàng)建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
git remote add origin git@github.com:yourName/learngit.git//與本地倉庫進(jìn)行關(guān)聯(lián)
git push -u origin master //本地內(nèi)容推送到遠(yuǎn)程庫,第一次推送加上-u參數(shù)
//從遠(yuǎn)程庫克隆到本地
git clone https://github.com/wangerjunn/GitSkills.git
git clone git@github.com:michaelliao/gitskills.git //從遠(yuǎn)程倉庫克隆內(nèi)容
//GitHub給出的地址不止一個崖媚,還可以用https://github.com/michaelliao/gitskills.git這樣的地址。實(shí)際上恤浪,Git支持多種協(xié)議畅哑,默認(rèn)的git://使用ssh,但也可以使用https等其他協(xié)議水由。使用https除了速度慢以外荠呐,還有個最大的麻煩是每次推送都必須輸入口令,但是在某些只開放http端口的公司內(nèi)部就無法使用ssh協(xié)議而只能用https砂客。
git pull 從服務(wù)端請求最新代碼
git push 將代碼推送到遠(yuǎn)程:
//分支管理
git checkout -b dev //創(chuàng)建+切換分支
相當(dāng)于一下兩條命令:
git branch dev //創(chuàng)建分支
git checkout dev //切換分支
git branch //命令會列出所有分支
git merge <name> //合并某分支到當(dāng)前分支
git branch -d <name> //刪除分支
vi readme.txt //編輯內(nèi)容
git merge --no-ff -m "merge with no-ff" dev //--no-ff表示禁用Fast forward
//bug 分支
git stash //隱藏當(dāng)前工作現(xiàn)場
git stash list //查看隱藏的工作現(xiàn)場列表
使用指令“git stash apply stash@{id}”泥张,恢復(fù)指定id的stash內(nèi)容,同時不會刪除恢復(fù)的緩存條目鞠值。
一是用git stash apply恢復(fù)媚创,但是恢復(fù)后,stash內(nèi)容并不刪除彤恶,你需要用git stash drop來刪除筝野;
另一種方式是用git stash pop晌姚,恢復(fù)的同時把stash內(nèi)容也刪了:
//多人協(xié)作
- 查看遠(yuǎn)程庫信息,使用git remote -v歇竟;
- 本地新建的分支如果不推送到遠(yuǎn)程挥唠,對其他人就是不可見的;
- 從本地推送分支焕议,使用git push origin branch-name宝磨,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交盅安;
- 在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支唤锉,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致别瞭;
- 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)窿祥,使用git branch --set-upstream branch-name origin/branch-name;
- 從遠(yuǎn)程抓取分支蝙寨,使用git pull晒衩,如果有沖突,要先處理沖突墙歪。
查看歷史分支流程提交信息
git log --graph --pretty=oneline --abbrev-commit
//標(biāo)簽管理
git tag //查看所有標(biāo)簽
git tag <tagName> //打標(biāo)簽
git tag <tagName> commitId //根據(jù)對象的commitId打標(biāo)簽
git show <tagName> //查看標(biāo)簽信息
git tag -a <tagName> -m “備注” commitId //創(chuàng)建帶有說明的標(biāo)簽听系,用-a指定標(biāo)簽名,-m指定說明文字:
git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽虹菲;
- 命令git push origin <tagname>可以推送一個本地標(biāo)簽靠胜;
- 命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽;
- 命令git tag -d <tagname>可以刪除一個本地標(biāo)簽毕源;
- 命令git push origin :refs/tags/<tagname>可以刪除一個遠(yuǎn)程標(biāo)簽浪漠。
//自定義git
git config - - global color.ui true //讓git顯示顏色
git config - - global alias.st status //配置別名,簡寫
//搭建Git服務(wù)器
1.安裝git
sudo apt-get install git
2.創(chuàng)建git用戶霎褐,用來運(yùn)行g(shù)it服務(wù)
sudo adduser git
3.創(chuàng)建證書登陸
收集所有需要登錄的用戶的公鑰郑藏,就是他們自己的id_rsa.pub文件,把所有公鑰導(dǎo)入到/home/git/.ssh/authorized_keys文件里瘩欺,一行一個。
4.初始化git倉庫
先選定一個目錄作為Git倉庫拌牲,假定 /srv/sample.git,在/srv目錄下輸入命令:
sudo git init - - bare sample.git
Git就會創(chuàng)建一個裸倉庫俱饿,裸倉庫沒有工作區(qū),因?yàn)榉?wù)器上的Git倉庫純粹是為了共享塌忽,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū)拍埠,并且服務(wù)器上的Git倉庫通常都以.git結(jié)尾。然后土居,把owner改為git:
$ sudo chown -R git:git sample.git
5.禁用shell登錄
出于安全考慮枣购,第二步創(chuàng)建的git用戶不允許登錄shell嬉探,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣棉圈,git用戶可以正常通過ssh使用git涩堤,但無法登錄shell,因?yàn)槲覀優(yōu)間it用戶指定的git-shell每次一登錄就自動退出分瘾。
6.克隆遠(yuǎn)程倉庫
git clone git@server:/srv/sample.git
原文鏈接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000