git版本管理

注:新手可以先看 git基础使用章节, 因为使用频繁度,吧常用的命令放在了前边。

git常用操作

撤销所有的git add文件

提示使用 git reset HEAD 来取消缓存区的修改。
不添加参数,撤销所有缓存区的修改。

ssh key产生

  1. # 产生ssh key
  2. sudo apt-get install openssh-server openssh-client git
  3. ssh-keygen -t rsa -C "baiyang0223@163.com"
  4. cat ~/.ssh/id_rsa.pub

git本地配置

  1. baiy@inno-NUC8i3BEH:pciutils-3.7.0$ cat ~/.gitignore
  2. *.a
  3. *.so
  4. doc/*
  5. a.out
  6. *.S
  7. *.i
  8. Thumbs.db
  9. ehthumbs.db
  10. Desktop.ini
  11. # Python:
  12. *.py[cod]
  13. *.so
  14. *.egg
  15. *.egg-info
  16. dist
  17. build
  18. tags
  19. # My configurations:
  20. db.ini
  21. deploy_key_rsa
  22. .cproject
  23. .project
  24. .settings
  25. *.kdev*
  26. cscope.*
  27. baiyang_build.sh
  28. #rootfs.cpio
  29. image.ub
  30. system.dtb
  31. .vscode
  32. kernel_fdt.its
  33. baiy@inno-NUC8i3BEH:pciutils-3.7.0$ cat ~/.gitconfig
  34. [core]
  35. excludesfile = /home/baiy/.gitignore
  36. editor = vim
  37. [user]
  38. name = baiyang
  39. email = baiyang0223@163.com
  40. [alias]
  41. st = status
  42. ci = commit
  43. co = checkout
  44. br = branch
  45. lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  46. [color]
  47. ui = true

git查看文件修改

在Linux内核中,我们代码经常出现:

  1. #include <linux/version.h>
  2. #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  3. // 旧版本代码
  4. #else
  5. // 新版本代码
  6. #endif

那么问题来了,如何知道某个特性在哪个版本引入的?文件发生了什么修改?

  1. # 查看文件修改历史记录
  2. git log --pretty=oneline [filename]
  3. # git blame追溯一个指定文件的历史修改记录
  4. git blame [filename]
  5. # 图形界面查看某个文件修改历史记录
  6. gitk [filename]
  7. # tig工具*** 强烈推荐

注:网上各种图形界面,经过测试,只有tig和gitk是速度最快得。
gitk使用说明:gitk使用

git打包补丁

在使用中常遇到:整理当前版本与某个版本得修改,然后将补丁打上
方法1:打补丁,简单,但会丢失合并信息,不推荐

  1. git diff sha1_1 sha1_2 > patch
  2. patch -p1 < ./patch

方法2:cherry-pick

  1. git checkout -b tag_xxx xxx # 根据tag创建分支
  2. git cherry-pick sha1 # 当前分支合并一个提交
  3. git cherry-pick A^..B # 将[A,B]之间得提交合并

git远程服务器同步

git如何将分支与远程分支关联

  • 用 git checkout —track origin/branch_name 来在本地创建一个与branch_name同名分支跟踪远程分支。
  • 用 git push —set-upstream origin branch_name 来在远程创建一个与本地branch_name同名的分支并跟踪;

**

pull操作

将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
git pull origin
**

push操作

将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>:<远程分支名>
将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>
将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
git push origin
同样的,推荐使用第2种方式,git push origin <远程同名分支名>

git基础使用

1.官方文档

git 查看修改

git diff sha1 sha2 —name-only # 只查看某几个版本的文件变动

git 忽视文件权限
git config core.filemode false

修改提交日志
git commit —amend