一些有用的git命令清单
以下是一些我常用的git命令清单
如果以下的命令不清晰细节,请看git的文档。
设置个人信息
git config --global user.name "John Doe"
git config --global user.email "john@example.com"
使用 --global
那么以上的设置会在所有git工程中生效. 如果 git config
没有使用 --global
参数并且运行在当前工程目录下, 那么以上设置只会对当前工程生效。
让Git忽略文件权限
cd project/
git config core.filemode false
这个选项是让我们忽略文件权限,也就是文件权限对我们不重要的时候,比如在windows系统下就常用
查看Git的当前配置清单
git config --list
初始化一个git仓库本地
cd existing-project/
git init
把远程仓库克隆到本地
git clone https://github.com/user/repository.git
这个会在本地新创建一个目录(以远程仓库的名称命名)
查看某个git子命令的帮助文档
git help clone
Update and merge your current branch with a remote 把远程的特定分支更新到本地当前的分支,并与本地分支合并
cd repository/
git pull [remote_repo_name] [remote_branch_name]
如果你不想合并,那么就使用git fetch,不要用pull。
查看远程仓库的URL
git remote -v
更改远程仓库的URL
git remote set-url [remote_repo_name] http//github.com/repo.git
添加个远程仓库
git remote add [remote_repo_name] https://github.com/user/repo.git
查看本地文件(没有添加到暂存区的文件)的变化
git diff
Note that this does not track new files.
查看本地文件(添加到了暂存区但没有commit的文件)的变化
git diff --cached
查看本地文件相对于远程仓库特定分支的变化
git diff [local_repo_name]/[local_branch_name]
比较两个commit之间的变化
git diff COMMIT1_ID COMMIT2_ID
比较两个commit之间的变化(仅仅只会列出变化的文件名)
git diff --name-only COMMIT1_ID COMMIT2_ID
查看一个特定commit的文件变化
git diff-tree --no-commit-id --name-only -r COMMIT_ID
or
git show --pretty="format:" --name-only COMMIT_ID
source: http://stackoverflow.com/a/424142/1391963
查看push之前的变化(暂存区与本地仓库分支的比较)
git diff --cached [repo_name]/[branch_name]
查看一个特定commit的详情(文本变化,提交信息)
git show COMMIT_ID
查看当前工作目录的git状态
git status
普通的更改文件,提交文件
git add changed_file.txt
git add folder-with-changed-files/
git commit -m "Commiting changes"
重命名或移动,删除文件,提交修改
git rm removeme.txt tmp/crap.txt
git mv file_oldname.txt file_newname.txt
git commit -m "deleting 2 files, renaming 1"
修改最后一个提交的信息(如果最后一个提交的信息有必要修改更正的话)
git commit --amend -m "New commit message"
把本地的commits 推送到远程仓库的特定分支
git push [repo_name] [branch_name]
查看最近提交的历史日志
git log
查看最近2个commits的历史日志
git log -2
查看最近2个commits的历史,并进行比较(diff)
git log -p -2
查看最近提交的历史日志,以单行的形式显示
git log --pretty=oneline
恢复到一个特定的commit,并提交
git revert [commit_id]
git push origin master
恢复到一个特定的commit的状态
# reset the index to the desired tree
git reset 56e05fced # move the branch pointer back to the previous HEAD
git reset --soft HEAD@{1} git commit -m "Revert to 56e05fced" # Update working copy to reflect the new commit
git reset --hard [commit_id]
Source: http://stackoverflow.com/q/1895059/1391963
撤销上一个提交,并保留本地变化
git reset --soft HEAD~1
撤销上一个提交,不保留本地变化
git reset --hard HEAD~1
撤销上一个提交,在索引中保留本地变化
git reset --mixed HEAD~1
Or git reset HEAD~1
See also http://stackoverflow.com/q/927358/1391963
撤销本地没有push的commits
git reset [repo_name]/[branch_name]
把本地的状态重置为远程的一个特定状态
git fetch [repo_name]
git reset --hard [repo_name]/[branch_name]
查看本地的分支
git branch
查看所有的分支
git branch -a
创建一个标签
git tag 7.x-1.3
推送一个标签
git push [repo_name] 7.x-1.3
创建一个分支
git checkout master
git branch new-branch-name
创建一个分支并切换到新分支
git checkout -b new-branch-name
从当前分支的上一个提交创建一个分支(或者说,新分支的base,是当前分支的上一个提交)
git branch branchname
or
git branch branchname HEAD~1 //这里的HEAD~1可以改成特定的commit_id
or
git checkout -b branchname
Source: http://stackoverflow.com/a/2816728/1391963
切换到新分支
git checkout new-branch-name
合并分支
git checkout master
git merge branch-name
把branch-name中的所有commit合并到master分支
把branch-name的分支合并到当前分支,并且不合并commits
git merge branch-name --no-commit --no-ff
查看当前分支与其他分支的不同
git diff branch-name
查看当前分支某个特定文件与其他分支的不同
git diff branch-name path/to/file
删除一个分支
git branch -d new-branch-name
把本地新分支推送到远程仓库
git push [repo_name] new-branch-name
得到远程所有分支
git fetch origin
得到git的根目录
git rev-parse --show-toplevel
Source: http://stackoverflow.com/q/957928/1391963
从仓库中删除所有本地已删除的文件
git rm $(git ls-files --deleted)
Source: http://stackoverflow.com/a/5147119/1391963
删除所有没进入暂存区的文件
git clean -f
包含目录:
git clean -f -d
防止意外发生:
git clean -n -f -d
Source: http://stackoverflow.com/q/61212/1391963
撤消某个git add的文件:
git reset HEAD file.txt
用git rebase来合并分支:
比如我有一个本地的分支已经推送到了远程分支,都叫new-ui。 该分支是为了完成新的UI功能,当new-ui分支测试完毕了,需要合并到主分支master,因为想保留new-ui分支上的所有commit历史信息,不能采用git merge命令,先要把
整个new-ui的分支变基到master分支上来 ,先切换到new-ui分支,然后调用git rebase master这个命令,结果就是这样整条new-ui提交链条就挂到master头节点的后面了, 变成了 :
----+---------+-----------+------------+
| |
master new-ui
然后git会自动合并,冲突的部分会提示,与传统的git merge没有任何区别,然后修改冲突文件,修改完毕后保存,然后git add去除冲突的文件,此时无任何冲突了,可以继续尝试rebase了,git rebase --continue 。注意,
如果没有冲突,直接完整合并,那么是不用git rebase --continue的。这时候可以用git merge合并两个分支了,先切换到master分支上,然后调用git merge new-ui,结果这时候才会正式把new-ui的代码合并到master分支上,工作流图变成了以下:
master
|
----+---------+-----------+------------+
|
new-ui
master指针已经指到尾部了,可以删除本地的new-ui分支了,git branch -d new-ui
最后删除远程new-ui分支:
先查看远程分支 git branch -r
然后根据远程分支的名称删除远程分支:
git branch -r -d [remote_repo_name]/new-ui
git push origin :new-ui
用git 远程仓库之间的备份:
比如你在github上有一个多次commit的repo,你需要把这个远程仓库的所有历史commit log等版本信息全部备份到公司内网的repo。
需要做以下步骤
git clone [github_repo_url]
然后cd到clone下来的仓库目录下
然后运行 git push --mirror [internal_netwrok_repo_url]
一些有用的git命令清单的更多相关文章
- 常用 Git 命令清单
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 常用 Git 命令清单 转
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 你不一定知道的几个很有用的 Git 命令
这里给大家分享一些很有用的 Git 命令,其中很多用法你可能都不知道,无论你是工作在团队环境中或在您的个人项目中,这些命令将对你帮助很大,让你可以更加高效的进行项目开发,更轻松愉快的工作和生活. 您可 ...
- 常用 Git 命令清单(摘录)
来源:阮一峰的网络日志 网址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...
- [转]常用 Git 命令清单
作者: 阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专 ...
- 常用 Git 命令清单
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命 ...
- 常用Git命令清单。
上期传送门:[清单]7个管理和优化网站资源的工具 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository: ...
- 常用 Git 命令清单【转】
转自:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git ,但是 ...
- 常用Git命令清单(转)
文/阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图 6 个命令,就可以了.但是熟练使用,恐怕要记住 60-100 个命令. 下面是我整理的常用 Git 命令清单.几 ...
随机推荐
- LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- mysql分布式数据库中间件对比
目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的.所以总结一个关于中间件比较的系列,希望可以对大家有帮助. 1. 什么是中间件 传统的架构模式就是 应用 ...
- VC++深入详解-第四章学习心得
这一章节主要讲解了 简单的绘图 主要是通过一些小的例子让我们学会了VC++的一些基本操作 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point ...
- ML&DL视频教程资源
作者:Bruce链接:https://www.zhihu.com/question/49909565/answer/345894856来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- JAVA-安装apache tomcat服务器
下载地址:http://tomcat.apache.org/ 选择需要下载的版本 下载windows service installer,找到文件双击进行安装 next i agree next ne ...
- ASP.NET压力测试
本文导读:对于直接面对互联网用户的WEB应用,在开发设计的时候必须格外小心,因为谁也不知道在单位时间内WEB程序访问和运行的速度.所以,在程序设计完成以后,最后针对程序进行一些严格的甚至是苛刻的测试, ...
- 一分钟读懂互联网广告竞价策略GFP+GSP+VCG
原文:http://ju.outofmemory.cn/entry/116780 一分钟读懂互联网广告竞价策略GFP+GSP+VCG 两个广告位,三家广告主竞价,广告平台究竟应该制定广告竞价策略呢?这 ...
- GitHub最新命令使用教程
一.创建github仓库并提交代码 1.在github创建public仓库 2.会生成一个git地址 https://github.com/ae6623/Zebra.git 3.在本地打开命令,在文件 ...
- myeclipse集成jdk、tomcat8、maven、svn
今天一个同学要回家了.回家之前叫我帮他配置一下开发环境.然后在家里面自己研究一下.敲下代码. 帮他配置好之后自己回来把这个过程写下来.别让自己把这个东西给忘了. myeclipse安装 myeclip ...
- UiTextField 限制输入长度
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...