【嵌入式开发 Linux 常用命令系列 4 -- 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 都会使用那些信息。

  1. 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
  1. 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 分支上的代码推送到远程主机名为 origintest 的分支上。如果远程的 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.1.9 git rebase -i 的使用

git rebase -i 的使用

git rebase -i change_id(目标patch的前一个change_id)

对应的 comment 改成 edit 模式, 重新修改 patch(修改甚至可以是git reset --hard HEAD^:也即去除该patch)

git commit --amend -s
git rebase --continue

git log 之後如下显示,这个时候如果想修改 test2.c 这个文件。

git log
commit 25db05a5dab80237a72bf4df3122fe17f27b56e6 (HEAD -> master)
new: test:test3.c

commit eaffc8a491e8e1a44bc4375caf489ab31a39ff6a
new: test:test2.c

commit 5e9690990bc707ad4269e931761563494cbea290 (origin/master, m/master)
new: test:test1.c

第一步:执行 git rebase -i change_id 如下:

git rebase -i 5e9690990bc707ad4269e931761563494cbea290

pick eaffc8a49 NEW: Profile: add udp profile
pick 25db05a5d NEW: UDP: add header files for udp version

# Rebase 5e9690990..25db05a5d onto 5e9690990 (2 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

第二步:將上面内容的一行 pick 修改为 edit,然后 wq 退出,会输出下面提示信息:

Stopped at eaffc8a49...  NEW: Profile: add udp profile
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue

第三步:修改需要修改的文件, 然后提交:

root@root: git commit --amend file1.c file2.c
root@root: git rebase --continue
Successfully rebased and updated refs/heads/master.
git format-patch -18
git am *.patch

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

主公CodingCos

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

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

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

打赏作者

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

抵扣说明:

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

余额充值