git學習心得:(來自廖雪峰的學習教程)
1 git 設置命令:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2 git創建版本庫命令:
$ mkdir learngit
通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init
3 添加步驟:
1 $ git add readme.txt
2 $ git commit -m "wrote a readme file"
可以多次add不同的文件,commit可以同時提交
4 版本回退:
git log 顯示最近到最遠的提交日志
$ git log --pretty=oneline
git中HEAD表示當前版本,上一個版本是HEAD^,上上一個版本是HEAD^^,上一百個版本是HEAD~100
$ git reset --hard HEAD^
$ cat readme.txt //查看文件
$ git reset --hard 3628164 //指定·回到未來的某個版本
$ git reflog //記錄每一次命令
5 工作區:在電腦上能看到的目錄
版本庫:.git文件夾就是版本庫
git add 將文件添加到暫存區;
git commit提交更改,將暫存區的所有內容提交到當前分支;
git status 查看狀態 untracked代表沒有被添加過;;
6 git跟蹤管理的是修改而不是文件
git diff HEAD -- test.txt可以查看工作區和版本庫里面最新版本的區別
7 撤銷修改:
$ git checkout -- test.txt //丟棄工作區的修改,即回到最近一次git commit或者git add的狀態
$ git reset HEAD readme.txt //撤回暫存區的修改,重新放回工作區
8 刪除文件
刪除或rm,即rm test.txt;兩種方法:
1 $rm test.txt
$git rm test.txt
$git commit -m "remove"
如果誤刪,用
$git checkout -- test.txt //git checkout命令實際上是用版本庫里的版本替換工作區的版本
9 添加遠程庫:在本地倉庫下運行命令:
$ git remote add origin git@github.com:michaelliao/learngit.git
把本地庫的所有內容推送到遠程庫中:
$ git push -u origin master //第一次推送master分支時加上-u參數,git不但會將本地的master內容推送到遠程的master分支,還會把本地的master分支和遠程的master分支關聯起來;
只要本地做了提交,就可以使用git push origin master推送
10 要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;
關聯后,使用命令git push -u origin master第一次推送master分支的所有內容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有聯網都可以正常工作,而SVN在沒有聯網的時候是拒絕干活的!當 有網絡的時候,再把本地提交推送一下就完成了同步,真是太方便了!
11 從遠程庫克隆:git clone
12 創建與合并分支:
1 創建并切換分支
$ git checkout -b he //-b表示創建并切換,相當于以下兩條命令:
$ git branch he
$ git checkout he
使用以下命令查看當前分支:
$ git branch
使用以下命令切換分支:
$git checkout master
$git merge he //git merge指令用于合并分支到當前分支
$git branch -d dev //刪除div分支
13 解決沖突
使用git status查看沖突的文件,手動更改沖突;
使用git log查看分支的合并情況
$ git log --graph --pretty=oneline --abbrev-commit
$ git log --graph可以查看分支的合并情況
14 分支管理策略:
$ git merge --no-ff -m "merge with no-ff" dev //--no-ff表示禁用fast forward
合并后使用git log查看歷史:
$ git log --graph --pretty=oneline --abbrev-commit
15 bug分支:
$git stash //將當前的工作現場保存下來
$ git stash list //查看剛才的工作現場
一是用git stash apply恢復,但是恢復后,stash內容并不刪除,你需要用git stash drop來刪除;
$ git stash pop //恢復
$ git stash apply stash@{0} //恢復指定的stash
16 feature分支:開發一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合并過的分支,可以通過git branch -D <name>強行刪除。
17 多人協作:
查看遠程倉庫的信息:
$ git remote
$ git remote -v
推送分支:
$ git push origin master
$ git push origin dev
創建遠程origin的dev分支到本地
$ git checkout -b dev origin/dev
18 創建標簽:
$ git tag v1.0
查看所有標簽:
$ git tag
給歷史記錄打標簽:
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 6224937
查看標簽信息:
$ git show v0.9
創建帶有說明的標簽:
$ git tag -a v0.1 -m "version 0.1 released" 3628164
使用-s用私鑰簽名一個標簽:
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
19 操作標簽
刪除標簽: $ git tag -d v0.1
推送標簽到遠程: $ git push origin v1.0
一次性推送所有未推送的標簽:$ git push origin --tags
刪除遠程標簽: $ git tag -d v0.9 $ git push origin :refs/tags/v0.9
20 忽略特殊文件:
21 別名:$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ 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"
22 放棄所有的提交
$ git checkout .