git操作记录

添加和提交

# 初始化为git库
git init
# 创建文件readme.md, 添加到暂存区里
git add readme.md
# 提交readme.md到仓库
git commit -m 'readme.md 添加内容'
# add commit 合并
git commit -am "合并提交"
# 合并到上一次提交
git commit --amend
# 重命名 相当于mv ,git rm, git add
git mv readme.md readme

# 添加远程仓库
git remote add pb https://github.com/paulboone/tic.git
# 重命名远程仓库
git remote rename pb paul
# 删除远程仓库
git remote remove paul

删除

# 回到上一版本
git reset --hard HEAD^
# 回退到上上版本
git reset --hard HEAD^^
#  回退到100个版本之前
git reset --hard HEAD100~
# 删除文件同时add
git rm info.log
#  删除仓库里的文件保留本地的。与git add相应的取消操作并不是git rm,而是git rm –-cached。这是需要非常注意的地方
git rm --cached xx/
#  恢复未git add的文件
git checkout –- test.txt
#  恢复git add
git reset HEAD test.txt

#  git 版本大于2.23.0
# 取消add
git restore --staged <file>
# 取消修改
git restore <file>

查看

# 看 HEAD 指向。如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向
cat .git/HEAD
# 查看是否有文件未提交-s=-short
git status <-s>
# 查看未提交的文件和版本库中的文件有何差别
git diff readme.md
# 查看修订记录(一行显示git log --pretty=oneline)
git log
# 查看两条修订记录 -p = -patch
git log -p -2
# 查看修改统计
git log --stat
# 指定格式
git log --pretty=format:"%h - %an, %ar : %s"
# 图像化显示
git log --pretty=format:"%h %s" --graph
# 时间范围--since and --until 2 years 1 day 3 minutes ag
git log --since=2.weeks
# 匹配
git log -S function_name
# 例子
git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/
# 一行显示
git log --online --decorate --graph -all
# 暂存区和最后一次提交
git diff --cached 或 git diff --staged
# 比较两个分支
git diff <分支名1> <分支名2> 
# 查看远程分支 -v显示url
git remote -v
# 分支的提交和关联的远程分支
git branch -vv

分支

# 创建新分支
git branch test
# 设置活动分支
git checkout test
# 创建分支并同时切换过去
git checkout -b newBranch
# 一个命令添加并提交
git commit -a -m 'made a change'
# 合并分支
git merge hotfix
# 删除分支
git branch -d hotfix
# 分支列表 (-v 显示上一次的提交信息) (--merged 显示已经合并到当前分支的分支)
git branch -v --merged --no-merged
# 分支重命名
git branch -move bad-branch-name corrected-branch-name
# 替换远程分支的名字
git push --set-upstream origin corrected-branch-name
# 删除远程分支
git push origin --delete bad-brach-name
# 关联远程分支(本地还没有)
git checkout --track origin/serverfix
# or
git checkout -b <branch> <remote>/<branch>
# 关联远程分支(本地已有) -u = --set-upstream-to
git checkout -u origin/serverfix
# 把server变基到master
git rebase master server
# 提取client分支从server分出去的提交,合并到master分支
git rebase --onto master server client

# 2.23版本以后
# 切换分支
git switch test
# 新建分支,并切换(-c create)
git swith -c new-branch
# 切换回上一个分支
git switch -

合并

拉取和推送

# 克隆仓库
git clone
# 拉取分支
git pull
# 拉取分支,不合并
git fetch
# 推送
git push

Tag

# 列出所有的tag
git tag
# 模糊搜索-l即--list
git tag -l "v1.8*"
# 创建带注释的标签
git tag -a v1.4 -m "version 1.4"
# 查看tag里面的提交信息
git show v1.4
# 创建一个轻量级tag
git tag v1.4-1w
# 对历史提交打标签
git tag -a v1.2 9fceb02

# 推送tag到远程分支 (git push 不会推送tag)
git push origin v1.5
# 推送多个tag (--follow-tags只推送注释类标签)
git push origin --tags

# 删除标签
git tag -d v1.4-1w
# 删除远程标签 
# 方式一
git push origin :refs/tags/v1.4-1w
# 方式二
git push origin --delete v1.4-1w

# 签出tag
git checkout v2.0.0
# 此时提交修改,将没法追踪。使用git switch -c <new-branch-name>将修改提交到新分支;使用git switch -取消提交
# 从tag上创建分支version2
git checkout -b version2 v2.0.0

设置

# 查看用户名邮箱
git config user.name
git config user.email
# 设置用户名邮箱
git config --global user.name "zhanghs"
git config --global user.email "zhang@163.com"
# 删除配置
git config --global --unset user.name
# 忽略文件
# 新建.gitignore文件,添加需要忽略的内容
  .gitignore
  target/
  .idea/
# 记住密码
git config --global credential.helper store
# 设置代理
git config --global http.proxy http://127.0.0.1:10809

例子

托管项目到github

1.生成gihub识别的凭证

ssh-keygen -t rsa -C "zhang@163.com"

生成的公匙在文件gitKey.public,私匙在gitKey里
2.将公匙添加到github,使自己能够提交代码

在github里点自己的头像-->setting-->SSH and GPG keys-->New SSH key, 输入上边生成的公匙

3.新建一个仓库,用于上传本地代码

在github里点头像旁边的加号(+)-->New Repository-->输入名字(zhang)-->Create Repository, 创建github仓库成功。地址为git@github.com:mather/zhang.git

4.上传本地仓库到github

# 添加远程仓库,并起别名为origin
git remote add origin git@github.com:mather/zhang.git
# 推送本地仓库到远程仓库
# git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:master

代码下载到本地(windows)并提交(同一个github账号)

1.下载代码

# 要用http协议,我用ssh协议总是失败
git clone https://github.com/mather/zhang.git

2.在里面添加文件

# 在git bash里面用vim
vim readme-windows.md
# 添加一行新内容退出
# 提交文件到暂存区
git add readme-windows.md
# 提交文件到本地仓库
git commit -m "windows 提交readme"

3.提交文件到github仓库

# 切换远程仓库,如果本地有多个的话
git checkout master
# 提交到远程仓库(不要有多余空格,不然会提交失败)
git push origin master:master

git pull 冲突解决

# 拉取分支
git pull
# 此时如果提示有冲突, 临时保存
git stash
# 再拉取分支
git pull
# 恢复存储
git stash pop
# 如果还有冲突(上一步可以合并同一文件的不同位置修改),就需要手动解决,如果无冲突,以下步骤提交代码
# 暂存
git add .
# 提交
git commit -m "comment"
# 推送
git push

注:git stash pop后无冲突会自动删除stash 列表,否则,需要执行git stash clear 或者git stash drop stash[0]手动删除
posted @ 2019-11-24 20:15  少年小白  阅读(1243)  评论(0编辑  收藏  举报