2015年10月21日 14:58:24

git常用命令教程

作者: 
本文根据自己接触的git命令整理。

安装git

http://git-scm.com/download

使用git@osc

  • 1. 配置账户
  1. git config --global user.email admin@zjmainstay.cn
  2. git config --global user.name "Zjmainstay"
  3. git config --list //查看配置信息
  4. git config --global --unset user.name //删除user.name
  • 2. 生成SSH公钥
  1. 安装git,打开Git Bash
  2. ssh-keygen -t rsa -C "admin@zjmainstay.cn"
  3. 一路回车,之后会生成id_rsaid_rsa.pub
  4. id_rsa.pub为公钥,把它贴到托管网站(如github, git@OSC
  5. http://git.oschina.net/keys
  6. 添加一个公钥,把id_rsa.pub内容全部拷贝进去。
  7. 使用:
  8. 启用Git Bash,输入命令git clone `SSH地址`(别用HTTPS地址),在提示认证的时候输入yes,则可通过SSH认证访问
  • 3. 本地创建git库
    打开Git Bash,使用以下命令创建
  1. mkdir Git-Test //创建目录
  2. cd Git-Test //进入目录
  3. git init //初始化,自动生成.git目录
  4. touch README.md //创建README.md文件
  5. git add README.md //添加文件到提交索引
  6. git commit -m "first commit" //提交,提交信息为"first commit"
  7. git remote add origin https://git.oschina.net/Zjmainstay/Git-Test.git //增加一个远程服务器端版本库,名称为origin
  8. git push -u origin master //将本地master主枝代码更新到名为origin的远程版本库中

常用命令

  1. 远程git链接本地简化

    1. git remote add zjcaptcha git@git.oschina.net:Zjmainstay/Joomla-Captcha-Plugin.git
  2. 将本地git档案与远程同步

    1. git push origin #将本地代码更新到名为origin的远程版本库中
    2. git push origin current-branch-name:remote-branch-name #将当前分支(current-branch-name)推送到远程版本库(remote-branch-name)中,remote-branch-name可以随意命名,当最好不要以“origin/”为前缀
  3. 将远程git档案与本地同步

    1. git pull origin master #将origin这个版本库更新到本地的master主枝
    2. git pull #如果有track,可以直接这么操作
  4. 将这个URL地址的远程版本库完全克隆到本地some_project目录下面

    1. git clone git://github.com/someone/some_project.git some_project
  5. 从当前工作空间和索引中删除文件

    1. git rm app/some_files
    2. 注意:要删除文件必须在git控制台中用上述命令删除一遍再同步到远程
  6. 查看历史日志

    1. #普通版本
    2. git log
    3. #格式版本1(时间更人性化)
    4. git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd [%cr]) %C(bold blue)<%an>%Creset' --abbrev-commit --date=iso --stat
    5. #格式化版本2
    6. git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --stat
  7. 一次添加所有新增、修改文件

    1. git add .
    2. 注:使用`git add *` 可能报错:`The following paths are ignored by one of your .gitignore files:`
    3. git add path_to_file #添加一个文件
    4. git add path_to_dir #添加一个目录及其目录中所有内容
  8. 查看当前git预提交状态

    1. git status
  9. 获取帮助文档

    1. git help git
  10. 忽略文件

    1. 修改 .gitignore文件,加入文件
    2. 如:
    3. dir1/
    4. file1.php
    5. .project
  11. 关于remote的操作

    1. git remote --help 可以看到所有用法。
  12. git config

    1. git config --list可以看到所有的配置。
    2. git config --global 配置的参数,删除的时候也要带上global,如:
    3. git config --global --unset remote.origin.url
    4. 普通参数,直接:
    5. git config --unset remote.origin.url 即可
  13. 下载一个tag

    1. git tag -l 可以查看tag列表
    2. git clone url
    3. git checkout -b v1.0.1
  14. 回复rm删除的文件

    1. git ls-files -d | xargs git checkout --
  15. fork版本合并

    1. 1clone 自己账号里fork的分支
    2. $ git clone https://github.com/Zjmainstay/CurlMulti.git
    3. 2)增加远程原始分支到本地(可以用 git remote -v 命令查看远程分支列表)
    4. $ git remote -v
    5. $ git remote add ares333 https://github.com/ares333/CurlMulti.git
    6. 3fetch原始源分支的新版本到本地
    7. $ git fetch ares333
    8. 4)合并两个版本的代码
    9. $ git merge ares333/master
    10. (5)把最新的代码提交到github自己的账号上
    11. $ git push origin master
    12. 参考:http://www.tuicool.com/articles/MzMJre
  16. 移除 $ git config --system http.sslcainfo的设置

    1. $ git config --system http.sslverify false
  17. 暂存修改 (最后一个index=0)

    1. $ git stash
  18. 恢复暂存修改

    1. # 查看所有的暂存数据
    2. $ git stash list
    3. #按index恢复
    4. $ git stash apply --index=0
    5. #恢复stash@{0}的数据(不会删除该暂存内容)
    6. $ git stash pop
    7. #恢复最后一个stash,即stash@{0},同时删除暂存内容
  19. 查看暂存内容

    1. $ git stash show stash@{0}
  20. 删除暂存内容

    1. $ git stash drop stash@{0}
  21. git比较

    1. #比较两个分支
    2. git diff branch_name1 branch_name2
    3. #比较两个分支的一个文件
    4. git diff branch_name1 branch_name2 filepath_to_filename
    5. #比较两个提交(commit)
    6. git diff commit_id1 commit_id2
    7. 注:git log 可以得到commit_id
    8. #比较两个提交(commit)的文件
    9. git diff commit_id1 commit_id2 filepath_to_filename
  22. 获取一个commit作为分支

    1. #1. 获取commit_id
    2. git log
    3. #2. 使用该提交创建新分支
    4. git co -b new_branch commit_id
  23. 修改内容回复

    1. git co -- path_to_file
  24. 从某个分支或者commit中下载某个文件

    1. git co branch-name path_to_file
    2. git co commit-id path_to_file
  25. 删除本地分支

    1. git br -D branch-name
  26. 删除远程分支

    1. git co branch-name path_to_file
    2. git co commit-id path_to_file
  27. git区分大小写

    1. git config core.ignorecase false

fatal: cannot exec 'git-st': Permission denied

  1. 使用git alias命令git st提示如下错误:
  2. fatal: cannot exec 'git-st': Permission denied
  3. 参考stackoverflow上的解答,使用如下方法解决。
  4. 安装strace
  5. apt-get install strace
  6. 使用strace执行git st
  7. strace -f -e execve git st
  8. 根据输出结果进行修正,我的错误在于$PATH变量设置有误。
  9. 或者,使用命令
  10. echo $PATH |tr ':' '\n' |xargs ls -ld
  11. 提示权限不够的目录给予权限或从$PATH中移除即可。

报错:

  1. error: there are still refs under 'refs/remotes/origin/app2.0'
  2. error: Cannot lock the ref 'refs/remotes/origin/app2.0'.
  3. From git.jiudouyu.com.cn:root/9douyu-server
  4. 解决:
  5. git remote prune origin

全局配置文件&git快捷命令

  1. .gitconfig (下载.gitconfig)
  2. .git-completion.bash (下载.git-completion)
  3. .gitignore_global
  4. vi .bashrc 加入 source ~/.git-completion.bash

~/.gitconfig

  1. [user]
  2. name = Zjmainstay
  3. email = admin@zjmainstay.cn
  4. [core]
  5. excludesfile = ~/.gitignore_global
  6. editor = /usr/bin/vim
  7. [mergetool "sourcetree"]
  8. cmd = /usr/local/bin/ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
  9. trustExitCode = true
  10. [alias]
  11. co = checkout
  12. ci = commit
  13. st = status
  14. br = branch
  15. lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd [%cr]) %C(bold blue)<%an>%Creset' --abbrev-commit --date=iso --stat
  16. [color]
  17. branch = true
  18. ui = true
  19. diff = true
  20. interactive = true
  21. status = true

参考文档

  1. https://git-scm.com/book/zh/v1
  2. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  3. https://www.cnblogs.com/Sungeek/p/9152223.html


未经同意禁止转载!
转载请附带本文原文地址:git常用命令教程,首发自 Zjmainstay学习笔记
阅读( 5754 )
看完顺手点个赞呗:
(3 votes)

1.PHP cURL群:PHP cURL高级技术
2.正则表达式群:专精正则表达式
3. QQ联系(加请说明):QQ联系博主(951086941)
4. 邮箱:zjmainstay@163.com
5. 打赏博主:

网站总访问量: