1、初始化
git init
2、设置签名
项目级别的优先级大于系统级别,若无项目级别时使用系统级别
项目级别:
git config user.name 内容
git config user.email 内容
系统级别
git config --global user.name 内容
git config --global user.email 内容
查看签名
git config user.name
git config user.email
3、查看工作区/暂存区文件状态、分支状态等
git status
4、给远程仓库配置别名
git remote add 别名 仓库https地址
4、将文件添加到暂存区
git add 文件名.后缀名
git add . 将当前路径下的所有文件添加到暂存区,不包括被删除的文件
git add -u 仅监控已经被add的文件,会将被修改的文件再提交到暂存区
git add -A 上面两种命令的合集,包括被删除的文件记录
5、将文件从暂存区撤回
git rm --cached 文件名.后缀名
6、从暂存区提交到本地库
git commit 文件名.后缀名
git commit -m "提交信息" 文件名.后缀名 即可不进入vm操作
6.5、修改上一次提交
git commit --amend 修改代码git add 后,使用改命令,可以修改上一次的提交日志
6.6、合并多次commit
git rebase -i 合并区间; 具体用法:https://www.cnblogs.com/wangiqngpei557/p/5989292.html或合并多次commit文章
6.7、合并指定的commit到指定的分支上
如果存在多个commit,则可能会存在多次cherry-pick合并,但可以通过合并commit解决
1. git log 找到commit ID,此例的commitId是a12345
2. git checkout master 切换到master分支
3. git cherry-pick -i a12345 将commit(a12345)合并至master
处理冲突:
冲突修改后
git add .
git cherry-pick --continue:解决完冲突之后,执行此命令完成正常合并
git cherry-pick --skip: 跳过这个冲突,不建议使用
git cherry-pick --abort: 放弃本次合并
7、按6中第一种方式提交后的vm编辑器操作
:set nu 显示行号
i 进入编辑模式,首行enter换行,写修改信息
esc 后 :wq 退出vm
8、 查看历史提交记录
空格向下翻页、b向上、q退出
git log
git log --pretty=oneline 省去多余换行的简介显示
git log --oneline 在上一个的基础上,更加简洁了hash值
git reflog 在上面基础上,增加了当前版本指针信息,便于前进后退 (推荐)
head@{移动到当前版本需要多少步}
9、文件修改后的提交操作
方式一:git add 文件名.后缀名 走6、7操作
方式二:git commit -m "提交信息" 文件名.后缀名
10、根据hash索引进入到指定版本
git reset --hard 索引值(git reflog中第一个字符串)
--soft 仅在本地库移动指针
--mixed 在本地库移动指针、重置暂存区
--hard 在本地库移动指针、重置暂存区和工作区
11、删除的文件找回
方式一:文件已经提交到本地库,回退版本库,10
方式二:文件已经提交到暂存区,git reset --hard HEAD
12、比较文件差异
方式一:git diff 文件名.后缀名 未提交到暂存区
方式二:git diff HEAD 文件名.后缀名 提交到暂存区(git add后)
方式三:git diff 索引值 文件名.后缀名 和某个版本的文件进行比较
方式四:不加文件名,比较工作区与缓存区
13、查看所有分支
git branch -v
14、创建新分支
git branch 分支名
15、切换分支
git checkout 分支名
16、合并分支
(1)切换到需要合并的分支上
(2)执行git merge 分支名
17、解决合并产生的冲突
(1)编辑文件到正常
(2)git add 文件名.后缀名 提交到暂存区
(3)git commit -m "提交日志" 不带文件名
19、推送
git push 别名 分支名
git push -u 别名 分支名
-u表示下一次使用 git push 就相当于执行 git push 别名 分支名
20、暂存改动
git stash save -a “message”
git stash drop <stash@{ID}> 删除暂存
git stash list 暂存列表
git stash clear 删除全部暂存
git stash pop <stash@{ID}> 恢复暂存
20、克隆
git clone https地址
克隆后的效果:
(1)克隆远程仓库地址别名
(2)初始化本地库
(3)下载
21、拉取
pull 是fetch 和 merge的合并
方式一:
git fetch 远程仓库别名 远程仓库分支
git merge 远程仓库别名/远程仓库分支
方式二:
git pull 远程仓库别名 远程仓库分支
方式三:
git fetch <远程主机名> <分支名>
git fetch origin <branch-name>:<local-branch-name>
22、团队协作冲突
前一个人将代码push进仓库后,后一个人也将该文件push,会失败,需要先pull,才能push
23、添加成员,输入框输入其账号
24、邀请后复制地址,发送给成员邮箱
25、团队外的成员提交
团队外:
(1)点击仓库页面fork图标,然后将项目克隆到本地
(2)将修改内容提交推送后
(3)点击Pull Request
(4)点击New pull request
(5)点击Create pull request
(6)填写标题和提交信息
团队:
(7)团队成员点击Pull request
(8)审核代码,Commits 进行哪些提交, File changed 做了哪些修改
(9)可以在对话框继续交流
(10)回到Conversation,点击Merge pull request合并代码,填写合并信息,继续点击
26、忽略文件配置
https://github.com/github/gitignore(官网有对应语言的忽略模板)
(1)创建.gitignore文件,填写忽略文件信息
文件夹名 忽略文件夹
(2)创建.gitconfig文件,内容都不需要加''引号
[user]
name=git账号名
email=git邮箱
[core]
excludesfile=.gitignore文件所在的绝对路径,注意路径的斜线为/或\\
忽略文件.gitignore
# 此行为注释 会被Git忽略
# 忽略 node_modules/ 目录下所有的文件
node_modules
# 忽略所有.vscode结尾的文件
.vscode
# 忽略所有.md结尾的文件
*.md
# 但README.md 除外
!README.md
# 会忽略 doc/something.txt 但不会忽略doc/images/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为txt文件
doc/**/*.txt