分类 Version 下的文章

生成 patch

  • 针对文件的生成 patch

    #只想 patch Test.java 文件
    git diff Test.java > test.patch
    # 把所有的修改文件打成 patch
    git diff > test.patch
  • 针对 commit 生成 patch
    $ 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 -1 <r1>     #生成单个commit的patch
    $ git format-patch <r1>        #生成某commit以来的修改patch(不包含该commit)
    $ git format-patch --root <r1> #生成从根到r1提交的所有patch

应用patch

git am 会直接以原 patch 的作者生成 commit, git apply 则需要自己去 commit.

  • 检查 patch

    $ git apply --stat 0001-limit-log-function.patch  # 查看patch的情况
    $ git apply --check 0001-limit-log-function.patch # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
  • 应用 patch
    $ git apply xxx.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

参考

https://blog.csdn.net/u013318019/article/details/114860407
https://blog.csdn.net/liuhaomatou/article/details/54410361

ubuntu 14.04 因为没有 systemd 的原因,所以装不了新的 gitea,只能安装支持启动脚本的 gogs。

  1. 创建 git 用户,并在 git 用户下,去gogs 官网下载最新的版本 https://gogs.io/docs/installation/install_from_binary ,然后解压,运行 ./gogs web 即可。

  2. 配置的时候,注意修改 域名和 URL 两项为自己的 IP 或者域名都行。

  3. gogs/scripts/init/debian/ 目录下面的 gogs 复制到 /etc/init.d 下面,并修改为可执行权限。

  4. update-rc.d gogs defaults,把启动脚本加入启动列表,然后重启,或者 /etc/init.d/gogs 来启动 gogs。

如果需要删除启动,update-rc.d -f gogs remove

参考

https://blog.ilemonrain.com/linux/linux-startup-run.html

1. 首先使用命令 ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/github_id_rsa 来生成 github 的密钥。就是 github_id_rsa 和 github_id_rsa.pub

2. 创建或者修改 config 文件。 vim ~/.ssh/config

Host github
        HostName github.com
        User git
        IdentityFile ~/.ssh/github_id_rsa

注意上面如果没有 User git,那么使用 ssh -T github 会以当前的用户名来登录 github,但是正常情况下,当前 linux 的用户名和 github 的用户名不会一样,所以会错误。这里设置 user 以后,会以 git@github.com 来登录,这时候,就可以了,返回信息是: Hi ptz1986! You've successfully authenticated, but GitHub does not provide shell access.

3. git clone 可以使用简化的方式来操作。

git clone github:your_name/your_repo 相当于 git clone git@github.com:your_name/your_repo.git

4. gitee 也是类似

Host gitee
        HostName gitee.com
        User git
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/gitee_id_rsa

ssh -T gitee 会提示 The authenticity of host 'gitee.com (180.97.125.228)' can't be established. 直接按 yes 就可以了,会自动向 known_hosts 里面添加 gitee 的内容,下次就不需要了。

5. 本地的 gitlab 也是类似

Host gitlab
        HostName xxx.xxx.xxx.xxx
        User gitlab
        IdentityFile ~/.ssh/id_rsa

注意这个 User 可以看你 git clone 时候,@ 前面的那个就是。

参考: https://zhuanlan.zhihu.com/p/31253789
https://blog.csdn.net/u012860695/article/details/88953802
https://www.cnblogs.com/okokabcd/p/9065534.html
https://www.jianshu.com/p/c30e1f787b92
https://gitee.com/help/articles/4229#article-header0
https://blog.csdn.net/M_WBCG/article/details/79156781

git 生成 ssh key,执行下面代码即可:

git config --global  --list 
git config --global  user.name "这里换上你的用户名"
git config --global user.email "这里换上你的邮箱"
ssh-keygen -t rsa -C "这里换上你的邮箱"

id_rsa.pub 把这个文件当中的 key 放到 服务器配置里面即可。

参考: https://blog.csdn.net/lqlqlq007/article/details/78983879 https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5

git 仓库迁移两步就够了。

  1. 从原仓库把整个仓库拉下来。

    git clone --bare git://192.168.10.XX/git_repo/project_name.git
  2. 把仓库推到新的仓库里面去。

    cd project_name.git
    git push --mirror git@192.168.20.XX/path/to/path/new_project_name.git
  3. 如果有分支或者tag没有推送上去
    git checkout branch_1
    git config --unset core.bare
    git reset --hard
    git push -u origin --all
    git push -u origin --tags

参考: https://www.cnblogs.com/ZhangRuoXu/p/6706530.html
https://blog.csdn.net/Hungryof/article/details/86521835
https://www.codenong.com/40310932/
https://www.cnblogs.com/pansidong/p/7773873.html

  1. 远程建立仓库
  2. vcs --> import into version control --> create git respository
  3. 选中整个工程(project 页面) vcs --> git -> add
  4. vcs --> git --> remote 配置远程仓库
  5. vcs --> update project --> merge --> ok
  6. vcs --> git --> commit
  7. 在项目目录下打开 git bash,输入 git pull origin master -–allow-unrelated-histories
  8. vcs --> git --> push

参考: https://www.jianshu.com/p/059ed1e01229 https://blog.csdn.net/qq_30389893/article/details/90600250