配置SSH
- 下载git,安装。
- 打开Git Bash(这一部在任意一个文件夹下右键即可打开)
-
设置自己的用户名与邮箱,格式为:
1
2
git config --global user.name
"username"
git config –global user.email
"email"
在这一步设置的用户名与邮箱要与公司hiklink上一样,否则会拒绝进入 -
生成ssh key
1
ssh-keygen -t rsa -C
"email"
(email为刚才设置的地址)
- 打开~/.ssh文件下的key文件,复制到GitLab中,添加SSH key,完成配置
-
如果配置成功,公司的内部邮箱会收到一款邮件。
PS:
- 用户名与邮箱设置一定不能反
-
如果生成的ssh key找不到了,可以删除后重新生成。删除命令为
1
rm -rf -/.ssh/*
代码提交
初次提交
-
初始化工程下的git
1
git init
-
如果已有git文件夹,需要删除了才能初始化
1
rm -rf .git
-
-
连接远程仓库
1
git remote add origin
"clone with SSH的地址"
-
创建并切到分支
1
git checkout -b 分支名
-
分支的创建
1
2
git checkout -b 分支名
//创建并切到分支
git branch 分支名
///创建分支
-
-
添加本地需要提交的代码
1
git add .
-
提交代码并添加说明
1
git commit -m
"说明内容"
-
上传代码到指定的分支
1
git push origin 分支名
非初次提交
重复4-6的步骤
设置忽略
git可以设置在提交工程到远程仓库中时,忽略掉哪些文件。实现这样的功能之前需要设置忽略。
-
在工程下打开git bash,新建或打开.gitignore文件(在git里面使用的是vim对.gitignore进行编辑,所以新建的工作由git直接完成)
1
vim .gitignore
-
依据规则输入忽略内容,常见规则有:
规则
效果
.idea
忽略.idea文件夹及文件夹下文件 *.iml 忽略以.iml结尾的文件 *.[oa] 忽略*.o和*.a文件 *.[bB]
!my.b
忽略*.b和*.B文件,my.b除外 dbg 忽略dbg文件和dbg目录 dbg/ 只忽略dbg目录,不忽略dbg文件 -
按照步骤对代码进行提交即可
设置忽略的步骤比较简单,比较难处理的是当工程里的文件已被track,或者工程已经同步到远程仓库时,设置的.gitignore内容不会生效。此时,需要删除本地缓存,再重新提交(从我的理解上看,这个缓存应该就是本地仓库上的东西,需要好好理解 git的实现原理)
1 2 3 |
|
如果想看文件的tracked状态,使用
1 |
|
设置了忽略的文件夹不会显示在未被tracked的内容中
删除仓库中的内容
- 删除分支
-
删除本地分支
1
2
3
git branch -D BranchName
git branch --delete BranchName
-
删除远程分支
1
git branch -r -D origin/BranchName
-
远程删除git服务器上的分支
1
git rm [文件路径] -r -f
-
- 删除分支中的文件夹,思路是删除本地仓库,提交到远程仓库进行覆盖
-
删除本地文件夹(也就是清除缓存)
1
2
3
git push origin -d BranchName
git push origin --delete BranchName
- 提交
- 推到远程仓库
-
踩的坑
- 邮箱用户名填反了,导致认证出错
-
提交代码时,没有提交到自己的分支上,无法提交
1
2
3
4
5
6
7
To github.com:***
/***
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘git@github.com:***/
***’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’
for
details.
需要提交到自己的分支上
-
出现2中的错误,还可以先使用pull拉取,再进行push。本意是拉取远程仓库到本地仓库。如果这么做不行,那可能就是权限问题,需要在别的分支上提交。