git 常用命令配置
上篇文章:嵌入式开发 Linux 常用命令系列 3 目录任意跳转命令 – autojump
git 常用配置及命令
可以通过下面命令查看git配置信息
git config --list
config list 分全局和局部:
- 在根目录下执行
git config --list
显示为全局配置 - 在 git 的仓库目录下执行,显示的是全局和局部的配置信息
1.1 git 邮箱配置
设置用户名称与邮件地址。这样做很重要,因为 Git 的每笔提交都会使用这些信息,并且它会写入到每一次提交中,不可更改。
git config --global user.email "邮箱"
git config --global user.name "用户名"
如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论在该系统上做任何事情, Git 都会使用那些信息。
- git alise 别名配置
git config --global alias.ck checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.st status
- git vim 编辑器配置
在执行git commit
的时候,弹出的窗口不是自己想要的编辑器。或者由于另外的一些原因,想要在使用git的时候更换一个编辑器,则可以通过git config --global core.editor
的命令修改为自己想要的编辑器。
git config --global core.editor vim
git 默认编辑器是 nano
,如果恢复默认编辑器,可以使用下面命令进行配置:
git config --global core.editor nano
1.1.1 在本地创建远程分支并切换
git checkout -b demo-4.14 aosp/demo-4.14
很久没有更新了,需要再和远程同步
git branch --set-upstream-to=aosp/demo-4.14 demo-4.14
不用使用git checkout xxx切换到远程分支即可查看代码
git blame aosp/demo-4.4 drivers/pwm/pwm-pxa.c
查看本地分支对应于哪个远程分支
git branch -vv
删除远程分支
git push origin --delete hehe
1.1.2 git 提交与 推 patch
通常提交patch 都是使用下面流程:
git add . //覆盖范围为当前目录及其子目录
git commit -s -a //提交全部修改
git push origin HEAD:refs/for/master
在有些时候只想 git add
修改过的文件也即 “modified files”, 不需要 git add untracked files, 这个时候可以使用 git add -u .
。
1.1.3 git push
我们都知道 push 命令的作用是将本地当前分支的代码推送到远程指定的分支上,其命令的格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
使用 git push
命令将 <本地分支名> 的代码推送到 <远程主机名> 中的 <远程分支名> 上。
<远程主机名> :指的是你想要推送到哪个远程主机中,在我们克隆一个项目的时候,git
会自动帮我们把远程主机起名为 origin,一般情况下是不会去修改这个名字的。
<本地分支名>:是本地分支的名字,可以使用命令 git branch
来查看本地有哪些分支。
<远程分支名>:指的是远程主机中的分支名,如果远程主机没有这个分支,则会新创建一个。
1). 通常写法
git push origin dev:test
将本地的 dev
分支上的代码推送到远程主机名为 origin
中 test
的分支上。如果远程的 test
分支不存在,则会被创建。
2.省略: <远程分支名>
如果本地分支名和远程分支名一样的情况下,可以省略:<远程分支名>
。如果远程主机中不存在该分支,那么会被创建。我们就可以使用命令:
git push origin dev
3. 省略本地分支写法
看下下面格式的解析:
git push origin HEAD:refs/for/master
git push :表示推送代码到远程服务器;
origin : 表示远程的库的名字;
master:表示远程分支的名字。;
HEAD: 表示一个特别的指针,指向你正在工作的本地分支的指针,可以当做是本地分支的别名。git通过它可以知道当前工作区间在哪个分支;
refs/for :表示我们提交代码到服务器之后是需要经过 code review 之后才能进行merge 操作的,而 refs/heads
是不需要的。
1.1.4 git clean
改命令用来删除 一些没有 git add 的 文件(没有tracked过的文件)
-n 显示将要删除的文件和目录
-f 删除 文件,-df 删除文件和目录
恢复git clean方法:
1). 执行git reflog
2). git reset --hard 6e8d3e3
(指定 commit 的 sha 码)
3) 如果效果还不理想的话,采用终极命令 git fsck --lost-found
1.1.5 git stash
作用等同于 git stash
,区别是可以加一些注释,如下:
git stash save “test1”
git stash list
查看当前stash中的内容
git stash pop
将当前stash中的内容弹出,并应用到当前分支对应的工作目录上
1.1.6 git 清除缓存文件
git rm -r --cached .
git clean -fdx .
会清除 untracked 的文件
1.1.7 git bash 自动补全
下载 .git-completion.bash文件。
如果是 cygwin终端可以使用下面命令:
apt-cyg install bash-completion
source ~/.git-completion.bash
1.1.8 git 清除缓存文件
当修改该过文件file之后,再使用 git add file 将其加入缓存中,但是后面发现不需要修改了,这个时候可以使用下面命名将其从缓冲区中删除。
git add file
git status .
git rm --cached file
git clean -fdx . 会清除 untracked 的文件
1.2 git 其它常用配置
1.2.1 Git 忽略文件.gitignore的使用
请参考:
https://www.jianshu.com/p/a09a9b40ad20
https://blog.csdn.net/Saintmm/article/details/120847019
1.2.2 Git 按文件类型添加
$ git add *.h
$ git add *.c
1.2.2 Git status 执行变慢问题
随着时间越长,你每次执行 git status 命令会越来越慢。这是由于本地有过多的缓存造成的。git 为这个问题提供了一个简单的解决方案,那就是:
git gc
这个命令会清理不必要的文件并优化本地存储库,git gc 命令在你的仓库中执行 “garbage collection”,删除数据库中不需要的文件和将其他文件打包成一种更有效的格式。
1.3 repo 使用
repo forall -c
此命令遍历所有的git仓库,并在每个仓库执行-c所指定的命令,被执行的命令不限于git命令,而是任何被系统支持的命令,比如: git log, git status, git checkout等。
repo forall -p -c git statsu
repo forall -p -c git checkout