Git基础操作
- 仓库配置
-
- 代码提交
-
- 代码管理
- 分支操作
- patch操作
- 查看指定文件的修改历史
- 统计代码量
仓库配置
初始化仓库
1,安装
sudo apt-get install git
2,名字、邮箱、检查
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@xxx.com"
git config --list
3,生成SSH、测试
ssh-keygen -C 'xxx@xxx.com' -t rsa
cat ~/.ssh/id_rsa
4,git init
5,git clone
查看当前所在仓库
git remote show origin
修改远端仓库
git remote rm origin #删除旧的远端仓库
git remote add origin git@your_repo.git #增加新的远端仓库
代码提交
基础操作
git status 查看当前状态
git branch 查看本地分支
git checkout 切换分支
git pull origin从远端拉分支
git add *
git commit -m ”内容“
git push 向远端提交分支
tag操作
git tag -a v4.17.0.148 -m "4.17.0.148"
git push origin --tags
git tag -d test #删除本地tag
git push origin :refs/tags/test #删除远程tag
删除最后N次提交
git reset --soft HEAD^ 取消commit,保留更改内容
git reset --hard HEAD~N (N为次数)
git push orange 分支 -f #强制覆盖
储藏
git stash list
git stash apply stash@{0}
代码管理
分支操作
git branch -a 查看当前分支
git push origin --delete ota 删除远端名为ota的分支
git checkout -b dev 开名为dev的分支
git merge dev 合并dev分支到当前分支
git branch -d dev20181018 删除本地分支
patch操作
# 生成fatch
git format-patch -M master #当前分支所有超前master的提交
git format-patch -s SHA值 #此SHA值提交以后的所有PATCH
git format-patch -1 SHA值 #此SHA值的提交patch
git format-patch -n #从master售前n个提交的内容
git format-patch SHA值 #从SHA值开始(不 g含SHA值当次)之前的N次提交,一次提交生成一个patch,时间越近,序数越大
git format-patch -n SHA值 #从SHA值开始(含SHA值当次)之前的N次提交
git format-patch HEAD^ #生成最近的1次commit的patch
git format-patch HEAD^^ #生成最近的2次commit的patch
git format-patch HEAD^^^ #生成最近的3次commit的patch
git format-patch HEAD^^^^ #生成最近的4次commit的patch
git format-patch <r1>..<r2> #生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
git format-patch <r1> #生成某commit以来的修改patch(不包含该commit)
git format-patch --root <r1> #生成从根到r1提交的所有patch
# 打patch
$ git am 0001-limit-log-function.patch # 将名字为0001-limit-log-function.patch的patch打上
$ git am --signoff 0001-limit-log-function.patch # 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,
# 作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
$ git am ~/patch-set/*.patch # 将路径~/patch-set/*.patch 按照先后顺序打上
$ git am --abort # 当git am失败时,用以将已经在am过程中打上的patch废弃掉
# (比如有三个patch,打到第三个patch时有冲突,那么这条命令会
# 把打上的前两个patch丢弃掉,返回没有打patch的状态)
$ git am --resolved # 当git am失败,解决完冲突后,这条命令会接着打patch
(注:git apply是另外一种打patch的命令,其与git am的区别是,git apply并不会将commit message等打上去,
打完patch后需要重新git add和git commit,而git am会直接将patch的所有信息打上去,而且不用重新git add
和git commit,author也是patch的author而不是打patch的人)
$ git apply --stat 0001-limit-log-function.patch # 查看patch的修改内容(文件、行数)
$ git apply --check 0001-limit-log-function.patch # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
查看指定文件的修改历史
# 查看近m次提交和近n次提交之间的修改文件:注意m比n更久
git diff --stat HEAD~m HEAD~n
# 查看修改详细内容
git diff HEAD~m HEAD~n
# 这个指令可以看两次commit之间有哪些文件改动
git diff commit-id1 commit-id2 --stat
# 这个指令可以看两个分支之间有哪些文件差异
git diff branch1 branch2 --stat
# 这个指令可以看两个tag之间有哪些文件差异或者改动
git diff tag1 tag2 --stat
# 可以看到一个文件的改动,以commit的形式展现
git log file
# 可以看到具体一个文件的历史改动记录
git log -p file
统计代码量
find . "(" -name "*.c" ")" -print | xargs wc -l
find . "(" -name "*.h" ")" -print | xargs wc -l
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)