git 命令

创建密钥

git config --global user.name 'cppdy813'
git config --global user.email 'cppdy813@163.com'
ssh-keygen -t rsa -C 'cppdy813@163.com'
cat ~/.ssh/id_rsa.pub

初始化仓库

git init       用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。

添加/删除文件

git add 文件/目录
git rm  文件/目录  -rf

提交文件

commit 提交文件的注释   git commit -m '第一次版本提交'
git commit:是将本地修改过的文件提交到本地库中;
git pull: 把远程的记录拉取到本地
git push:是将本地库中的最新信息发送给远程库;
git push <远程主机名> <本地分支名>  <远程分支名>
git pull<远程主机名> <本地分支名>  <远程分支名>
git pull origin K602
特殊情况:
	把带有git的代码提交到一个远程仓库,并且在远程仓库中新建分支
	git remote add gitlab git@192.168.0.70:longrz/MT8788_V5.196.git
	git push gitlab MT8788_V5.196:DingJie

注意

git push 之前一定要git pull,把远程的代码拉倒本地,不然会有分叉.
如果远程有提交了, git pull 拉下来会导致分叉,使用git pll --rebase
图片[1]-git 命令-it播客网
图片[2]-git 命令-it播客网

查看当前仓库的状态

git status	查看修改了的文件
git show 7500152 --name-only	查看这个提交中的文件
git log --oneline	查看本地已提交的仓库

对比改了哪些东西

执行 git diff 来查看执行 git status 的结果的详细信息。

克隆代码

克隆远程仓库: git clone     git clone -b K602 git@192.168.0.70:mtksmart/XY5501_M0.git  K602_BEAT3
			K602分支拷贝到本地重命名K602_BEAT3
克隆本地仓库
	git clone mt5.117/ mt6765                 自己电脑
	git clone   fux@192.168.50.88:/sda/fux/XY001/alps-mp-r0.mp1-V8.87-5g              局域网电脑

回退

吧暂存区文件拉回工作区
	git reset HEAD filename(或者文件夹)
	git reset –soft HEAD~1     回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
	git reset –hard HEAD~1    回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
吧服务器的撤销
	首先把git在本地弄好啊
	然后再 git push -f origin  分支号
	git push -f origin XY001-39
		强制还原前一定要看下git branch 是否是当前分支
吧工作区的修改还原
	git checkout 文件/目录
回退到具体的版本
	git reset --hard 4fe93d4  修改的文件全部还原
	git reset --soft 4fe93d4 这个是修改的文件还在暂存区

git 切换分支

git branch -a   列出所有的分支
git checkout branchName
git 本地新建分支
git push origin 你的分支名称

打patch

抓补丁

i. 单个commit的补丁
	1) git format-patch -1 commitid是提 取单个commitid对应的patch
	2) git format-patch HEAD^    生成最近的1次commit的patch
	3) it format-patch HEAD^^     生成最近的2次commit的patch
	
ii. 多个commit的补丁
	1) git  diff comit1 commit2 > test.patch
	2) git format-patch comit1..commit2
	3) comit1是先前提交的,但不包含commit1.commit2是以后的   
	4) git format-patch -M 0c6f401  从 0c6f401这个提交开始打包(但0c6f401这个提交不打包)

使用补丁

使用补丁
	i. 先检查patch文件:git apply --stat newpatch.patch
	ii. 检查能否应用成功:git apply --check newpatch.patch
	iii. 打补丁:git am  newpatch.patch
	iv. 尽量不要用这种命令, 文件手改比较好

与其他命令配合

git status | grep modified | awk '{print $2}'  | xargs -i cp --parents {}  ./hdmi/
git diff 93e96be 3501a99 --name-only | xargs  -i cp --parents {}  ./ota/
git status | grep modified | awk '{print $2}' | xargs -i git diff
git status | grep modified | awk '{print $2}'  | xargs -i touch {}

不常用的功能

git的设置

a. 启用长路径支持 git config --global  core.longpaths true
b. 服务器下载增加最低速度命令
	git config --global http.lowSpeedLimit 0
	git config --global http.lowSpeedTime 9999
	可以避免多人下载时,速度过慢导致下载速度过慢从而停止
c.忽略文件mode的变化
       	git config --add core.filemode false
c. 删除所有的未跟踪和修改
        git checkout . && git clean -dxf

查看一个文件的历史修改

a. git log --oneline  ./sound/soc/codecs/mt6359.c

删除git

有时拿到一套代码需要把他以前的git删掉重新建立新的git跟踪

find . -type d -name ".git"|xargs rm -rf
find . -type d -iname ".git" -exec rm -rf {} \;
find ./ -name ".gitignore"|xargs rm -rf
find ./ -name ".gitignore"|xargs rm -rf
find .  d -name ".git*"
打包子目录下的gitignore
    find ./ -name  ".gitignore" |xargs  -i cp --parents {}  ./uboot_git/

本地不记录某个文件

git update-index --assume-unchanged
git update-index --assume-unchanged   LA.QSSI.13.0/LINUX/android/vendor/qcom/proprietary/commonsys-intf/QIIFA-fwk/plugin_interface.pyc
git update-index --assume-unchanged -r `find . -name "*.pyc"`
恢复记录   git update-index --no-assume-unchanged
find ./LA.VENDOR.13.2.1/LINUX/android/  -name ".pyc" |xargs  -i git update-index --assume-unchanged
find ./   -name ".pyc" |xargs  -i git update-index --assume-unchanged

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容