Git使用总结
Git基本配置
生成SSH公钥
大多数Git服务器都会选择使用SSH公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话,就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先先确认一下是否已经有一个公钥了。SSH公钥默认存储在账户的主目录下的~/.ssh目录中:
关键需要查看有没有xxx 和 xxx.pub来命名的一对文件,id_rsa 和 id_rsa.pub,前者是密钥,后者是公钥。如果没有这些文件,则可以通过ssh-keygen来创建:
ssh-keygen -t rsa
# 或ssh-keygen -t rsa -C "youremail@example.com"
密钥类型可以用-t选项来指定,一般默认rsa,-C可以省缺,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。
输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤,此时[c盘>用户>自己的用户名>.ssh]目录下已经生成好了。
公钥提交
复制.pub文件的内容,到github或者gitlab之类的个人设置中心
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@agadorlaptop.local
如何设置tortoiseGit本地密钥
利用PuTTY Key Generator将id_rsa密钥转换为ppk文件格式的密钥,再设置putty密钥
.gitconfig配置
git安装之后,一般在~/.gitconfig文件上记录一些全局配置,如:
[user]
name = username
email = email
[http]
sslVerify = false
postBuffer = 524288000
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
设置和查看全局用户、邮箱
# 查看全局用户名和邮箱
git config –global user.name
git config –global user.email
# 配置全局用户名和邮箱
git config –global user.name username
git config –global user.email email
# 主要区别,切换到某个具体的git项目下
git config user.name # 查看当项目的用户名,如果没有配置,则默认输出全局用户名
git config user.name bbbb # 配置当前项目的用户名
git config user.name # 输出当前用户名,显示为:bbbb
Git搭建仓库和简单使用
Git通常作为代码项目管理工具,可以在远程部署,也可以在本地搭建局域网内的环境使用。
以本地Windows环境为例,简单说明搭建本地仓库的一些注意事项:
1.新建一个Git仓库文件夹,并设置该文件共享,允许局域网内的其他用户可以访问该文件夹,如E:\Back.git,然后将不同的项目新建不同文件夹如project1,project2,project3等。
2.切换到其中project1文件夹,创建一个git仓库:
cd e:\back.git\project1
git init --bare
提示:Initialized empty Git repository in
3.切换到开发项目所在的工作环境中,克隆以上仓库:
git clone //192.168.1.122/Back.git/project1
4.在克隆下来的project1文件夹中,新建一个readme.txt文件,并添加、提交到本地仓库:
git status(查看当前git检测变化)
git add readme.txt(或者git add .)
git commit -m "提交一个readme.txt文件"
5.同步远程仓库代码,并推送当前最新修改内容:
git pull origin master
git push origin master
其中,master代表主分支,如果处于该分支下,可以省略后面的origin master;
pull其实封装了一些操作(git pull == git fetch + git merge)。如果项目成员复杂,约定不统一,直接pull可能会出现一些问题。
另外,在修改项目文件时,最好也先pull一次,减少冲突的可能;
6.查看git提交历史:
git log
注意:查看分支冲突情况,通过idea编辑冲突,编辑之后git add 提交某个文件或所有文件
git status
On branch master
Your branch is up to date with 'origin/master'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
modified: api/controllers/baseControl
ler.php
modified: api/dms/CommonApi.php
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
both modified: .gitignore
both added: api/exts/ly/channels/myDuoYu_51.php
both deleted: api/exts/ly/channels/myXinxin_5006.php
both modified: classes/OrderData.php
合并冲突或者其他原因导致当前master或分支无法提交,可以考虑丢弃所有更改并返回到最新提交
git reset --hard HEAD
Git创建分支和使用分支
1.列出当前远端库的分支情况:
git branch -r
2.新建并切换当该分支:
git checkout -b testEnv
以上语句即相当于
git branch testEnv
git checkout testEnv
3.在当前分支下进行修改项目:
vim index.html
git add .
git commit -m "add a new html"
4.提交变更内容前,链接本地与远程端分支
git push --set-upstream origin testEnv
5.提交变更
git push -u origin testEnv
6.切换master源,合并分支
git checkout master
git merge testEnv
7.合并之后,删除分支
git branch -d testEnv
已有远程分支重命名
# 查看所有远程分支名称
git branch -r
# 假如之前已拉取,fetch最新分支
git fetch
# 拉取线上分支到本地
git checkout -b oldName origin/oldName
# 修改本地分支名称, 对应为希望重命名的新分支名称
git branch -m oldName newName
# 上传新命名的本地分支
git push origin newName
# 把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
# 删除远程分支(与新建分支对比,也就是多一个删除远程分支的步骤)
git push --delete origin oldName
给master分支添加tag
git checkout master
# 一般合并某最新分支git merge feature-1.7.0
git push origin/master
# 将当时master 打上tag
git tag v1.7.0
# 或者
git tag -a v1.7.0 -m "将当前标记v1.7.0"
# 查看所有tag
git tag
# 推送tag
git checkout master
# 一般合并某最新分支
git merge feature-1.7.0
git push origin/master
# 将当时master 打上tag
git tag v1.7.0
# 或者
git tag -a v1.7.0 -m "将当前标记v1.7.0"
# 查看所有tag
git tag
# 推送tag
git push --tags
# 切换某tag
git checkout v1.1.0
git pull orgin v1.1.0
补充删除tag操作
git tag -d v1.0
git push origin --delete v1.0
.gitignore
.gitignore基本用法
在项目一级目录中,创建.gitignore文件
忽略格式主要有:
/文件夹名/ # 表示忽略这个文件夹
/文件夹/文件名 # 表示忽略某个文件夹下的具体文件
!/文件夹/文件名 # !开头表示不忽略哪个文件
\*.mdb 或 .ldb # 表示忽略某种类型的文件
log/ # 表示忽略log下的所有文件
.gitignore不生效的情况
需要注意的是.gitignore只能忽略没有被追踪的文件,假如某个文件被忽略之前,已经提交过了,就不会忽略成功,每个文件都有一个track标识,当文件提交成功后就会有这个标识,也就是说已经进入版本管理的文件,修改.gitignore是无效的,解决办法:
# 把之前track的文件清除,重新追踪
git rm -r --cahce api/hello.java
git add .
git commit -m "update"
git push
# 之后,可以去远程仓库查看还有没有需要忽略的文件