git

基本配置

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 16,203评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 4,155评论 0 11
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,872评论 1 26
  • 宇虎阅读 1,701评论 0 0
  • 一直都觉得,自己是一个特别后知后觉的人 很多事情,有时候过去了才反应过来 阳光明媚,春风和煦的天气里 户外晒太阳是...
    呲牙咧嘴小叮当阅读 291评论 2 1

友情链接更多精彩内容