创建密钥
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
查看当前仓库的状态
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
暂无评论内容