环境配置
-
设置/重设用户信息
git config --global user.name “xxx” git config --global user.email “xxxx@xxxxxx”
-
查看配置信息
git config --list git config --user.name
-
以上命令设置的信息通常会默认保存在
C:\Users\xxx\.gitconfig
文件中[user] email = xxxx@xxxxxx name = xxx [gui] encoding = utf-8
获取Git仓库
-
本地初始化一个Git仓库
进入你希望创建Git仓库的所在文件夹,在Git Bash中执行
git init
命令
文件夹中出现一个.git
隐藏文件,即为初始化成功,只不过该仓库还未与远程服务器建立关联
-
几个概念
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
-
从远程仓库克隆
git clone 远程Git仓库地址
本地仓库操作
-
文件有两种状态:
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
-
查看文件状态
git status git status -s # 使输出信息简洁
即hello.txt
未被纳入版本控制,README.md
未暂存起来,只是在本地做了修改 -
将文件加入暂存区
git add 文件名
-
将暂存区文件取消暂存
git reset 文件名
-
将暂存区文件提交到本地仓库
git commit -m "提交的信息描述" 文件名
也可以直接写git commit
,会进入Vim
编辑器让我们填写提交信息
-
Vim操作三步
i
:进入编辑模式Esc
:退出编辑模式:wq
:保存内容并退出Vim
-
删除文件
git rm 文件名
但这样删除的只是工作区的文件,还需提交才是真正在本地仓库删除
-
查看日志记录
git log
-
将文件添加至忽略列表
首先要创建一个
.gitignore
文件,可在Git Bash
中使用touch .gitignore
来创建*
是通配符,表示任意字符# 忽略 *.bak文件 *.bak # 忽略 c/c++ 编译后的文件 *.obj # 忽略 Java编译后的文件 *.class # 忽略 word创建的临时文件 ~*.doc ~*.docx # 忽略debug目录下的所有文件 debug/ # 忽略doc目录下所有 .pdf文件 doc/**/*.pdf
远程仓库操作
- 查看远程仓库
如果已经克隆了远程仓库,至少能看到origin,这是Git克隆的仓库服务器的默认名字git remote git remote -v git remote show origin
- 添加远程仓库
在本地初始化一个仓库后,还未与远程仓库发生关联,这时便可添加一个远程仓库进行关联git remote add 仓库名 仓库地址
- 移除远程仓库
该命令只是从本地移除远程仓库的记录,即解除关联,不会影响到真正的远程仓库git remote rm 仓库名
- 从远程仓库中fetch
git fetch 是从远程仓库中获取最新版本到本地仓库,不会自动merge
- 从远程仓库中pull
git pull是从远程仓库获取最新版本并自动merge到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数
--allow-unrelated-histories
- 推送到远程仓库
git push [remote-name] [branch-name]
这时会跳出一个要求填写远程服务器账号密码的窗口
提交成功
Git分支
-
查看分支
-
创建分支及切换分支
-
推送分支至远程仓库分支
-
合并分支
将b1分支合并到master分支
当在b1分支和master分支同时修改内容,再将b1分支合并到master分支,会出现分支冲突
这时Git会将冲突部分的内容让我们手动修改
再用git add
标识冲突已经解决,重新commit
-
删除分支
git branch -d b1 git push origin -d branchName #删除远程仓库的分支
如果在要删除的分支做了一些开发动作而未push或者merge到其他分支,则执行删除命令不会删除该分支,若坚持删除,把
-d
改为-D