個人整理的一個git操作指令速查:
1.git安裝完成後,在指令行輸入:
git config --global user.name "Your Name"
git config --global user.email "[email protected]”
2.建立版本庫:
mkdir codedir
cd codedir
pwd
3.初始化版本庫
git init
git add readme.txt // git add file2.txt file3.txt 添加多個檔案
git comment -m “write logs” // git commit -m "add 3 files” 送出兩個檔案
4.檢視倉庫狀态
git status
5.檢視檔案差異
git diff readme.txt
6.檢視曆史記錄
git log
git log --pretty=oneline
6.回退到上一個版本
git reset --hard HEAD^ // 回退到上一個上一個版本
git reset --hard 3628164 // 回退到指定版本 數字串是版本号的前幾位
7.檢視曆史指令
git reflog
8.檢視工作區和版本庫裡面最新版本的差別
git diff HEAD --readme.txt
9.丢棄工作區的修改
git checkout —readme.txt // git checkout -- file指令中的--很重要,沒有--,就變成了“切換到另一個分支”的指令
10.把暫存區的修改撤銷掉(unstage),重新放回工作區
git reset HEAD readme.txt
git checkout --readme.txt // 丢棄工作區
11.确實要從版本庫中删除該檔案
git rm test.txt
git commit -m "remove test.txt"
git checkout --test.txt // 把誤删的檔案恢複到最新版本
12.遠端倉庫
ssh-keygen -t rsa -C "[email protected]” // 建立SSH Key
13.添加遠端倉庫
git remote add origin [email protected]:michaelliao/learngit.git // 遠端庫的名字就是origin
14.把本地庫的所有内容推送到遠端庫上
git push -u origin master // first push
git push origin master // after first
15.遠端庫克隆
git clone [email protected]:michaelliao/gitskills.git
16.建立dev分支,然後切換到dev分支
git checkout -b dev
17.建立dev分支,然後切換到dev分支
git branch dev
git checkout dev
18.檢視目前分支(本地)
git branch //檢視本地分枝
git branch -r // 檢視遠端分支
19.把dev分支的工作成果合并到master分支上
git checkout master // 切換回master分支
git merge dev // git merge指令用于合并指定分支到目前分支
20.删除dev分支
git branch -d dev
21.當Git無法自動合并分支時,就必須首先解決沖突。解決沖突後,再送出,合并完成
git log --graph // 看到分支合并圖
git log --graph --pretty=oneline --abbrev-commit
22.準備合并dev分支,請注意--no-ff參數,表示禁用Fast forward
git merge --no-ff -m "merge with no-ff” dev
git log --graph --pretty=oneline --abbrev-commit // 合并分支時,加上--no-ff參數就可以用普通模式合并,合并後的曆史有分支,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
23.Git還提供了一個stash功能,可以把目前工作現場“儲藏”起來,等以後恢複現場後繼續工作:
git stash
git stash list //檢視
(1) git stash pop // 恢複的同時把stash内容也删了
(2) git stash apply // 恢複
git stash drop // 删除
24.然後恢複指定的stash,用指令
git stash apply stash@{0}
25.強行删除分支
git branch -D feature-vulcan
26.要檢視遠端庫的資訊,
git remote
git remote -v
27.推送分支
git push origin master //推送主分支
git push origin dev //推送開發分支
注意:
master分支是主分支,是以要時刻與遠端同步;
dev分支是開發分支,團隊所有成員都需要在上面工作,是以也需要與遠端同步;
bug分支隻用于在本地修複bug,就沒必要推到遠端了,除非老闆要看看你每周到底修複了幾個bug;
feature分支是否推到遠端,取決于你是否和你的小夥伴合作在上面開發。
28.抓取分支
多人協作的工作模式通常是這樣:
-
首先,可以試圖用
git push origin branch-name
推送自己的修改;
-
如果推送失敗,則因為遠端分支比你的本地更新,需要先用
git pull
試圖合并;
- 如果合并有沖突,則解決沖突,并在本地送出;
-
沒有沖突或者解決掉沖突後,再用
推送就能成功!
如果git pull提示“no tracking information”,則說明本地分支和遠端分支的連結關系沒有建立,用指令
git branch --set-upstream branch-name origin/branch-name。
這就是多人協作的工作模式,一旦熟悉了,就非常簡單。
-
檢視遠端庫資訊,使用
git remote -v;
- 本地建立的分支如果不推送到遠端,對其他人就是不可見的;
-
從本地推送分支,使用
git push origin branch-name,
如果推送失敗,先用
抓取遠端的新送出;
-
在本地建立和遠端分支對應的分支,使用
git checkout -b branch-name origin/branch-nama
本地和遠端分支的名稱最好一緻;
-
建立本地分支和遠端分支的關聯,使用
git branch --set-upstream branch-name origin/branch-name
-
從遠端抓取分支,使用
如果有沖突,要先處理沖突。
29.打一個新标簽
git tag v1.0
30.檢視所有标簽
git tag
31.指定版本号打标簽
git tag v0.9 6224937
32.檢視标簽資訊
git show v0.9
33.建立帶有說明的标簽,用-a指定标簽名,-m指定說明文字
git tag -a v0.1 -m "version 0.1 released” 3628164
34.可以通過-s用私鑰簽名一個标簽
git tag -s v0.2 -m "signed version 0.2 released” fec145a
35.删除标簽
git tag -d v0.1
36.推送某個标簽到遠端
git push origin v1.0
37.一次性推送全部尚未推送到遠端的本地标簽
git push origin —tags
38.删除遠端标簽就麻煩一點,先從本地删除,然後,從遠端删除
git tag -d v0.9
git push origin :refs/tags/v0.9
39.讓Git顯示顔色,會讓指令輸出看起來更醒目
git config --global color.ui true
40.确實想添加該檔案,可以用-f強制添加到Git
git add -f App.class
git check-ignore -v App.class // 檢視gitignore
忽略某些檔案時,需要編寫.gitignore;
.gitignore檔案本身要放到版本庫裡,并且可以對.gitignore做版本管理!
41.設定指令别名
git config --global alias.st status
git config --global alias.unstage 'reset HEAD’
git config --global alias.last 'log -1’
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”
42.每個倉庫的Git配置檔案都放在.git/config檔案中
cat .git/config # 别名就在[alias]後面,要删除别名,直接把對應的行删掉即可
43.目前使用者的Git配置檔案放在使用者主目錄下的一個隐藏檔案.gitconfig中
cat .gitconfig
44.搭建Git伺服器
(1) sudo apt-get install git #安裝git
(2) sudo adduser git #建立一個git使用者,用來運作git服務
(3) sudo git init --bare sample.git #先標明一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入指令
(4) sudo chown -R git:git sample.git #改owner
(5) 禁用shell登入:
出于安全考慮,第二步建立的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,因為我們為git使用者指定的git-shell每次一登入就自動退出。
(6) 克隆遠端倉庫
git clone git@server:/srv/sample.git