1. 全局操做
git --version //git 機器上是否存在
git init --bare project.git //服務端:初始化一個新的倉庫
chown -R zhangsan:zhangsan project.git/ //修改倉庫的權限
2. 添加、提交修改、對比、重命名
添加/提交:
git add <file> //添加單個文件
git add --all //添加全部,適合項目初始化或批量提交的時候
git add . //進入某個文件夾根目錄,表示添加此目錄下面全部變動的文件
git commit -m "操做說明" //提交
對比:
重命名:
git mv a.php b.php //重命名
git status -s //文件關聯狀態
git commit -a -m "a.php文件修改成b.php" //-a修改的所有提交
git push origin master //推到遠程
3. 日誌查看
git log //查看全部日誌
git log -2 //查看最近提交的2行
git log --pretty=oneline //以行的形式顯示
git log --pretty=oneline --abbrev-commit //行短標識的顯示形式
git log --graph --pretty=oneline --abbrev-commit //查看分支合併圖,並以行短標識的顯示形式
3. 查看歷史命令
git reflog
4. 回滾版本
git reset --hard commit_id
git reset --hard e9a838d #返回到某個節點,不保留修改。
git reset --soft e9a838d #返回到某個節點。保留修改
回滾到上N個版本的快捷方式:
git reset --hard HEAD^ //上1個版本
git reset --hard HEAD^^ //上2個版本
git reset --hard HEAD^^^ //上3個版本
固然若是要回退到上100個版本不可能100個^,能夠:
git reset --hard HEAD~100
5.撤銷修改,恢復刪除,獲取指定commit_id信息
工做區:
git checkout -- <file>
git checkout -- . //恢復在當前目錄下的全部修改
暫存區:
第1步:git reset --hard <file>
第2步:按工做區的處理方式處理
已經提交版本庫:
第1步:git reset --hard commit_id
第2步:按回退的流程處理
推送到遠程庫:
恭喜你,無藥可救
獲取指定commit_id文件信息:
git checkout commit_id <file>
與git clean 混合使用:
git checkout -- . && git clean -xdf
6-1:清除
git clean -df #返回到某個節點
git clean 參數 -n 顯示 將要 刪除的 文件 和 目錄 -f 刪除 文件 -df 刪除 文件 和 目錄
6-2.刪除文件
git rm <file>
git commit -m "操做說明"
7.分支操做
查看分支:git branch
建立分支:git branch <name>
分支推送到遠程:git push origin <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
強制刪除一個沒有合併過的分支:git branch -D <name> tips:慎用
刪除遠程分支:git push origin --delete <name>
7-1.重命名遠程分支
在git中重命名遠程分支,其實就是先刪除遠程分支,而後重命名本地分支,再從新提交一個遠程分支。
查看遠程分支:git branch -av
刪除遠程分支:git push origin --delete <oldname>
重命名本地分支:git branch -m <oldname> <newname>
推送本地分支:git push origin <newname>
8.分支合併保留合併記錄
git merge --no-ff -m "merge with on-ff" dev
tips:合併分支時,加上--no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併;而fast forward合併就看不出來曾經作過合併,默認不加--no-ff是按fast forward的合併方式。
9.分支臨時存儲
保存:
git stash //備份當前的工做區的內容,從最近的一次提交中讀取相關內容,讓工做區保證和上次提交的內容一致。同時,將當前的工做區內容保存到Git棧中。不帶備註。
git stash save "臨時修改1001bug,暫存" //帶備註
git stash -a save "臨時修改1001bug,暫存" // -a選項會把項目裏面新加入的代碼文件同時放到暫存區
查看:
git stash list //顯示Git棧內的全部備份,能夠利用這個列表來決定從那個地方恢復
恢復:
git stash apply [--index][<stash@{id}>] //恢復後,stash內容並不刪除,你須要用git stash drop來刪除
git stash pop [--index][<stash@{id}>] //恢復最新(指定stash)並刪除stash
刪除:
git stash drop [<stash@{id}>] //刪除某一個進度,默認刪除最新進度
建立分支
git stash branch <branchname> <stash@{id}> //基於暫存區建立分支
清空:
git stash clear //清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。
參數解釋:
--index 參數:不只恢復工做區,還恢復暫存區 <stash@{id}> 指定恢復某一個具體進度。若是沒有這個參數,默認恢復最新進度
如下命令恢復編號爲0的進度的工做區和暫存區
git stash pop -- index statsh@{0}
10.標籤(tag)管理
列出全部tag:
git tag
詳情查看:
git show <tagname> //查看指定tag包信息
git show v1.0
建立:
git tag <tagname> //新建一個標籤,默認爲HEAD
git tag v1.0
git tag <tagname> commit_id //指定一個commit id
git tag v1.0 b1b76f
git tag -a <tagname> -m "描述tag的說明" //帶有備註tag的信息
git tag -a v1.0 -m "供應鏈1.0開發完成,上線" b1b76f
git tag -s <tagname> -m "描述tag的說明" //用私鑰簽名一個標籤,PGP簽名標籤
git tag -s <tagname> -m "供應鏈1.0開發完成,上線" b1b76f
刪除:
未推送到遠程:
git tag -d <tagname> //刪除指定tag包
git tag -d v1.0
已推送到遠程:
第1步:git tag -d v1.0 //刪除本地
第2步:git push origin :refs/tags/v1.0 //刪除遠程tag
推送:
git push <主機名> <tagname> //推送指定tag
git push origin v1.0
git push <主機名> --tags //一次性推送所有還沒有推送到遠程的本地標籤
git push origin --tags
參數解釋:
origin:遠程主機名
11.忽略特殊不用提交的文件
第1步:編寫.gitignore文件
第2步:把你須要過濾的文件直接寫在.gitignore文件中。
12.配置別名
方便管理和使用命令,如git st就表示git status這是否是很爽
git config --global alias.unstage 'reset HEAD' //撤銷修改
git config --global alias.last 'log -l' //顯示最後1次提交
配置文件存放目錄:
cat .git/config
刪除別名:
直接刪除配置文件.git/config alias節點,指定別名的那一行,保存就行
tips:當前用戶的Git配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中.
13.git服務器管理
14. 刪除不存在對應遠程分支的本地分支
查看遠程分支狀態:git remote show origin
本地版本庫中去除遠程刪除的分支:git remote prune origin
15. 打包指定commit修改的代碼
git archive -o update.zip 待導出的ID(a3a12c4) $(git diff --name-only 待導出的上一個提交ID(3ba0909))
例:git archive -o update.zip a3a12c4 $(git diff --name-only 3ba0909)
Tips: 這個其實就是比較版本以前差別,而後導出不同的。