Featured image of post Git

Git

Git handbook for myself

git 作为最好用的版本管理工具,学习一下还是很有必要的,记录一下学习笔记


Learn Git Note

This file is my note for git learning.

Basic Usage

  1. git init

  2. git add <file>

  3. git commit -m <message>

    1
    2
    
    git add readme.md
    git commit -m "new readme.md files"
    
  • 查看状态 git status
  • 查看不同 git diff
  • 查看日志 git log or git log --pretty=oneline
  • 查看历史 git reflog 查看命令历史,以便确定要回到未来的哪个版本
  • 版本回退 git reset -hard HEAD^ or git reset -hard <commit id>
    • 参数: HEAD^ HEAD^^ HEAD~100
  • git checkout -- file 丢弃工作区的修改
  • git reset HEAD <file> 撤销暂存区的修改,重新放回工作区
  • 删除文件 git rm <files>

Remote Repository

  • 创建SSH Key ssh-keygen -t rsa -C "[email protected]"
  • 注册 GitHub,添加 SSH Pub Key
  • GitHub 新建 Repository learngit
  • 关联远程Repository git remote add origin [email protected]:username/learngit.git
  • 推送 git push -u origin master
  • git clone

Branch

New Branch and Merge

  • 创建dev分支并切换到dev分支: git checkout -b dev

  • 等价于

    1
    2
    
    git branch dev
    git checkout dev
    
  • git checkout master

  • git merge dev

  • 删除dev分支:git branch -d dev

  • 查看分支 git branch

  • 创建分支 git branch <name>

  • 切换分支 git checkout <name>或者git switch <name>

  • 创建+切换分支 git checkout -b <name>或者git switch -c <name>

  • 合并某分支到当前分支 git merge <name>

  • 删除分支 git branch -d <name>

  • git merge --no-ff -m "merge with no-ff" dev

  • git stash “储藏”当前工作现场,git stash list 查看

  • git stash apply 恢复,但stash内容并不删除,需要用 git stash drop 来删除

  • 或者用 git stash pop,恢复的同时把stash内容也删除了

  • cherry-pick 复制一个特定的提交到当前分支

  • 通过 git branch -D <name> 强行删除没有被合并过的分支

  • 查看远程库信息 git remote -v

  • 本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓取远程的新提交

  • 在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

  • 建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用 git pull,如果有冲突,要先处理冲突

  • git rebase 提交记录变成一条直线

Tag

  • git tag <name> 就可以打一个新标签
  • git tag 查看所有标签
  • 为历史提交 commit 打标签,找到 commit id git tag <name> ommit_id
  • git show <tagname> 查看标签信息
  • git tag -a <tagname> -m "blablabla..." 指定标签信息
  • 删除标签 git tag -d <tagname>
  • 标签都只存储在本地,不会自动推送到远程。如果要推送某个标签到远程,使用命令 git push origin <tagname>
  • 一次性推送全部尚未推送到远程的本地标签 git push origin --tags
  • git tag -d <tagname> 删除一个本地标签
  • git push origin :refs/tags/<tagname> 删除一个远程标签

Others

  • 忽略文件或文件夹,新建 .gitignore 文件,将不需要追踪的文件和文件夹写入

应用

将本地项目同步到Github

准备工作

本地git获得github的提交权限

1
2
3
4
5
6
7
# 设置用户名和邮箱
$ git config --global user.name 'your_name'
$ git config --global user.email 'your_email'

#生成SSH密匙
$ ssh-keygen -t rsa -C 'your_email'
# email和你设置的git邮箱一致

指令执行后会让你确定密钥保存地址和设置密码,默认回车就好,完成后添加生成的id_rsa.pub文件中的公钥到 Github 的 setting / SSH AND GPG KEY / SSH keys

提交

cd到项目本地目录

  • git init # 初始化git仓库
  • git add . # 把所有项目文件添加到提交暂存区
  • git commit -m '提交说明' # 把暂存区中的内容提交到仓库

创建远程仓库,在github中新建一个repository,复制仓库地址,同步本地仓库到远程仓库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ git remote add origin https://github.com/vpromise/example.git # https 连接
# or 
$ git remote add origin [email protected]:vpromise/example.git # ssh 连接

# 如果出现错误:fatal: remote origin already exists,则:
$ git remote rm origin
# 再执行 git remote add origin 语句

# push
$ git push origin master
VPROMISE ALL RIGHT RESERVED