git主要通过阮一峰和廖雪峰blog学习的
配置
远端上传
配置config,添加下列代码
[receive]
denyCurrentBranch = ignore
检查已有的配置信息
git config --list
git config --global --list
git config user.name
配置用户信息
git config --global user.name "John"
git config --global user.email test@test.com
操作
提交
git add *
git commit
分支
查看分支
git branch
新建分支
git branch branchname
切换到分支
git checkout branchname
合并分支 merge
- 先创建dev分支,并切换到dev
git checkout -b dev master
#等于以下两条命令
git branch dev master
git checkout dev
- 修改dev后,提交dev的修改后,合并到master
#### 先在dev下提交dev的修改
#### 切换回master
git checkout master
#### 合并分支,把master的内容替换为dev的
git merge --no-ff dev
## --no-ff参数是什么意思。
默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。
#删除dev分支
git branch -d dev
查看
历史:
查看提交历史(全部):
git log
查看提交历史,并显示统计信息:
git log --stat
查看提交历史并查看差异:
git log -p
查看最近2次提交历史并查看差异:
git log -p -2
查看最近2周内提交历史:
git log --since=2.weeks
查看某个时刻之后的提交历史:
git log --since="2008-09-14"
查看某个时刻以前的提交历史:
git log --until="2008-09-14"
查看某个作者的提交历史:
git log --author="stupid"
远程仓库
查看分支
git remote show origin
其他:
其他参数
-(n)
仅显示最近的 n 条提交
--since, --after
仅显示指定时间之后的提交。
--until, --before
仅显示指定时间之前的提交。
--author
仅显示指定作者相关的提交。
--committer
仅显示指定提交者相关的提交。
操作
恢复单个文件,reset单个文件,还没有提交修改
git checkout -- file
取消add到缓存的文件
git reset
只会操作缓存区,不会更改实际文件,加上--hard就会更改文件了。
第一次提交之前,没有HEAD版本
git rm -rf --cached .
又版本之后
git reset HEAD <file>
追加或修改上次提交
git commit -m "a"
git commit --amend -m "b"
#将上次提交的注释由a改为b
git add <file>
git commit --amend
追加一个文件到上次的提交,但不修改注释。
git push -f origin
push记得加上-f参数
删除本地所有未更改的提交
运行以下两条命令
git clean -df
git reset --hard
到服务器上获取最新的版本并将你本地主分支指向到它
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
gitignore
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
.DBStore/* #忽略目录.DBStore下的全部内容,不管是根目录下的/.DBStore/还是某个子目录下的/lib/.DBStore/目录,都会忽略
/upload/* #忽略根目录下的/upload/目录的全部内容
!.gitignore #跟踪.gitignore文件,不忽略.gitignore
局域网创建仓库步骤
服务器端:
git init --bare
本地创建同名代码文件夹
git init
添加远程仓库配置
git remote add origin ssh://servername@serverhosts/path/
本地仓库操作
git add -A
git commit -m "message"
推送到远程仓库的master分支
git push origin master
故障
.lock
锁定,直接删除.lock
文件
SAE使用Git , 一年多没用SAE了,可能已更新
# 配置用户邮箱,用户名
git config user.mail "email@email.com"
git config user.name "username"
#忽略ssl验证
git config http.sslVerify "false"
# 全局 git config --global http.sslVerify false
mkdir newapp && cd newapp
git init
git remote add sae https://git.sinaapp.com/newapp
//touch readme.md
//git add readme.md
//git commit -m "第一次提交"
git push -u sae master:1
# 从局域网clone
git clone cail@192.168.1.224:/home/cail/git/gitproject
# 从sae clone指定分支
git clone -b 1 https://git.sinaapp.com/gitproject
git push <远程主机名> <本地分支名>:<远程分支名>