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 |
从版本库中删除文件,但工作区不删除文件 |
git reset |
从暂存区恢复到工作文件 |
git reset -- . | 从暂存区恢复到工作文件 |
git reset --hard | 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改 |
git commit -m "xxx" | 将暂存区所有文件提交到版本控制区 |
git commit -am "xxx" | 等同于 git add |
git commit --amend | 修改最后一次提交记录 |
git checkout -- |
抛弃工作区修改 |
git checkout . | 抛弃工作区修改 |
git revert <$id> | 恢复某次提交的状态,恢复动作本身也创建次提交对象 |
git revert HEAD | 恢复最后一次提交的状态 |
2. 查看文件diff | 详情见下图 |
---|
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