git学习笔记
2015-12-16 00:00
309 查看
git init 把当前目录编程Git可管理的仓库(添加了一个.git文件夹)
echo "Git is a version control system." > readme.txt
> 输入这句话保存到创建的readme.txt文件中
echo " Git is free software." >> readme.txt
>> 追加内容到readme.txt文件中
git add readme.txt 把文件添加到仓库
git add -A 添加所有文件
git commit -m "index"
-m 是本次提交的说明
git commit -a -m "index" 提交所有文件
可以一次add多个文件,然后一次性commit
git status告诉你有文件被修改过,用git diff可以查看修改内容。
git reset --hard HEAD^ 回退到上一个版本
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard 3628164(版本号的前几位,没必要写全,git会自动寻找) 继上一部操作后,重新恢复到新版本
git reflog 记录你的每一次命令,(可以找到每一个版本的commit id)
工作区:在电脑里能看到的目录
版本库:.git
暂存区:也叫做索引,英文名称stage或index,一般存放在.git下的index文件(.git/index)
git checkout -- readme.txt 把readme.txt文件在工作区的修改全部撤销
1 文件自修改后还没有放到暂存区(只是修改了文件,而没有git add),现在,撤销操作就是回到和 版本库一模一样的状态: 回到最近一次git commit
2 文件已经放到暂存区(git add操作是放到暂存区),又做了修改,现在撤销修改就回到添加到暂存区的状态 : 回到最近一次 git add
git创建新仓库:
1 登陆github,创建一个webstudy库
2 cd到本地webstudy库中,创建ssh key
ssh-keygen -t rsa -C "1099594257qq.com"
一路回车
(可以在用户目录里找到.ssh目录,.里面有SSH key的密钥对,我这里的目录是
/c/Users/Administrator/.ssh/id_rsa)
3 git remote add origin git@github.com:muyoushujuxian/learngit.git
将你的仓库链接到远程的服务器,远程库的名字就叫做origin,这是Git默认的,也可以修改,但是不建议修改,否则容易找不到
git remote rm origin 删除绑定远程库
本地内容推送到远程库
git push -u origin master
可以把master换成其他的branch(分支)名
将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时可能会出现如下错误
error:src refspec master does not match any
原因: 本地版本库为空, 空目录不能提交 (只进行了init, 没有add和commit)
克隆远程库
git clone git@github.com:michaelliao/gitskills.git
克隆本地库(注意要在与当前库不同的路径下clone)
git clone /path/repository
分支:把不同特性的开发分离开来,之后可以合并
:每次提交,git都把它们穿成一条时间线,这条时间线就是一个分支
HEAD指向master,master指向提交,所以HEAD指向的是当前分支
git checkout -b dev 创建一个dev 的分支 -b 表示创建并切换 ,表示以两条命令
git branch dev //创建dev分支
git checkout dev //切换到dev分支
git push origin dev //把分支推送到远程库
git branch 查看当前分支
合并分支
git merge dev 合并指定分支(dev)到当前分支 master,合并后的master分支会保存在dev分支上面的commit记录,很是繁琐.
删除分支
git branch -d dev
删除远程分支 serverfix
$ git push origin :serverfix
.gitignore
此文件中配置不需要假如"版本管理的文件/夹"
1、配置语法:
以斜杠“/”开头表示目录;也可以只写一个目录名node_modules,则任何目录,子目录下的nodemodules目录都会被忽略
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
感谢http://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html
https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速
设置记住密码(默认15分钟):
如果想自己设置时间,可以这样做:
这样就设置一个小时之后失效
长期存储密码:
查看某人提交记录
查看所以用户提交的代码行数, --since='2017-10-01' 是开始日期
echo "Git is a version control system." > readme.txt
> 输入这句话保存到创建的readme.txt文件中
echo " Git is free software." >> readme.txt
>> 追加内容到readme.txt文件中
git add readme.txt 把文件添加到仓库
git add -A 添加所有文件
git commit -m "index"
-m 是本次提交的说明
git commit -a -m "index" 提交所有文件
可以一次add多个文件,然后一次性commit
git status告诉你有文件被修改过,用git diff可以查看修改内容。
git reset --hard HEAD^ 回退到上一个版本
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard 3628164(版本号的前几位,没必要写全,git会自动寻找) 继上一部操作后,重新恢复到新版本
git reflog 记录你的每一次命令,(可以找到每一个版本的commit id)
工作区:在电脑里能看到的目录
版本库:.git
暂存区:也叫做索引,英文名称stage或index,一般存放在.git下的index文件(.git/index)
git checkout -- readme.txt 把readme.txt文件在工作区的修改全部撤销
1 文件自修改后还没有放到暂存区(只是修改了文件,而没有git add),现在,撤销操作就是回到和 版本库一模一样的状态: 回到最近一次git commit
2 文件已经放到暂存区(git add操作是放到暂存区),又做了修改,现在撤销修改就回到添加到暂存区的状态 : 回到最近一次 git add
git创建新仓库:
1 登陆github,创建一个webstudy库
2 cd到本地webstudy库中,创建ssh key
ssh-keygen -t rsa -C "1099594257qq.com"
一路回车
(可以在用户目录里找到.ssh目录,.里面有SSH key的密钥对,我这里的目录是
/c/Users/Administrator/.ssh/id_rsa)
3 git remote add origin git@github.com:muyoushujuxian/learngit.git
将你的仓库链接到远程的服务器,远程库的名字就叫做origin,这是Git默认的,也可以修改,但是不建议修改,否则容易找不到
git remote rm origin 删除绑定远程库
本地内容推送到远程库
git push -u origin master
可以把master换成其他的branch(分支)名
将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时可能会出现如下错误
error:src refspec master does not match any
原因: 本地版本库为空, 空目录不能提交 (只进行了init, 没有add和commit)
克隆远程库
git clone git@github.com:michaelliao/gitskills.git
克隆本地库(注意要在与当前库不同的路径下clone)
git clone /path/repository
分支:把不同特性的开发分离开来,之后可以合并
:每次提交,git都把它们穿成一条时间线,这条时间线就是一个分支
HEAD指向master,master指向提交,所以HEAD指向的是当前分支
git checkout -b dev 创建一个dev 的分支 -b 表示创建并切换 ,表示以两条命令
git branch dev //创建dev分支
git checkout dev //切换到dev分支
git push origin dev //把分支推送到远程库
git branch 查看当前分支
合并分支
git merge dev 合并指定分支(dev)到当前分支 master,合并后的master分支会保存在dev分支上面的commit记录,很是繁琐.
### 忽略dev分支上面的commit记录,仅仅在master上保留这一次merge的记录:
git merge dev --squash删除分支
git branch -d dev
删除远程分支 serverfix
$ git push origin :serverfix
.gitignore
此文件中配置不需要假如"版本管理的文件/夹"
1、配置语法:
以斜杠“/”开头表示目录;也可以只写一个目录名node_modules,则任何目录,子目录下的nodemodules目录都会被忽略
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
感谢http://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html
https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速
设置记住密码(默认15分钟):
git config --global credential.helper cache
如果想自己设置时间,可以这样做:
git config credential.helper 'cache --timeout=3600'
这样就设置一个小时之后失效
长期存储密码:
git config --global credential.helper store
查看某人提交记录
git log --author="xiaoming" --pretty=short
查看所以用户提交的代码行数, --since='2017-10-01' 是开始日期
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --since='2017-10-01' --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
相关文章推荐
- MARKDOWN使用小计
- 过程:
- PERIXX512键盘的使用体验
- mongodb使用备忘
- body-parser和multer
- 【Python 第9课】random
- 【Python 第10课】 变量2
- 【Python 第11课】 逻辑判断
- Windows 音频知识学习汇总
- 学习逆向工程知识的一些随笔(一)
- OO设计中避免违法依赖倒置原则
- spring mvc controller间跳转 重定向 传参
- 关于应用full gc频繁的分析及解决
- jstat的用法【待删】
- Spring+Mybatis+Velocity
- Maven零散笔记——常用配置
- django 连接mysql
- c语言指针闲谈
- IOS 百度地图定位使用(不显示用户当前坐标)
- IOS 关键字self,super,copy, retain, assign , readonly