个人博客

A web front-end programmer's personal blog.

整理git常用命令

github已经被公认为程序员的Facebook,好处就不介绍了,如果你不想被淘汰,还是多学点吧,关于git的更详细的使用,请点击这里进行详细的学习,这里只是整理了本人可能会经常用到的命令,由于目前公司还是用SVN,所以一般都是自己在搞,难免有些命令用的不太熟练,所以整理下。

####创建远程仓库SSH

如果刚换的电脑或重新做过系统,会遇到这个问题。需要创建远程仓库的SSH,方便以后提交代码。

  • 第一步:在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa 和 id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

      ssh-keygen -t rsa -C "youremail@example.com"
    

    如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

  • 第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面: 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key。

  • 第三步:在github上创建远程库,并将本地库与远程库关联。

      git remote add origin git@github.com: 你的github账号名/库名 .git
    
  • 第四步:推送到远程库中

      git push -u origin master
    

PS: SSH警告 当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.RSA key fingerprint is xx.xx.xx.xx.xx.Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

####一些常用命令

  • 更新本地代码,从远程库中拉取最新的代码到本地。

      //方法一:
          git pull
      //方法二:
          git fetch
          git merge FETCH_HEAD
    
  • 查看记录(当前操作窗口)

      git log 或 git log --pretty=oneline
    
  • 查看所有的log记录,包括以前的

      git reflog
    
  • 版本切换回退或跳回

      git reset --hard 版本提交号(git log)
    
  • 提交后查看工作区与版本库里有哪些区别

      git diff HEAD -- <filename>
    

以上都是commit过的(并不包括push上)。即已经提交到远程库中,然后想查看或更新等。

  • 比较文件修改了那些

      git diff <filename>
    
  • 文件撤销修改,撤销当前所有修改

    • a. 如果还没有添加到缓存区,即还没有 git add

        git checkout -- <filename>
      
    • b. 如果文件已经 git add 过了,并且add的部分是正确的不用撤销

        git checkout -- <filename>    // 会回到最近add 过的
      
    • c. 如果文件已经 git add 过了,并且add的部分不正确也要撤销

        git reset HEAD <filename>
        git checkout -- <filename>
      
  • 删除文件

      git rm <filename>     //从版本库删除
    
  • 创建合并分支,删除分支

      git checkout -b <branchname>
      git merge <branchname>       //必须先checkout 到某分支,再将该分支merge到 <branchname> 分支
        
      git branch -d <branchname>
      //另外
      git log --graph 或  git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并图
    

以上是 add到缓存区的,或还没有add 的。

一般常用的差不多就这些了,多用多熟悉。