一些有用的git命令清单

时间:2023-01-23 09:13:59

以下是一些我常用的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://*.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://*.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://*.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://*.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://*.com/q/957928/1391963

从仓库中删除所有本地已删除的文件

git rm $(git ls-files --deleted)

Source: http://*.com/a/5147119/1391963

删除所有没进入暂存区的文件

git clean -f

包含目录:

git clean -f -d

防止意外发生:

git clean -n -f -d

Source: http://*.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命令清单的更多相关文章

  1. 常用 Git 命令清单

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  2. 常用 Git 命令清单 转

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  3. 你不一定知道的几个很有用的 Git 命令

    这里给大家分享一些很有用的 Git 命令,其中很多用法你可能都不知道,无论你是工作在团队环境中或在您的个人项目中,这些命令将对你帮助很大,让你可以更加高效的进行项目开发,更轻松愉快的工作和生活. 您可 ...

  4. 常用 Git 命令清单(摘录)

    来源:阮一峰的网络日志 网址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...

  5. [转]常用 Git 命令清单

    作者: 阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专 ...

  6. 常用 Git 命令清单

    http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命 ...

  7. 常用Git命令清单。

    上期传送门:[清单]7个管理和优化网站资源的工具 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository: ...

  8. 常用 Git 命令清单【转】

    转自:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git ,但是 ...

  9. 常用Git命令清单(转)

    文/阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图 6 个命令,就可以了.但是熟练使用,恐怕要记住 60-100 个命令. 下面是我整理的常用 Git 命令清单.几 ...

随机推荐

  1. ID还是普通字段做外键合适?

    ORACLE:USER表中没有ID字段,只有USERNAME做为一个唯一一字段当主键, COMMENT评论表中有一个user表的外键是用了USER表中的USERNAME字段. 我总认为这不合理,一般情 ...

  2. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比[转]

    梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟 ...

  3. Delphi 的字符及字符串[6] - Char(AnsiChar)、WideChar 与其编码的相互转换

    );    );   {返回: A }  c := Char($41);  {返回: A }end; ];  );     );  {万}  c := WideChar($4E07);  {万}end ...

  4. 自定义UITextField(UITextField重写)

    // CustomField.h #import <UIKit/UIKit.h> @interface CustomField : UITextField @end // CustomFi ...

  5. Day-18&colon; 电子邮件

    ---恢复内容开始--- 假设要从**@163.com发送邮件到**@sina.com,会经过下面几个过程: 首先,你得使用邮件代理软件(也就是MUA:Mail User Agent),例如Outlo ...

  6. hdu 5645 DZY Loves Balls

    DZY Loves Balls  Accepts: 659  Submissions: 1393  Time Limit: 4000/2000 MS (Java/Others)  Memory Lim ...

  7. CART-GBRT-GBDT

    CART:分类回归树 分类树和回归树的区别:分裂节点时使用的节点非纯度量(最小化准则.特征选择)不一样,修剪树的准则不一样 回归树: 节点非纯度量:平方误差和 区域估计值:均值(在给定的划分下,均值带 ...

  8. iOS逆向之TheOS

    TheOS 被设计为一个在基于 Unix 平台 (Mac OS X.IOS…) 和大多数 的Linux 平台下开发 iOS 程序的集成开发环境.说是集成开发环境,其实就是给我们准备好了一些代码模板.预 ...

  9. dp单调性优化

    跟着书上的思路学习dp的单调性优化觉得还是很容易想的. 数据范围: dp,数据范围是百万,这应该是O(n)的算法了. 首先不难想到设f[i]表示到第i个百米所能达到的最大能量,那么f[n]即为所求. ...

  10. 2018&sol;03&sol;29 每日一个Linux命令 之 ping

    ping 用于测试两及其网络是否通 主要用于检测网络是否通畅. -- 具体语法 ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面&g ...