git

WIP=work in progress 使用说明原文

文件状态: untracked, unmodified(git commited), modified, staged/cached(git added)

HEAD: the head of the current branch. Last commit snapshot, next parent。“提交~”表示其父提交,后面可再加数字表示其前几提交;类似的,^表示其原始提交。

Index: Proposed next commit snapshot ↑commit ↓reset --soft HEAD~

working tree: Sandbox ↑stage ↓(from Index) reset ↓(from HEAD) reset HEAD~

clean working tree: ↑modify ↓(from HEAD) reset --hard HEAD~

引自Git远程操作详解

 

^{reference}或--not {reference}表示非该引用

{reference}^{number} 表示指定引用后指定数目的提交,默认为1. “引用”如HEAD或分支名。^能连续多次,连续两次与~作用相同,^与~也能混合使用。

{reference}..{reference}表示两个引用之间的所有提交,引用默认为HEAD。

{reference}...{reference}表示两个引用之一且非两个同时的所有提交

 

简要显示状态:git status -s

 

不统计不在库中的文件,以加速状态显示:git status -uno

.gitignore:星号开始的行被忽略;目录名以斜线结束;以叹号开始的行不被git忽略。

将staged与上次的提交比较:git diff --staged

与已经staged状态比较:git diff --cached

git difftool 显示图形界面的git diff

# to use vim for diff
git config diff.tool vimdiff
# to edit all files in a row
git config --global difftool.prompt false
# git d to invoke git difftool
git config --global alias.d difftool

建立初始库:git init

取库:git clone 用户名@地址[:端口]/路径 [--mirror/reference=目录]

mirror参数表示成为远端的镜像,下次取时用reference指明之前的目录,与远端相同的代码就会从本地取。

 

git add -i 显示代码状态,并可选择更新、添加、比较、回退、做补丁。回答序号时如果需要多选 ,则用逗号分隔,直接回车后才确认:如选择更新,然后写要更新的文件序号(多个可用逗号分隔)回车,然后可再继续写,最后直接回车,才确认操作。选择差别后,先选择文件,才显示其差别。

add和reset 命令支持--patch参数,可选择操作的具体内容。

 

git commit -m "标题"

 

git commit -a=git add; git commit,但是不增加新文件

git commit --amend

 

git rm,如果不想实际删除本地的文件,则加--cached参数;可用通配符。

git mv

批量修改提交记录

git rebase -i,将需要改的提交由pick改为edit。对每个回滚的提交进行修改、git commit --amend、git rebase --continue

保存

保存当前状态以便切换分支:git stash [save],如果也需要保存不在库(index)中的(untracked)文件,加-u参数。加--patch参数则会逐个文件询问是否保存。

显示保存的状态:git stash list

取回(重现)保存的状态:git stash apply 名字形如stash@{0},默认为最近的一个保存。然后,git stash --index,可继续将之前已经stage的文件(git added)恢复状态。

删除保存的状态:git stash drop

git stash pop=git stash apply; git stash drop

 

恢复

回退提交:git reset,后面写提交(回退到该提交),可加文件名,默认为HEAD,则与add相反,unstaging,修改Index;可加参数--soft或--hard,见本文开始处描述。

git revert,与commit相反,后面加提交号:是回退该提交,而非回退到该提交!失败后,加参数:--continue继续;--abort取消;--quit中止。

清空本地修改:git clean,参数-i表示需要提问确认

删除不在库中的文件:git clean -f -d,如果也要删除在.gitignore中的文件,再加-x参数。

git checkout 如果写提交号,而不写文件名,则会移动当前HEAD,并处于分离分支状态,可继续以“git checkout -b 分支名”建立分支。

从库中删除最近若干提交:git rebase -i HEAD~想删除的数量加一,然后推送到服务器git push origin +master

日志

git log -数字 指定显示修改的数目

git log -p 显示所有修改详情

git log --name-only 显示修改的文件名,如果还要显示各文件修改的行数,则改用--stat参数

限制显示的提交的时间:git log --since=时间,since可换为until或before或after。

git log --author,author亦可换为commiter。

git log --grep 搜索提交的标题。如果同时使用grep与author,则还需要--all-match参数,否则为满足两者条件的任一条件,而非其交集。

git log -S搜索提交的内容

git log --graph 显示关系树

git format-patch 根据提交生成补丁文件,其控制生成对象范围的参数与log命令的类似。生成出的文件用git apply {文件名}使用

 

分支与远端

 

 

  • 新建本地分支:git checkout -b 分支名 = git branch 分支名; git checkout 分支名
    新建对应指定远端分支的本地分支:git checkout -b 本地分支名 远端名/远端分支名
  • 在本地分支间切换:git checkout 分支名
    当该分支名在远端也存在时,则本地分支会对应该远端分支
  • 切换本地分支对应的远端分支:git branch -u 远端名/远端分支名
  • 合入所有修改:在需要合入的目标分支上,git merge 需要合入的源分支名
    或,在临时分支上,git rebase 最终分支名,之后,最终分支上fast forward就能得到临时分支上的修改
  • 删除本地分支:git branch -d 分支名
  • 合入修改有冲突时:用git mergetool修改后commit
  • 列本地分支:git branch,第一列为星号的是当前分支(HEAD),其它为空格
    git branch -v还会显示各分支最后一个提交的标题
    git branch -vv还会再显示各对应的远端分支名
    参数--merged和--no-merged控制只显示已经(包括当前分支)或尚未(这些分支不允许直接用-d参数删除,需要用-D)合并到当前分支的分支
  • origin是默认的远端(服务器)的名字
    master是默认的分支名。所以本地分支默认是master,远端是origin/master
  • 添加远端名字:git remote add 名字 地址
  • 显示远端名:git remote,加参数-v可显示地址;加参数show显示详情,后面可再加远端名,默认是origin;加三个参数rename、原名、新名,可更改远端名;加两个参数rm、名,可删除到远端的关联。
  • 获取远端修改(不合入):git fetch,后面可加远端名(当非origin时)
    --all参数可将获取所有远端的修改
  • 合入远端修改:git pull=git fetch;git merge或rebase
  • 提交到远端:git push 远端名 本地分支[:远端分支],如果两个名相同,则不用写可选部分
  • 删除远端分支:git push 远端名 --delete 分支名

 

标签tag

 

轻量级lightweight标签指向指定提交:添加标签用git tag 标签名。

注释型annotated标签包含打标签人的信息等:添加标签用git tag -a 标签名,后面加加参数-m和标题字符串。

打标签时可加提交号作为参数对该提交打标签。

显示所有标签: git tag, 结果按字母排序。加参数-l后加字符串可对结果进行过滤。

git show 后面可加标签名

提交到远端:git push 远端名 标签名或--tags表示所有标签

获取内容:如git checkout -b 分支名 标签名

本地删除:git tag -d 标签名

远端删除:git push --delete origin 标签名

 

命令简化

git config --global alias.简化名 命令字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值