Git命令笔记(基础)

1. Git命令
1.1. Git配置
$ git config --global user.name "John Doe" 设定用户名
$ git config --global user.email johndoe@example.com 设定邮件地址

$ git config --global core.editor emacs 设置文本编辑器

$ git config --list 查看配置信息

$ git help <verb> 获取帮助

1.2. Git基础命令
1.2.1. 取得项目Git仓库等
$ git init 从当前目录初始化

$ git clone git://github.com/schacon/grit.git 克隆仓库(后可加名字)

1.2.2. 记录更新到仓库
$ git add README 添加文件并跟踪

$ git commit -am 'initial project version' 提交文件

$ git status 查看文件状态

$ cat .gitignore 浏览忽略文件设置

📋
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
$ git diff 查看当前文件和暂存区域快照之间的差异,即修改后没有暂存的变化内容
$ git diff --cached 查看已经暂存起来的文件和上次提交时的快照之间的差异

$ rm grit.gemspec 从工作目录删除文件

$ git rm grit.gemspec 在git里记录此次删除操作
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

$ git rm --cached readme.txt 只从跟踪清单中删除,不在工作目录删除
$ git rm log/\*.log 删除所有 log/目录下扩展名为 .log 的文件
$ git rm \*~ 递归删除当前目录及其子目录中所有 ~ 结尾的文件

$ git mv file_from file_to 文件改名操作

1.2.3. 查看提交历史
$ git log 查看提交历史

$ git log –p -2 -p 选项展开显示每次提交的内容差异, -2 则仅显示最近的两次更新

$ git log origin/featureA ^featureA (先fetch)查看远程分支与本地分支相比更新了什么

$ git log --pretty=format:"%h - %an, %ar : %s" 自定义格式

📋
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
26
Scott Chacon Pro Git 2.3节 查看提交历史
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
📋
选项 说明
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指
定格式)
📋
选项 说明
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。
$ git commit --amend 重新提交最后一次修改

$ git reset HEAD benchmarks.rb 取消暂存文件

1.2.4. 远程仓库的使用
📋
$ git clone git://github.com/schacon/ticgit.git
$ cd ticgit
$ git remote -v  #列出所有远程仓库(Git 默认使用origin来标识你所克隆的原始仓库)
📋
$ git remote add pb git://github.com/paulboone/ticgit.git #添加远程仓库
$ git fetch pb # fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支
$ git merge pb/master #合并远程仓库分支到本地分支
$ git push origin master #将本地仓库中的数据推送到远程仓库
$ git remote show origin #查看远程仓库信息
$ git remote rename pb paul #修改远程仓库名 pb->paul
$ git remote rm paul #移除远程仓库 paul
打标签
$ git tag 列出现有标签

$ git tag -l 'v1.4.2.*' 列出v1.4.2系列标签

$ git tag -a v1.4 -m 'my version 1.4' 新建含附注的标签

$ git tag -s v1.5 -m 'my signed 1.5 tag' 签署标签

$ git tag v1.4 新建轻量级标签

$ git tag -v v1.4.2.1 验证标签

$ git tag -a v1.2 9fceb02 后期添加标签,加对应提交对象的校验和(或前几位字符)

$ git push origin --tags 推送标签到远程仓库

$ git config --global alias.co checkout 设置命令别名
$ git config --global alias.last 'log -1 HEAD' 查看最后一条命令(设置别名)

Git分支
分支概念
$ git branch testing 新建分支

$ git checkout testing 切换分支

$ git checkout -b iss53 新建并切换到新分支

📋
$ git checkout master
$ git merge hotfix   #先切换到主分支,再合并其他分支
`$ git branch -d hotfix`    #删除分支
$ git mergetool 调用图形工具界面解决分支冲突

$ git branch 展示所有分支

$ git branch -v 查看各个分支最后一次 commit 信息

$ git branch --merged
$ git branch --no-merged 查看与当前分支合并或者未合并的分支

$ git push origin serverfix 推送分支(仓库名+分支名)
$ git push origin serverfix:serverfixxx 推送分支到指定分支
$ git push origin :serverfix 删除远程分支
$ git push -f origin serverfix 强制重写远程分支

📋
$ git fetch origin
$ git checkout -b serverfix origin/serverfix  #从远程仓库抓取数据后,不会得到新分支,需要自己在远程分支上分化分支 
$ git pull 获取所有远程索引,并把它们的数据都合并到本地分支

衍合
$ git rebase master 衍合分支(使提交历史更清楚,把你所在分支衍合入master)

$ git rebase --onto master server client 检出 client 分支,找出 client 分支server 分支的共同祖先之后的变化,然后把它们在 master 上重演一遍

$ git rebase master server git rebase [主分支] [特性分支]

永远不要衍合那些已经推送到公共仓库的更新!!!

服务器上的Git
$ git clone /opt/git/project.git
$ git remote add local_proj /opt/git/project.git 把本地仓库作为远程仓库添加到Git工程列表

分布式Git
📋
$ git clone (url)
$ cd project
$ git checkout -b featureA
$ (work)
$ git commit
$ (work)
$ git commit
$ git push oringin featureA
$ git checkout -b featureB origin/master
$ (work)
$ git commit
$ git push oringin featureB
$ (email maintainer)
$ git fetch origin      **一般项目工作流程**
项目管理
$ git checkout -b sc/ruby_client master 新建特性分支

$ git apply /tmp/patch-ruby-client.patch 补丁文件为 git diff 或由其它 Unix 的 diff 命令生成
$ git apply --check 0001-seeing-if-this-helps-the-gem.patch 查看补丁是否能够应用到当前分支中

$ git am 0001-limit-log-function.patch 适用于format-patch 补丁

📋
`$ git am --abort`    **放弃掉以前的am信息**
`$ git am --skip`    **跳过这个补丁**
`$ git am --resolved`   **提交修正结果**
`$ git am -3 0001-seeinggem.patch`     **进行3三方合并**
`$ git am -3 -i mbox`    **对于补丁是mbox格式,用-i 进行交互模式,可分步操作**
$ git diff master...contrib 寻找contrib和master的共同祖先然后对比差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式空白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值