Git
基础操作
查看安装结果
git
创建本地仓库
进入文件夹创建仓库
git init
配置个人信息
git config user.name 'xxx'
git config user.email 'xxxx'
查看文件状态
git status
添加所有文件到暂存区
git add .
添加指定文件
git add xxx.py
取消暂存
git rm --cached '文件名'
丢弃工作区的改动
git checkout -- '文件'
暂存区文件提交到仓库区
git commit -m '版本描述'
添加提交仓库合并命令
git commit -am '版本描述'
查看历史版本
git log 或 git reflog
git reflog 可以查看所有记录(包括commit和reset的操作),包括已经被删除的commit记录
git log 下不能查看已经删除了的commit记录
回退版本
方案1:(不推荐)
HEAD表示当前最新版本
HEAD^表示当前最新版本的前一个版本
HEAD^^表示当前最新版本的前两个版本,以此类推...
HEAD~1表示当前最新版本的前一个版本
HEAD~10表示当前最新版本的前10个版本,以此类推...
git reset --hard HERD^
方案2:
git reset --hard 版本号
撤销修改
撤销工作区代码
git checkout -- '文件'
撤销暂存区代码
第一步:将暂存区代码撤销到工作区
git reset HEAD 文件名
第二部:撤销工作区代码
git checkout 文件名
对比版本
对比版本库与工作区
git diff HEAD -- '文件名'
对比版本库
git diff HEAD HEAD^ -- '文件名'
删除文件
删除文件
rm '文件名'
git确认删除文件
git rm '文件名'
删除后记录删除操作版本
git commit -m '删除描述'
误删
git撤销修改
git checkout -- 文件名
从远程获取最新版本
git fetch
比较本地的master分支和origin/master分支的差别
git log -p master ..origin/master
进行合并
git merge origin/master
也可以用以下指令:
git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支
git diff tmp //將當前分支和tmp進行對比
git merge tmp //合并tmp分支到当前分支
远程仓库克隆
git clone xxx
配置个人信息xxxx(省略)
推送
git push
拉取
git pull
设置账号密码
设置记住密码(默认15分钟):
git config --global credential.helper cache
如果想自己设置时间,可以这样做(1小时后失效):
git config credential.helper 'cache --timeout=3600'
长期存储密码:
git config --global credential.helper store
标签
当某一个大版本完成后,需要打一个标签
记录大版本
备份大版本代码
在本地打标签
git tag -a 标签名 -m '描述标签'
推送标签到远程仓库
git push origin 标签名
删除本地标签
git tag -d 标签名
删除远程仓库标签
git pushi origin --delete tag 标签名
分支
master主分支(已经发布好的版本)
dev开发分支
查看当前分支
git branch
创建分支并切换到分支上
git checkout -b dev
设置本地分支跟踪远程指定分支
git push -u origin dev
切换到主分支
git checkout master
合并分支
1.切换到主分支
git checkout master
2.合并分支
git merge dev
推送
git push
删除分支
git branch -d xxx
强制删除
git branch -D xxx
删除远程分支
git push origin --delete xxx
其他
批量修改错已提交记录的个人信息
#!/bin/sh
git filter-branch -f --env-filter '
OLD_EMAIL="mail"
CORRECT_NAME="anonymous"
CORRECT_EMAIL="anonymous@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches
# 检查
git log
# 如果失败执行该语句后重新执行脚本
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
# 确认成功后推送
git push origin --force --all