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 .