git使用笔记
记录自己在使用git中所用到的命令,算是半个笔记吧~
git merge & git rebase
git初次运行时的配置
三个地方
- 系统级别,/etc/gitconfig, 修改此选项时需要加上
--system
选项 - 当前用户级别,~/.gitconfig, 修改此选项时需要加上
--global
选项 - 当前仓库级别,.git/config。
低级别覆盖高级别的配置信息。
配置信息
- 用户名
git config --global user.name "John Doe"
- 用户邮箱
git config --global user.email [email protected]
- 编辑器
git config --global core.editor vim
查看信息
- 查看所有配置信息
git config --list
- 查看某项配置信息
git config user.name
忽略文件
.gitignore
文件忽略不想进行版本控制的文件。
参考https://github.com/github/gitignore
命令的详情
git add
三个作用:
- 添加追踪
- 添加到暂存区
- 标记冲突文件状态为已解决
git status -s
如果嫌弃不带-s
的命令输出的信息太繁杂,那么可以使用这个。
新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。
出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。
查看修改
git diff
查看尚未暂存的文件更新了哪些部分git diff --staged
查看已暂存的将要添加到下次提交里的内容
提交更新
git commit
-m 添加一段信息,作为提交说明
-a 跳过暂存区,直接将已追踪的文件暂存起来并提交
–amend 此次提交的结果替代上次提交的结果
删除文件
git rm
从已跟踪文件清单中移除(确切地说,是从暂存区域移除),并连带从工作目录中删除指定的文件
-f 删除之前修改过并且已经放到暂存区域的文件
–cached 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中
移动文件(或重命名)
git mv
等价于
1 | mv |
查看提交
git log
-p 显示每次提交的差异
-p -2 显示最近两次的差异
–stat 每次提交的简略的统计信息
–graph 显示 ASCII 图形表示的分支合并历史。
–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和format(后跟指定格式)。
移除暂存文件
git reset HEAD <file>...
将文件从暂存区移除
撤销文件的修改内容
git checkout -- <file>...
将此文件做的文件全部撤销
使用总结
git基本命令
git init
在执行命令的目录下创建git仓库
git add *
添加所有的文件到缓存区
git commit * -m
提交所有追踪的文件到git仓库
git pull origin master
从远程仓库拉代码到本地git仓库
git push origin master
将自己的代码推送到远程git仓库
创建新的分支
git branch
显示所有的分支
git branch -a
显示所有的分支包括远程的分支
git checkout -b branch_name
创建branch_name分支并切换到该分支上
git checkout branch_name
切换到branch_name分支上
关于.gitignore文件
这个文件顾名思义是起到忽略作用的,在git仓库中使用此文件,将不需要添加进git仓库的文件排除在外。可是在使用的时候,会遇到向其中添加了文件名,却
不起作用的情况。很奇怪,参考网上的说法,当已经添加该文件进入git仓库后,再在.gitignore中除去该文件,就会遇到这种情况,我就是属于这种情况,这时需要将其从仓库中删除,然后再执行git add
时就会忽略掉该文件..gitignore只对未追踪的文件有过滤效果。可参考如下代码
1 | git rm -r --cached . |
关于本地分支与远程分支的链接关系
当从远程仓库上面拉下代码之后,其中有若干分支,如若想在本地建立一个分支,并使之与远程分支中的某个分支对应,那么该如何操作呢?
git checkout --track origin/branch_name local_branch_name
这个命令会自动创建local_branch_name
,如果它已经存在了,那么将执行失败~
查看、删除远程仓库分支/Tag
试了试将所有的feature分支都推送到远程仓库,后来发现那个分支基本上没啥用,在将feature分支merge到dev分支上后,feature分支就一直处于当初的那个状态,当dev一直向前走的时候,你再次回到该feature分支,相当于回到了dev分支之前的某个节点,因此我认为将其推送到远程仓库是没有多大的意义的,所以动起了删掉所有本地和远程仓库中已merge的feature分支。
首先是查看远程仓库里面所含有的feature分支:
1 | asahi@asahis-MBP ~/AndroidStudioProjects/NHKNews master git branch -a |
当使用git branch -d feature-main-page
之后,得到的结果如上,可是我只是删除了本地的分支,远程的分支依然还在,该如何删除这个远程仓库里面的分支呢?有git命令为git push origin --delete origin/feature-main-page
,可是出现错误,不能删除,因此试了另外一个命令git push origin :feature-main-page
,成功删除。然后对于feature-remote分支,直接使用前条命令,可将本地与远程仓库里面的分支一起删除.
再次使用git remote show origin
,查询得到的结果如下:
1 | * remote origin |
总结:超强的总结