基本配置
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,再也不用输入烦人的密码了
网友评论