----git 中的一些概念
1.工作区 当前直接操作的内容
2.暂存区 临时存放改变的内容
3.版本库 仓库中保存的内容
----git存储变化
1.git add
暂存区目录树更新
修改或者增加的文件内容会写到对象库中的对象中
2.git commit
暂存区目录树写到版本库中
3.工作区和暂存区比较
git diff
4.暂存区和HEAD比较
git diff --cached
3.工作区和HEAD比较
git diff HEAD
-----文件提交到本地仓库
1.git status
查看文件修改情况
2.git add [filename]
添加已修改的文件名
3.git commit -m "reason for commit"
将已加入的文件进行提交 并附上提交说明
-----文件push到远程仓库
4.git push origin master
把本地commit同步到远程仓库master分支
-----git相关命令
1.git grep hello
在搜索所有工作区文件包含hello的内容
2.git clone url localName
克隆一份拷贝到本地
2.1 git clone url localName --bare
拷贝一份裸仓库到本地
3.git log --stat
git log 能够查看所有提交的日志。 加上--stat表示显示每次提交文件变更统计
4.git diff filePath
对比修改的内容
5.git commit --ament -m "sasdasd"
提交到上一次的commit中,并且修改提交说明
6.git stash
将工作区和暂存区的改动全部封存起来
7.git branch
查看所有分支,带星号的是当前所在分支
8.git branch work
创建名为work的分支
9.git checkout work
切换到名为work的分支
git只有在根目录存在.git目录,这是工作区对应的版本库。
10.git config --global alias.st status
给git status 中 status设置别名为st
11.git init demo
初始化版本库demo
12. git init demo --bare
创建一个裸仓库,裸仓库的意思就是仓库不保留工作区的内容。只有设置这个才能让别人push代码。为什么要裸仓库才能被push,原意很简单,假设仓库有很多分支,每个分支的工作区可能不一样,这样以那个分支作为工作区呢?工作区对于不是用来开发的共享仓库有什么意义呢?所以作为集中的共享仓库是没有工作区的。
-----git找回代码
1.git reset --hard HEAD^
这个命令的意思是撤销前一个提交,不把之前的提交撤销到缓暂存区。
如果使用参数--soft,就是撤销前一个提交,并放入缓存区。
2.git reset --hard HEAD^
这个命令是非常危险的,不过在git里面文件的修改记录依旧保存在.git中的objects目录。我们依然可以找回来。
方法就是使用git reflog,这个可以看到所有的历史操作记录,然后找到上一次提交的sha1的值,通过git reset sha1值就能回到上一次提交的时间点。
------git把一个分支的提交合并到另一个分支
git cherry-pick dc4de390ec48ee389ff93924c9b587a5d343e7a0
------git 打tag
git tag -m "message for tag" tag_1.1.0 <commitID>
针对某个提交为止打tag。
tag只是默认只是本地可见,需要显示推送到远程仓库
-----gerrit
gerrit可以认为git代码审核工具。是用java写的。
gerrit本身基于ssh协议实现了一套Git服务
--------推送项目到git仓库
git remote add origin git@github.com:lubby1990/netty-test.git
参考文献:Git权威指南 蒋鑫