Git用法及SAE使用Git

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

  1. 先创建dev分支,并切换到dev
git checkout -b dev master
#等于以下两条命令
git branch dev master
git checkout dev
  1. 修改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 <远程主机名> <本地分支名>:<远程分支名>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容