初始化本地git仓库(创建新仓库)

git init

基本配置

# 配置用户名
git config --global user.name "xxx"

# 配置邮件
git config --global user.email "xxx@xxx.com"

# 生成ssh-key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 查看git config的设置
git config --list

# 全局配置文件
~/.gitconfig

版本提交

# 添加远端配置
git remote add origin git@github.com:josephstalin117/time_series_forecast.git

# 取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch]

#添加指定文件到暂存区
git add [file1] [file2] ...

# 提交暂存区到仓库区
git commit -m [message]

# 提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]

# 上传本地指定分支到远程仓库
git push [remote] [branch]
git push origin master

# 推送本地分支到远端仓库
git push --set-upstream origin [分支名]

版本控制

# 撤销文件a的修改(没有被git add)
git checkout a

# 撤销文件a的修改(已经被git add,但没有commit)
git reset HEAD a
git checkout a

# 撤销文件a的修改(已经被commit)
git reset HEAD^
git checkout a

# 回退到指定版本
git reset --hard [版本号]

# 回退到上一版本
git reset --hard HEAD^

# 单个文件恢复之前的版本
git reset 版本号 [filename]

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset [commit]

# 新建一个commit,用来撤销指定commit,后者的所有变化都将被前者抵消,并且应用到当前分支
git revert [commit]

# 改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]

# 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...

# 从暂存区删除,但该文件会保留在工作区
git rm --cached [file]

# 显示当前分支的版本历史
git log

# 远程强制覆盖本地文件
git fetch --all
git reset --hard origin/master
git pull

回滚commit

# 版本库回退一个版本,重置Stage
git reset --hard HEAD~1

# 修改版本库,保留Stage,保留工作区
git reset --soft HEAD~1

# 创建一个commit来覆盖当前commit
git revert HEAD

# git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit

images

文件对比

#显示工作区与当前分支最新commit之间的差异
git diff HEAD [filename]

#显示工作区与比较上次的提交
git diff HEAD^ [filename]

#比较暂存区与最新本地版本库
git diff --cached [filename]

#显示暂存区和工作区的差异
git diff [file]

#查看工作目录同Git仓库指定 commit 的内容的差异
git diff [commit] [filename]

#git diff 不输出的处理
git --no-pager diff
git config --global core.pager 'less'

查看记录

#显示文件的历史修改
git log -p [filename]
git log --graph

#查看提交记录
git log [filename]

#显示提交的记录
git log —pretty=oneline [filename]

#查看某次提交中的某个文件变化
git show [版本号] [filename]

代理

git config --global http.proxy 'http://127.0.0.1:1080'
git config --global http.proxy 'socks5://127.0.0.1:1080'

git config --global https.proxy 'https://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

git config --global --unset http.proxy

git config --global --unset https.proxy

分支管理

# 创建分支
git branch <branchname>

# 显示分支列表
git branch

# 显示全部分支
git branch -a

# 切换分支
git checkout <branchname>

# 创建分支并切换
git checkout -b [branch]

# 合并分支
## 先切换master分支
git checkout master
## 合并分支
git merge [branch]
## 取消merge
git merge --abort

# 删除分支
git branch -d [branchname]

remote远程主机管理

# 显示所有远程主机
git remote

# 删除远程主机
git remote rm <主机名>

# 添加远程主机
git remote add <主机名> <网址>

fetch取回远程主机的更新

git fetch <远程主机名>

# 取回远程主机的特定分支更新
git fetch <远程主机名> <分支名>

# 远程分支拉到本地 
git fetch origin [远程分支]

# 查看远程分支remote
git branch -r

# 本地创建分支并切换到该分支
git checkout -b [本地分支名称] origin/[远程分支]

# 拉取远程分支的内容
git pull origin [远程分支]

# 本地分支合并远程分支
git merge origin/master
git rebase origin/master

合并远程分支

# 本地创建一个和远程分支b相同的分支b
git checkout -b b origin/b

# 远程代码pull到本地
git pull origin b

# 返回分支a
git checkout a

# 合并分支a和分支b
git merge b

# 本地分支a同步到远程
git push origin a