一、安装与常用命令
(一)安装配置
- 安装Git
- 设置用户名和email地址,每次提交都会使用该用户的信息(必做)。
git config --global user.name "fn"
git config --global user.email "邮箱"
查看配置信息
git config --global user.name
git config --global user.email
-
可以为常用命令设置别名
A. 打开用户目录(如windows的
C:\Users\
),创建
.bashrc
文件
B. 可能系统不允许用户创建点开头的文件,这时可以在git命令行创建
touch ~/.bashrc
C.
.bashrc
的内容,例子如下:
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
alias ll='ls -al'
-
如果要输入中文,可能有乱码问题,解决如下:
A. 打开命令行执行
git config --global core.quotepath false
B.
git安装目录/etc/bash.bashrc
文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
(二)获取本地仓库
要使用Git进行版本控制,首先就要
获得本地仓库
A. 在任意路径下创建一个空目录,
作为本地Git仓库
B. 进入目录,在目录中打开Git bash
C. 执行
git init
D. 执行成功会有一个隐藏的
.git
目录
(三)基础操作命令
git add:从工作区 –> 暂存区
git commit 从暂存区 –> 本地仓库
首先新建一个文件后
-
git status
查看修改的文件状态,如刚新建文件时的状态.
-
git add .
将当前工作区(目录)的所有文件
添加到暂存区
;也可以
git add test.txt
提交指定文件到暂存区
。
-
git commit -m "说明"
暂存区>>仓库
-
使用
git log [option]
可以看见提交记录。
-
--all
显示所有分支 -
--pretty=oneline
将提交信息显示为一行 -
--abbrev-commit
输出更短的commit的id -
--graph
以图的形式显示
一般使用时这些参数都会加上,
git log --all --pretty=oneline --abbrev-commit --graph
,这时命令很长,就可以通过设置别名的方式解决问题。
(1)版本回退(版本切换)
git reset --hard commitId
可以跳转到ID对应的版本。
比如:新建了一个文件,提交;然后在文件中加了内容,再提交。这时就有两个commit
如果想回到未加内容的版本,就
git reset --hard ab87d8f
。
git reflog
查看历史记录,如果想再回到修改版本,就需要推断出修改版本的commitId(因为回退了,git log查看不到对应的id了)
(2)设置某些文件不参与提交Git
-
新建一个
.gitignore
文件。 -
在文件中写要忽略的文件名(可以用模糊匹配)
(四)分支
分支可以把工作从
开发主线
上分离开来进行
重大Bug修改、开发新功能
,
以免影响开发主线
。
(1)基本命令
-
查看本地分支
git branch
-
创建新分支
git branch 分支名
-
切换分支
git checkout 分支名
可以直接切换到一个不存在的分支(创建并切换)
git checkout -b 分支名
-
合并分支
git merge 指定分支名
将指定分支合并到当前分支,一般是站在
master
上合并其他分支。 -
删除分支
git branch -d 分支名
删除分支时,需要做各种检查
git branch -D 分支名
不做任何检查,强制删除(小d删不了,就用大D) -
解决合并冲突
产生原因:在两个分支上同时修改了同一文件的同一行(如果不是同一行,git会自动合并内容),这时合并分支就会报分支合并失败。
处理步骤:
A. 处理文件冲突的地方(打开冲突文件,git会有提示)。
B. 将解决完冲突的文件加入暂存区并提交。
(2)开发中分支使用原则与流程
二、Git远程仓库
(一)基本命令
-
可以为远程库创建别名
git remote -v
查看当前创建的别名
git remote add 别名名称 https://XXX远程仓库的url
创建别名
git remote set-url 别名名称 URL
修改别名
区别 | push | clone |
---|---|---|
https | 需要验证用户名密码(就算配置了SSH也要) | 随意克隆任何项目 |
ssh | 配置了SSH就直接push,不需要验证(除非设置了SSH密码) | 必须是该项目的拥有者(在GitHub配置了SSH的) |
-
Push推送
到远程仓库
git push 别名/仓库URL 分支名
遇到问题
:GitHub不再支持密码凭证Push。
解决办法:(注:也可以配置SSH,更方便)
A. 进入GitHub得到Token。
B. 修改远程仓库别名,将token加进去
git remote set-url 别名名称 https://Token@github.com/账户名/仓库名.git
eg:
git remote set url test01 https://XXXXXX@github.com/Fu_nan/git_test01.git
C. 再执行Push
方法链接
-
Fetch抓取
远程仓库
git fetch [remote name] [branch name]
A. 不指定别名和分支名,则抓取所有分支。
B.
抓取就是将远程仓库的更新都抓取到本地,不会进行合并
。 -
Pull拉取
远程仓库
git pull 别名/仓库URL 分支名
A. 当本地仓库和远程仓库内容不一致时,想要远程仓库的内容,就需要拉取。
B. 不指定别名和分支名,则拉取所有分支并更新当前分支。
C.
拉取就是将远程仓库的修改拉到本地并自动进行合并,等同于fetch+merge
。
遇到问题
:报错10054和Timed out
解决办法:
====================================
解决10054问题
git config –global http.sslVerify “false”
git config –global https.sslVerify “false”
====================================
解决Timed out问题
git config –global –unset http.proxy
git config –global –unset https.proxy
-
Clone克隆
远程仓库
git clone 仓库URL
Clone后会有三个操作:1、拉取代码 2、初始化本地仓库 3、创建别名(自动创建链接的别名)
合并冲突
(二)团队协作
甲:仓库创建者 乙:需要协同开发
甲:点进项目>>Settings>>Collaborators>>Add people>>对方的username or email>>邀请后Pending Invite复制邀请链接发送给乙。
乙:复制链接到浏览器>>Accept invitation接受邀请,乙就加入了开发,可以Push内容到仓库了。
(三)SSH免密登录
-
在
用户目录
下生成
.ssh
目录
ssh-keygen -t rsa -C email
,全点回车。 - 复制公钥(.pub)>>GitHub的Settings>>SSH and GPG keys>>New SSH key
-
ssh -T git@github.com
测试是否配置成功
设置SSH后,就可以不用Token的方式去操作仓库,更方便。
三、在Idea中使用Git
(一)配置Git
Idea会自动寻找Git的安装位置,点击Test可以测试是否有效;
如果没有自动寻找到就自行指定Git的位置(精确到git.exe)
(二)操作Git
- 在GitHub创建远程仓库
-
Idea中初始化本地仓库并提交到远程仓库
A. 新建
.gitignore
,加入
.idea
等不需要被管理的文件。(.gitignore一般都是通用的,如下)
# Created by .ignore support plugin
### Java template
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
*.zip
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.idea
*.iml
*.bak
*.class
*.rar
*.log
.project
.settings
.classpath
target
classes
lib
*.DS_Store
.gradle
build
out
log
B. 初始化本地仓库
C. 提交到本地仓库(中间可能有弹窗,确定就行)
D. 提交到远程仓库
3. 克隆远程仓库Git>>Clone…
4. Push冲突。
多人协同开发时,无论任何时候想要Push时首先Pull,然后再Commit并Push
如果有提交冲突,Idea会有提示,通过图形化界面就可以解决。
(三)分支
四、注意事项
- 切换分支前先提交本地的修改
- 代码及时提交,提交了就不会丢
-
谨慎删除文件目录
五、GitHub
(一)同时使用GitHub和GitLab
对于以上两个参考文章,遇到的坑: