- 注册地址: https://github.com
- 下载地址: https://git-scm.com/
-
配置邮箱,邮箱是注册Github的邮箱
git config --global user.email xxx@126.com
-
配置用户名,建议使用字母而不是汉字
git config --global user.name xxx
-
查看配置
git config --list
- Workspace: 工作区
- Stage:暂存区
- Repository: 本地仓库
- Remote: 远程仓库
- create a new branch and checkout it out
git checkout -b newbranch commitid
- create a new branch
git branch newbranch commitid
git commit --amend --author 'Hua Sheng' --email "xiaoyong6906@126.com"
git tag -a V1.0.0 -m "Apr 1 release"
git push --tag
<type>(<scope>): <subject> #id
eg
feat(login): 添加了Login模块的后台验证逻辑 #11
type
用于说明commit的类别,属于必填字段,只允许使用下面7个标识* feat: 新功能(feature) * fix: 修补bug * docs: 文档(documentation) * style: 样式(不影响代码运行的变动) * refactor: 重构(既不是新增功能,也不是修补的bug的改动) * test: 增加测试 * chore: 构建过程或辅助工具的变动
scope
用于说明commit影响的范围,scope是可选的,可以是多个,中间用,隔开,取值只能从该项目的label中取功能模块的值subject
是commit的简单描述,建议使用精简的语言描述,最好不超过50个字符。另外,由于我们是内部项目,commit使用中文描述id
是任务的编号,因此每个commit的提交都必须有对应的标号,id加#是能够让Gitlab识别并绑定到现有的任务中。注意#之前和subject是有个空格的
- fatal: Refusing to fetch into current branch refs/heads/tutorial of non-bare repository 当你处于分支develop时,这个时候去fetch develop分支的代码的时候就会报这个错误,也就是说不可以在非bare的git仓库中通过fetch快进你的当前分支与远程同步。这个时候你要切换到其他分支,然后再去fetch非当前分支的代码。
If you already have a file checked in, and you want to ignore it, Git will not ignore the file if you add a rule later. In those cases, you must untrack the file first, by running the following command in your termianl:
$ git rm --cached . 清楚当前stage
$ git add -A
$ git commit -m 'your message, eg update .gitignore'
.gitignore文件只是ignore没有被staged(cached)文件
windows中的换行符为 CRLF,而在Linux下的换行符为LF,所以在执行add . 时出现提示 工作区的文件都应该用 CRLF 来换行。如果 改动文件时引入了 LF,提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。也因此,当我们进行 git add 的操作时,只要 git 发现改动的内容里有 LF 换行符,就还会出现这个警告。
rm -rf .git // 删除.git
git config –-global core.autocrlf false //禁用自动转换
git init //初始化git库
git add –all //提交所有修改到暂存区
或者设置workspace project .git目录下的conf文件
[Core]
...
autocrlf = false
- ubuntu下编辑/etc/ssh/ssh_config,windows下在git的安装目录中找,在ssh_config末尾append
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
#!/bin/bash
#basePath是clone的master分支文件夹的外层文件夹
basePath="/xxx/"
branchs="branch1,branch2"
#要将$branchs分割开,先存储旧的分隔符
OLD_IFS="$IFS"
#设置分隔符
IFS=","
#如下会自动分隔
arr=($branchs)
#恢复原来的分隔符
IFS="$OLD_IFS"
#遍历数组
for branch in ${arr[@]}
do
#为每个branch创建一个文件夹
cd $basePath
rm -rf $branch
echo "Delete $branch Done......"
mkdir $branch
#进入master folder并拉取$s分支的代码
cd $basePath/master
git checkout $branch
git pull --all
cp -r ./* $basePath/$branch
echo "Clone $branch Done......"
done
#当前是master文件夹,最后切换到master分支
git checkout master
- 使本地库同时关联GitHub和码云,需要用不同的名称来标识不同的远程库,git给远程库起的默认名称是 origin,就是我们平时fetch/rebase origin那种
先删除 origin
git remote rm origin
然后关联GitHub的远程库:git remote add github git@github.com:xxx(用户名)/xxx(本地库名).git
然后关联码云的远程库:git remote add gitee git@gitee.com:xxx(用户名)/xxx(本地库名).git
然后使用 git remote -v 来查看远程库信息,看到以下信息即表示成功:gitee git@gitee.com:xxx/xxx.git (fetch)
gitee git@gitee.com:xxx/xxx.git (push)
github git@github.com:xxx/xxx.git (fetch)
github git@github.com:xxx/xxx.git (push)
git fetch github master:master
git rebase github/master
git push github/master