git常用命令总结

1. git的常用操作

1. 文件基本操作 描述
git help <command> 显示command的help
git show ($id) 显示某次提交的内容
git ls-files 查看版本控制区的所有文件
git status 查看文件状态
git add <file> 将工作文件修改提交到本地暂存区
git add . 将所有修改过的工作文件提交暂存区
git rm <file> 从版本库中删除文件
git rm --cached 从版本库中删除文件,但工作区不删除文件
git reset 从暂存区恢复到工作文件
git reset -- . 从暂存区恢复到工作文件
git reset --hard 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
git commit -m "xxx" 将暂存区所有文件提交到版本控制区
git commit -am "xxx" 等同于 git add && git commit -m "xxx"
git commit --amend 修改最后一次提交记录
git checkout -- 抛弃工作区修改
git checkout . 抛弃工作区修改
git revert <$id> 恢复某次提交的状态,恢复动作本身也创建次提交对象
git revert HEAD 恢复最后一次提交的状态

mark


2. 查看文件diff 详情见下图

mark

3. 查看提交记录 描述
git log 查看提交记录
git log <file> 查看该文件每次提交记录
git log -p <file> 查看每次详细修改内容的diff
git log --stat 查看提交统计信息
git reflog 查看所有提交版本记录

4. 分支操作 描述
git branch -r 查看远程分支
git branch <new_branch> 创建新的分支
git branch -v 查看各个分支最后提交信息
git branch --merged 查看已经被合并到当前分支的分支
git branch --no-merged 查看尚未被合并到当前分支的分支
git checkout <branch> 切换到某个分支
git checkout -b <new_branch> 创建新的分支,并且切换过去
git checkout -b <new_branch> <branch> 基于branch创建新的new_branch
git checkout $id 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
git checkout $id -b <new_branch> 把某次历史提交记录checkout出来,创建成一个分支
git branch -d <branch> 删除某个分支,若该分支未merge,则不成功
git branch -D <branch> 强制删除某个分支

5. 分支合并和rebase 描述
git merge <branch> 将branch分支合并到当前分支
git merge origin/master --no-ff 不要Fast-Foward合并,这样可以生成merge提交

6. Git远程分支管理 描述
git pull 抓取远程仓库所有分支更新并合并到本地
git pull --no-ff 抓取远程仓库所有分支更新并合并到本地,不要快进合并
git fetch origin 抓取远程仓库更新
git merge origin/master 将远程主分支合并到本地当前分支
git checkout --track origin/branch 跟踪某个远程分支创建相应的本地分支
git checkout -b <local_branch>
origin/<remote_branch>
基于远程分支创建本地分支,功能同上
git push push所有分支
git push origin master 将本地主分支推到远程主分支
git push -u origin master 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
git push origin <local_branch> 创建远程分支, origin是远程仓库名
**git push origin <local_branch>:<remote_branch> ** 创建远程分支
git push origin :<remote_branch> 先删除本地分支(git br -d <branch>),然后再push删除远程分支

7. Git远程仓库管理 描述
git remote -v 查看远程服务器地址和仓库名称
git remote show origin 查看远程服务器仓库状态
git remote add origin
git@github:xx/xxx.git
添加远程仓库地址
git remote set-url origin
git@github.com:xx/xxx.git
设置远程仓库地址(用于修改远程仓库地址)
git remote rm <repository> 删除远程仓库

8. 创建远程仓库 描述
git clone --bare xx xxx.git 用带版本的项目创建纯版本仓库
git remote add
origin git@ github.com:xxx/xx.git
设置远程仓库地址
git remote set-head origin master 设置远程仓库的HEAD指向master分支
git push -u origin master 客户端首次提交
git push -u origin develop 首次将本地develop分支提交到远程develop分支,并且track
git push <主机名>
<本地分支名> <远程分支名>
git push 的一般形式
git push origin master 省略远程分支,表示将本地分支推送到与之存在追踪关系的分支(通常两者同名)
git push origin :/refs/for/<branch> 省略本地分支,表示删除远程的<branch>分支
refs/for 的意义在于我们提交代码到服务器之后,
需要经过code review 之后才能进行merge的,而refs/heads 不需要

2. .gitignore

有时候我们可能不希望同步某些文件,比如.pyc,.o等,但为了方便,我们通常都是直接同步所有本地文件,这个矛盾如何解决呢?
答案就是:建立一个.gitignore文件,将不需要同步的文件名全部写入到该文件中。

  • 位置:需要同步git的目录下
  • 作用:将内部列出的文件不做版本管理(即不进行同步)
  • 创建:touch .gitignore

①. 强制过滤

  • /mtk/ : 过滤整个文件夹
  • *.pyc : 过滤所有.pyc的文件
  • /mtk/tst.pyc : 过滤指定文件

②. 强制添加
将某些文件强制同步到git中

  • !/mtk/
  • !*.pyc

区别在于前面多了个!.

PS: 一定要在git push之间创建该文件,否则,他就失去了应有的作用。
若在.gitignore建立之前就上传了不必要的文件(夹),可使用

git rm -r --cached directory

命令进行删除缓存区和仓库的文件

图片来自: www.fishc.com

原文地址:https://www.cnblogs.com/Jimmy1988/p/8274391.html