zoukankan      html  css  js  c++  java
  • github简单命令


    1.安装
    yum install -y git

    2.配置帐户(github.com注册)
    git config --global user.name goozgk
    git config --global user.email goozgk@qq.com

    3.创建一个新的仓库repo
    mkdir -p /work/git_repo
    cd /worl/git_repo
    git init # 初始化

    4.编写程序
    vim test.py

    5.查看状态
    git status
    [root@localhost git_repo]# git status
    # On branch master
    #
    # Initial commit
    #
    # Untracked files:
    # (use "git add <file>..." to include in what will be committed)
    #
    # test.py
    nothing added to commit but untracked files present (use "git add" to track)

    6.暂存 – git add

    [root@localhost git_repo]# git add test.py
    [root@localhost git_repo]# git add -A # if you want to commit all the file in the current dir.
    [root@localhost git_repo]# git status
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    # (use "git rm --cached <file>..." to unstage)
    #
    # new file: test.py
    #
    [root@localhost git_repo]#


    7.提交 – git commit 到本地仓库(master)中。
    [root@localhost git_repo]# git commit -m "create test.py"
    [master (root-commit) 8fe112e] Mon Jul 11 07:31:36 PDT 2016
    1 files changed, 4 insertions(+), 0 deletions(-)
    create mode 100755 test.py
    [root@localhost git_repo]#

    8.链接远端仓库 – git remote add
    git remote add origin https://github.com/goozgk/work.git
    # 通常主远端仓库被称为origin; 可以有其他仓库,另起名字即可
    # git remote add <remoteRepositoryName> <remoteRepositroyURL>

    9.上传到服务器 – git push
    git push origin master
    # git push 远端仓库名字(origin) 分支名字(master)

    [root@localhost git_repo]# git push origin master
    error: The requested URL returned error: 403 Forbidden while accessing https://github.com/goozgk/work.git/info/refs

    fatal: HTTP request failed

    失败。。。

    改为使用ssh登陆,实际上github暂不支持http的读写权限
    ssh-keygen -t rsa 创建秘钥对(参考http://www.cnblogs.com/goozgk/p/5663453.html)
    复制id_rsa.pub的内容到github.com自己项目主页settings->Deploy Keys中

    设置并确认
    git remote -v
    git remote set-url origin ssh://git@github.com/goozgk/work.git
    git remote -v

    格式:
    git remote set-url <name> https://yourusername@github.com/<repo>.git # https暂不可用无法验证
    git remote set-url <name> ssh://git@github.com/<username>/<repo>.git

    [root@localhost .ssh]# ssh -T goozgk@github.com
    Hi goozgk/work! You've successfully authenticated, but GitHub does not provide shell access.

    可以了!

    [root@localhost git_repo]# git push
    To ssh://git@github.com/goozgk/work.git
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to 'ssh://git@github.com/goozgk/work.git'
    To prevent you from losing history, non-fast-forward updates were rejected
    Merge the remote changes before pushing again. See the 'Note about
    fast-forwards' section of 'git push --help' for details.
    [root@localhost git_repo]#


    原因:origin分支有更新,不允许提交,应先把origin fetch回本地,merge后提交
    ----------------------------------------------------------
    git fetch origin
    # Fetches updates made to an online repository
    git merge origin YOUR_BRANCH_NAME(master) [git rebase #注意,和git merge有区别的!]
    # Merges updates made online with your local work

    OR

    git pull origin YOUR_BRANCH_NAME(master) # 将远端仓库内容pull回本地并merge
    # Grabs online updates and merges them with your local work

    ----------------------------------------------------------
    git push -f
    # 强推,会破坏remote仓库内容,不建议使用
    ----------------------------------------------------------

    git push origin master

    成功!!!


    10.克隆仓库 – git clone
    放在Github上的开源项目,人们可以看到你的代码。可以使用 git clone进行下载到本地。
    # git clone https://github.com/goozgk/work.git
    本地也会创建一个新的仓库,并自动将github上的分支设为远端分支。
    [root@localhost work]# git remote -v
    origin https://github.com/goozgk/work.git (fetch)
    origin https://github.com/goozgk/work.git (push)

    。。。可惜github.com不支持https上传修改,你也没有ssh KEY, 就是说你只能看,而不能随意修改别人的代码。只需要把你自己的公钥key部署到github.com中的project中就可以了。。。废话。。


    It's not allow to use the same KEY to manipulate 2 or more Projects int the Github.com,ちょっとおかしいね!
    It's also not allow 2 accounts to use the same key to access one Project。。。没有验证如何控制的。。


    11.分支

    创建新分支
    git branch <bra1>

    切换到新分支
    git checkout <bra1>

    删除分支
    git branch -d <BranchName>

    查看当前分支
    git branch
    git show-branch

    切换到各个分支后,新建的文件,各个分支都可以看到的!!!(提交之前),但是在某个分支上commit后,只有这个分支可以看到!!!

    在分支上测试完成后,git branch master切换回master分支,执行
    git merge <branchName>; git branch -d <branchName>

    12.查看log
    git log
    git log --oneline

    查看具体提交了什么
    git show <id number> #前几位就行,只要不会冲突

    比较两次提交的不同
    git diff [commit-from]..[commit-to]

    13.回滚某个文件到之前的版本
    git checkout 09bd8cc1 hello.txt
    # 格式git checkout <id number> <fileFullPath>

    14.复杂指令
    git commmit --amend #打回最新提交到暂存区
    git revert HEAD #打回最新提交到暂存区
    git revert <id number> #打回提交<id number>到暂存区

    15.配置 .gitignore
    在项目根目录创建.gitignore文件,在文件中列出不需要提交的文件名,文件夹名,每个一行,.gitignore文件需要提交,就像普通文件一样

    16.本地建两个repository,模拟本地和远端

    [root@localhost work]# git clone ssh://git@github.com/goozgk/work.git
    Initialized empty Git repository in /work/work/.git/
    remote: Counting objects: 13, done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 13 (delta 2), reused 9 (delta 1), pack-reused 0
    Receiving objects: 100% (13/13), done.
    Resolving deltas: 100% (2/2), done.
    [root@localhost work]# cd work/
    [root@localhost work]# git push
    Everything up-to-date
    [root@localhost work]# git remote -v
    origin ssh://git@github.com/goozgk/work.git (fetch)
    origin ssh://git@github.com/goozgk/work.git (push)
    [root@localhost work]#
    [root@localhost work]#至此,创建github.com和本地(remote <>local)模式的普通系统
    
    [root@localhost work]#
    [root@localhost work]# cd ..
    [root@localhost work]# mkdir a;cd a
    [root@localhost a]# git clone /work/work/.git/ . #github.com < /work/work/.git < /work/a/.git 系统建立,看似完美!
    Initialized empty Git repository in /work/a/.git/
    [root@localhost a]# ll
    total 12
    -rw-r--r-- 1 root root 6 Jul 18 07:13 README.md
    -rwxr-xr-x 1 root root 26 Jul 18 07:13 test1.py
    -rwxr-xr-x 1 root root 26 Jul 18 07:13 test.py
    [root@localhost a]# git push #提交也ok
    Everything up-to-date
    [root@localhost a]# git remote -v #确认也没问题
    origin /work/work/.git/ (fetch)
    origin /work/work/.git/ (push)
    [root@localhost a]# git branch
    * master
    [root@localhost a]#
    [root@localhost a]#
    [root@localhost a]#
    [root@localhost a]# ll
    total 12
    -rw-r--r-- 1 root root 6 Jul 18 07:13 README.md
    -rwxr-xr-x 1 root root 26 Jul 18 07:13 test1.py
    -rwxr-xr-x 1 root root 26 Jul 18 07:13 test.py
    [root@localhost a]# touch a1 #创建新文件
    [root@localhost a]# git push
    Everything up-to-date
    [root@localhost a]# git add -A
    [root@localhost a]# git commit -m "add a1 on branch a" #提交,ok
    [master 2c43137] add a1 on branch a
    0 files changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 a1
    [root@localhost a]# git push #远程push失败,不推荐此种方式!会引起混乱不一致。还没具体深究。。。。。。
    Counting objects: 4, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 306 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    remote: error: refusing to update checked out branch: refs/heads/master
    remote: error: By default, updating the current branch in a non-bare repository
    remote: error: is denied, because it will make the index and work tree inconsistent
    remote: error: with what you pushed, and will require 'git reset --hard' to match
    remote: error: the work tree to HEAD.
    remote: error:
    remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
    remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
    remote: error: its current branch; however, this is not recommended unless you
    remote: error: arranged to update its work tree to match what you pushed in some
    remote: error: other way.
    remote: error:
    remote: error: To squelch this message and still keep the default behaviour, set
    remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
    To /work/work/.git/
    ! [remote rejected] master -> master (branch is currently checked out)
    error: failed to push some refs to '/work/work/.git/'
    [root@localhost a]# 
    
     
  • 相关阅读:
    css
    团队介绍
    day4
    线段树懒标记
    P2014选课
    P2015
    扩展欧几里得(exgcd)求解不定方程/求逆元
    transform和tolower
    快读
    bzoj2118
  • 原文地址:https://www.cnblogs.com/goozgk/p/5682977.html
Copyright © 2011-2022 走看看