git checkout master 切换至远程branch 并创建本地git 仓库
git stash 暂存工作区文件
git pull -r rebase 远程branch 到本地目录
git stash pop 释放已存储代码
git commit --amend -m "message" 修改git 最后一次commit message
git push origin HEAD:refs/for/master 提交代码到远端
git status 查看所有库目录变化
git status . 查看当前库目录变化
git log 查看所有库目录commit变化
git log . 查看当前库目录commit变化
git log <filename> 查看指定文件变化
git log -p <commit> 查看commit --patch 的修改
git show <commitId> 查看指定 commit 的变化
git show <commitId> --stat 查看指定 commit 中变化的文件名
git show <commitId> <文件名> 查看指定 commit 中变化的指定文件内容
git branch 列出本地分支 。
git branch –r 列出远程分支。
git branch –a 列出本地及远程分支。
git branch branchname 创建/切换一个本地分支。
git branch -d <branch> 删除分支; -D 强制删除
git clean -df 删除当前目录下没有被track 的文件和文件夹
git stash
git stash save <stashname> 保存当前修改到stash list
git stash list 列出栈中 stash 的名称及位置
git stash show stash@{0} 列出指定stash
git stash pop stash@{0} 退出栈中指定 stash
git stash drop stash@{0} 遗弃 stash 保存
恢复使用
在工作区:
git checkout -- filepathname 放弃单个文件的修改/找回删除的文件 - 恢复暂存区到工作区
git checkout -- . 放弃当前路径所有文件的修改
在缓存区:
git reset HEAD filepathname 取消暂存文件的修改,撤销 git add
在本地仓库:
git reset --hard HEAD^ 撤销 commit 及暂存区和工作区的修改
没被跟踪的文件
git clean -fd 目录也一起删掉
patch 的生成和应用
git diff > a.patch 存储差异成为 .patch 文件
git format-patch commit_1 commit_2 将已经提交的代码打成 patch;git diff 和 git format-patch 区别是 format-patch 无需指定文件名,生成的内容,含提交变化的文件并且已经包含 commit message
git format-patch -2 -1 最近一次提交,-2 第二次提交,-3 第三次提交
git apply a.patch 应用 .patch 文件
git config
git config -l 查看本仓中的本地和远端的 git 配置
git config --local -l; 查看本地仓配置
git config --global -l;
git config --system -l;
git config --local core.filemode false 排除 git 检查本地 file mode DAC 权限不一样
git config --system core.filemode false
git config --global core.filemode false
git diff 查看修改代码的不同
git push origin HEAD:refs/for/master push 代码到远端
commit message
[BugID/ReqID/Init/HW-Para/3rd/Release] XRV3-164 BugID, ReqID, Init xxx机型, 硬件参数, 方案商, 应用, 驱动等第三方的版本
[Desc/Impact] 改动描述或者影响范围的描述
[NLR] Before Quality Control Before Quality Control / No logic change / NLR:3rd / NLR:N
[SC] Y (static check) 后填写是否经过本地静态代码检查合格 (可选字段)
[UT] Y (Unit Test) 后填写是否经过本地单元测试合格(可选字段)
[FileNum] 1 (file number) 该项填写修改的文件数量
[Sync] N 后填 Y或者N,代表是否从别的分支同步过来 (可选字段)
[Market] N 主要针对海外市场,填写内容为:EM/EU/SA/US/JP/ALL
git clone with hooks
git clone ssh://zhengsiming@192.168.101.80:29418/NewDisplay/XRV3R2651/android/platform/system/core -b <分支名> && scp -p -P 29418 zhengsiming@192.168.101.80:hooks/commit-msg <git库名>/.git/hooks/
用于从远程仓库克隆一个指定分支名的代码库到本地计算机,并且-p`: 这是`scp`命令的选项,表示保留文件的修改时间和访问时间,`-P 29418`: 这是`scp`命令的选项,指定SSH连接的端口号,从远程服务器复制一个名为 "commit-msg" 的钩子脚本文件到本地Git仓库的hooks目录中
git pull 导致的 merge conflict
git fetch --all
git reset --hard origin/master
git checkout . && git clean -df
push后无法再次push:Unpack error
现象:当git commit时格式错误,我们并没有注意到,但是git push后在公司官网会提示格式错误,所以这个时候需要从新对格式进行更改,这个 时候可以使用git commit --amend命令来对commit 的内容进行更改,而更改后再次使用git push时会出现错误。
原因:这是由于在默认的情况下Git push 会向服务器推送时做优化处理,从而来将发送的包降到最低。而这样优化的方式是比较本地仓与远程仓的内容,并将差异的部分上传,这个时候Git push 默认使用--thin选项。而我们上面的更改只是对commit的内容进行了修改,而没有对本地仓中的内容进行修改,所以他们比较会发现这个两个仓中的内容没有差别,所以他认为这次push是没必要的,所有就提示失败了。
解决办法:使用:git push 加 --no-thin参数来push到远程仓。
repo sync 整仓与子仓分支不一致导致分支 detached
在子仓切换至其他分支,并将问题分支删除
使用 git checkout -b <原分支> -t <远端分支(remote后的字段)>
远程仓库更新地址
ssh-keygen -f "/home/zhengsiming/.ssh/known_hosts" -R [192.168.101.80]:29418
Gitee
git config --global user.name 'Siming'
git config --global user.email '12068457+siming1999@user.noreply.gitee.com'
Gitee报错Message: LFS only supported repository in paid enterprise.: exit status 128
$ rm .git/hooks/pre-push
$ git push -u origin "master"