Loading

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
# 之后,可以去远程仓库查看还有没有需要忽略的文件
posted @ 2020-04-03 11:39  集君  阅读(162)  评论(0编辑  收藏  举报