git

作者: ahubaoan | 来源:发表于2018-07-25 10:35 被阅读0次
    基本配置

    git config --list 查看配置
    git config --global user.name="xxx"
    git config --global user.email="xxxx"

    偶尔使用的命令
    • git mv 重命名文件
    • git reset [文件名] 撤销用git add添加到暂存区的文件(注意 git rm是删除一个文件,本地也删除)
    • git reset HEAD 用于取消暂存区已缓存的所有内容
    • git rm --cached filename //删除暂存区的某个文件,工作区的不会删除
    • git rm filename //同时删除暂存区和工作区的该文件
    • git reset HEAD~ 对于已经本地commit的内容,撤销到本地工作区,变成git status修改的状态
    • 分支切换
    首次克隆的时候默认是master目录,如果要切换到远程的dev目录
    $ git checkout -b dev origin/dev
    #查看以下,可以看到dev和origin/dev为同一个
    $ git checkout -va
    
    • git 分支管理
    1)创建分支命令 git branch (branchname) 列出分支 git branch
    2)切换分支命令 git checkout (branchname)
    3)合并分支 git merge (branchname)
    4)创建新分支并立即切换到该分支下 git checkout -b (branchname)
    5)删除分支命令 git branch -d (branchname)
    ps:状态 uu 表示冲突未解决 可以用 git add 要告诉 Git 文件冲突已经解决
    git branch -D branchname 删除本地分支
    注意:需要切换到其他分支进行其操作,不能在当前分支删除当前分支,这是不允许的
    
    创建远程分支
    1.创建本地分支 git branch dev1
    2.推送到远程  git push origin dev1
    这就可以了,可以用git branch -a查看
    
    • 查看日志版本
    git log 命令列出历史提交记录
    git log --oneline 查看历史记录的简洁的版本
    git log --oneline --graph 查看历史中什么时候出现了分支、合并
    

    更多命令

    • git blame
    在多人协作开发的项目中,想要知道某个文件的历史改动情况,可以使用该命令来完成,具体如下:
    
    在多人协作开发的项目中,想要知道某个文件的历史改动情况,可以使用该命令来完成,具体如下:
    git blame -L line1, line2 file
    
    • clone远程的某个仓库后,如果想同步作者的更新,用下面的git命令行:
    用git remote查看远程主机状态
    git remote -v 
    git remote add upstream git@github.com:xxx/xxx.git
    git fetch upstream
    git merge upstream/master   //主要这里的分支可能是dev,或者其他,按照需求来
    git push 
    

    push的时候有冲突

    //首先先stash暂存一下文件
    $ git stash
    //然后git pull
    $ git pull
    //最后把stash的再下载到本地,并产生冲突
    $ git stash pop stash@{0}
    //后面解决冲突就可以了,其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。
    

    为git设置代理

    1.使用全局代理

    export http_proxy=xxxx:xx
    export https_proxy=xxxx:xx
    

    2.如果1的代理不能用,使用git自带代理

    git config --global http.proxy "10.1.228.101:1080"
    git config --global https.proxy "10.1.228.101:1080"
    
    #此时如果报401的错误,则需要在git命令同时输入账号密码,如下:
    git clone https://username:password@github.com/org/project.git
    

    git 内置了一些钩子,不同的 git 操作会触发不同的钩子,这些钩子放在项目文件夹的 .git/hooks/文件夹下,我们这里用到的是 pre-commit。

    #!/usr/bin/env bash
    lua_files=$(git status -s|awk '{if (($1=="M"||$1=="A") && $2 ~ /.lua$/)print $2;}')
    if [[ "$lua_files" != "" ]]; then
        result=$(luacheck $lua_files)
        if [[ "$result" =~ .*:.*:.*: ]]; then
            echo "$result"
            echo ""
            exec < /dev/tty
            read -p "Abort commit?(Y/n)"
            if [[ "$REPLY" == y* ]] || [[ "$REPLY" == Y* ]]; then
                echo "Abort commit"
                exit 1
            fi
        fi
    fi
    

    使用ssh更新代码

    在github上新建仓库,后面直接有连接的方法。
    github上添加公钥后可以改为密钥认证,而不是账号密码
    你可以登陆你的github,就像本文开头的图例,你在上面可以看到你的ssh协议相应的url,类似:


    image.png

    复制此ssh链接,然后使用命令 git remote set-url 来调整你的url。

    git remote set-url origin git@github.com:someaccount/someproject.git
    然后你可以再用命令 git remote -v 查看一下,url是否已经变成了ssh地址。

    然后你就可以愉快的使用git fetch, git pull , git push,再也不用输入烦人的密码了

    示例图

    image.png

    相关文章

      网友评论

          本文标题:git

          本文链接:https://www.haomeiwen.com/subject/qotpmftx.html