• Git连接Github


    环境:Ubuntu Server 12.04


    1. 安装Git
      apt-get install git git-core
      

        

    2. 配置本机Git
      git config --global user.name "evilxr"
      git config --global user.email evilxr@gmail.com
      git config --global color.ui true
      

        

    3. 列出所有配置

      tp@Evilxr:/tmp$ git config --list
      user.name=evilxr
      user.email=evilxr@gmail.com
      color.ui=true
      tp@Evilxr:/tmp$ 
      

        以上操作实际上修改的是这个文件

      tp@Evilxr:/tmp$ cat ~/.gitconfig 
      [user]
      	name = evilxr
      	email = evilxr@gmail.com
      [color]
      	ui = true
      

        

        

    4. 生成密钥
      ssh-keygen -t rsa -C evilxr@gmail.com
      

        

    5. 提交密钥
      vim /root/.ssh/id_rsa.pub
      

        复制里面的密钥,到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要github密码确认)

    6. 检验是否链接上了github
      ssh git@github.com
      

      PTY allocation request failed on channel 0
      Hi evilxr! You've successfully authenticated, but GitHub does not provide shell access.
      Connection to github.com closed.


      推荐:Git练兵场
      补充:
           git的版本查询    git --version
           git的路径查询    which git
      


    7. 创建一个repository
      # mkdir Python_urllib
      # git init
      # vim Python_urllib
      
      # coding:utf8
      
      import urllib 
      import chardet
      
      def automatic_detect(url):
      	"""" doc """
      	content = urllib.urlopen(url).read()
      	result= chardet.detect(content)
      	encoding = result['encoding']
      	return encoding
      
      url_list = ["http://www.sina.com.cn/", 
      			 "http://www.cnblogs.com/evilxr",
      			  "http://bbs.hackav.com/",
      			  "http://www.baidu.com/",
      			  "http://fuli.ba/"]
      for url in url_list:
      	print url, automatic_detect(url)
      

        

    8. git status
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      
      初始提交
      
      未跟踪的文件:
        (使用 "git add <file>..." 以包含要提交的内容)
      
      	Python_urllib.py
      
      提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
      

        

    9. git add
      tp@Evilxr:/tmp/Python_urllib$ git add Python_urllib.py 
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      
      初始提交
      
      要提交的变更:
        (使用 "git rm --cached <file>..." 撤出暂存区)
      
      	新文件:       Python_urllib.py
      

        

    10. git commit -m 'something you need say.'
      tp@Evilxr:/tmp/Python_urllib$ git commit -m 'Python Scrip'
      [master (根提交) 7555373] Python Scrip
       1 file changed, 20 insertions(+)
       create mode 100644 Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      无文件要提交,干净的工作区
      

        

    11. git status -s
      # 再次修改Python_urllib.py文件,在其最后加上一条语句
      # print 'made by evilxr.'
      # 然后git status -s
      tp@Evilxr:/tmp/Python_urllib$ git status -s
       M Python_urllib.py
      

        

    12. git diff  查看文件差别
      tp@Evilxr:/tmp/Python_urllib$ git diff
      diff --git a/Python_urllib.py b/Python_urllib.py
      index 806e0fa..b99aadb 100644
      --- a/Python_urllib.py
      +++ b/Python_urllib.py
      @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/",
       for url in url_list:
              print url, automatic_detect(url)
       
      +print 'made by evilxr.'
      

        

      tp@Evilxr:/tmp/Python_urllib$ git diff --staged
      diff --git a/Python_urllib.py b/Python_urllib.py
      index 806e0fa..b99aadb 100644
      --- a/Python_urllib.py
      +++ b/Python_urllib.py
      @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/",
       for url in url_list:
              print url, automatic_detect(url)
       
      +print 'made by evilxr.'
      

        

      tp@Evilxr:/tmp/Python_urllib$ git diff HEAD
      diff --git a/Python_urllib.py b/Python_urllib.py
      index 806e0fa..b99aadb 100644
      --- a/Python_urllib.py
      +++ b/Python_urllib.py
      @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/",
       for url in url_list:
              print url, automatic_detect(url)
       
      +print 'made by evilxr.'
      

        

      # 将不同的地方显示为一行,以不同颜色为对比
      git diff --color-words
      
    13. git reset 撤销操作
      tp@Evilxr:/tmp/Python_urllib$ git diff
      tp@Evilxr:/tmp/Python_urllib$ git status -s
      M  Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ git reset Python_urllib.py
      重置后撤出暂存区的变更:
      M	Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ git status -s
       M Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ 
      

        

    14. git checkout
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      尚未暂存以备提交的变更:
        (使用 "git add <file>..." 更新要提交的内容)
        (使用 "git checkout -- <file>..." 丢弃工作区的改动)
      
      	修改:         Python_urllib.py
      
      修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
      tp@Evilxr:/tmp/Python_urllib$ git checkout Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      无文件要提交,干净的工作区
      tp@Evilxr:/tmp/Python_urllib$ 
      

        还可以用git checkout HEAD filename从

    15. git rm filename    撤销
      tp@Evilxr:/tmp/Python_urllib$ ls
      notuse.py  Python_urllib.py
      tp@Evilxr:/tmp/Python_urllib$ git rm notuse.py 
      rm 'notuse.py'
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      要提交的变更:
        (使用 "git reset HEAD <file>..." 撤出暂存区)
      
      	删除:         notuse.py
      
      tp@Evilxr:/tmp/Python_urllib$ git status -s
      D  notuse.py
      tp@Evilxr:/tmp/Python_urllib$ git commit -m 'deletd old.py'
      [master 4e0a415] deletd old.py
       1 file changed, 7 deletions(-)
       delete mode 100644 notuse.py
      tp@Evilxr:/tmp/Python_urllib$ git status
      位于分支 master
      无文件要提交,干净的工作区
      

        

    16. git pull
      从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update
      
    17. git新建分支并切换到该分支
      git checkout -b now-function
      
    18.  git合并分支,当需要在现有系统上添加一个新功能时,往往另外开一个分支来弄,

       比如,如果要将开发中的分支(test),合并到稳定分支(master),
           首先切换的master分支:git checkout master
           然后执行合并操作:git merge test
           如果有冲突,会提示你,调用git status查看冲突文件。
           解决冲突,然后调用git add或git rm将解决后的文件暂存。
           所有冲突解决后,git commit 提交更改。
      
    19. 修改commit最后一次提交内容,加入大段注释
       git commit --amend
      
    20. git查看某文件修改历史
      1.切换到目录
      2.git log --pretty=oneline filename
      #you will see
      test8b43a808cfe86fc90dde852c4a49e28f4ca6
      testa2033c785154f2400b179a15ef090f5a9cb6
      test6e8eb956dc41a1db54080a6bca2adc348ed8 
      testd5e0306088d9bc0217c2ece4ced4e3870db9
      test72f220e19bde8eb87be3076a383cea8951d7
      test46632b93a86ddde029594e1d1a6f9b82932d 
      test3f15f46105c1e61107068cef987e6838e5e0
      testc6d31cfbbf65c53e24571cd67057c66ad6ce
      test54827582044a3e8b1d6165b5f82fce0d51ac
      test4fc6ecaa3b519cb0f781ad4fbbe340b26bec 
      test0d09df4653a800a0f4cedbcab1e3d2702000 
      
      3.git show test4fc6ecaa3b519cb0f781ad4fbbe340b26bec 
      
    21. 查看某文件每一行最后修改日期和修改者信息

      git blame filename
      
  • 相关阅读:
    使用curl传递cookie错误的问题
    P3P设置第三方cookie解决方案
    国内的在线编程学习网站
    十大在线编程学习网站
    CGI,FastCGI,PHP-CGI与PHP-FPM
    工具收藏
    初识docker
    PHP优化
    JS各种语法
    面试题 比较运算、去扩展名的多种方法、内存回收
  • 原文地址:https://www.cnblogs.com/evilxr/p/3900104.html
Copyright © 2020-2023  润新知