教程
安装
配置
1. 配置用户信息
- 用户名
$ git config --global user.name "John Doe"
- 邮箱
$ git config --global user.email johndoe@example.com
2. 检查配置信息
$ git config --list
3. 查看用户名
- 当前项目
$ git config user.name
- 系统用户
$ git config --global user.name
4. 查看邮箱
$ git config user.email
创建版本库
1. 初始化
$ git init
2. 添加忽略文件配置
$ touch .gitignore
忽略规则:
"#"表示注释
"*"表示匹配0个或多个任意字符,例如我想把项目根目录下的.xml后缀的文件全部忽略,可以这样
*.xml
1
"?"通配单个字符,即匹配一个任意字符
?.xml
1
“**” 表示匹配任意中间目录
a/**/z/?.xml
1
"/"开头表示目录,把根目录下的node_modules文件夹忽略
/node_modules
1
"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母。
[abc].xml
1
"!“表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用”!"规则是不起作用的。
REMOTE
初始化
-
克隆远程仓库到本地
$ git clone <url>
-
查看提交历史
$ git log
$ git log -p
用来显示每次提交的内容差异
$ git log -2
-2 来仅显示最近两次提交。
$ git log --stat
–stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。
$ git log --pretty=oneline
–pretty, 这个选项可以指定使用不同于默认格式的方式展示提交历史。用 oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。 另外还有 short,full 和 fuller 可以用,展示的信息或多或少有些不同。
$ git log [文件名]
查看某个文件的提交历史
$ git show [commit id] [文件名]
git show显示具体的某次的改动
- 查看提交状态
$ git status
分支
-
查看本地分支
$ git branch
-
查看远程所有分支
$ git branch -r
-
查看本地和远程的所有分支
$ git brach -a
-
新建分支
$ git branch [branchname]
$ git checkout [branchname]
-
切换本地分支
$ git checkout [branch name]
-
删除本地分支
$ git branch -d [branchname]
-
删除远程分支
$ git branch -d -r [branchname]
$ git push origin [branchname] //删除后推送至服务器
-
重命名本地分支
$ git branch -m [oldbranch] [newbranch]
-
分支的合并
$ git checkout [master]
$ git merge [branchname]
既然你的修改已经合并进来了,你已经不再需要 branchname 分支了。 现在你可以在任务追踪系统中关闭此项任务,并删除这个分支。
$ git branch -d iss53
遇到冲突时的分支合并。可以运行 git mergetool,该命令会为你启动一个合适的可视化合并工具,并带领你一步一步解决这些冲突:
$ git mergetool
从远程中获取
方式一 使用 git fetch
- 远程更新全部取回本地
$ git fetch
确认当前本地分支是否与你预想的一致,如果不一样,需要进行切换
$ git checkout [branch name]
如果只是想取回特定的分支,例如origin主机的master分支
$ git fetch origin master
- 查看刚取回的更新信息
$ git log -p FETCH_HEAD
取回更新后,会返回一个FETCH_HEAD,FETCH_HEAD指的是,某个branch在服务器上的最新状态。
这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支。
-
比较本地的仓库和远程参考的区别
$ git log -p master origin/master
-
把远程下载下来的代码合并到本地
$ git merge origin [branch name]
如果不带参数,则默认选择你当前所在的分支。
$ git merge
方式二 使用 git pull
-
如果不带参数,它会默认当前你所在的分支进行操作。
$ git pull
-
将远程主机的某个分支的更新取回,并与本地指定的分支合并
$ git pull origin [remote branch]:[local branch]
推入远程库
-
添加跟踪文件,暂存这次更新
$ git add [filename]
or
$ git add . // 添加当前整个文件夹
-
提交更新
$ git commit -m "comment content" // comment content为这次提交的评论
如果不带参数,则默认会打开一个vi或者vim的编辑器,进行comment的编写。
$ git commit
- 推送你的更新到远程服务器
$ git push
推送你的更新到远程服务器分支
$ git push origin [branch]
撤销暂存
将某个文件或文件夹从暂存区移除,下一次提交时,该文件就不再纳入版本管理了。
$ git rm [file/path]
如果只是一次commit失误,但仍然希望保留在当前工作目录中,例如当你忘记添加 .gitignore 文件,又不小心把a.xml提交更新,这一做法尤其有用。
$ git rm --cached a.xml
对项目做出贡献
-
将派生出的副本克隆到本地
$ git clone 【URL】
-
创建出名称有意义的分支
$ cd 【filename】
$ git checkout -b 【branchName】
-
修改代码
$ sed -i '' 's/1000/3000/' blink.ino
-
检查改动
$ git diff --word-diff
-
将改动提交到分支中
$ git commit -a -m 【desc】
通常花点时间来编写个清晰有用的描述是个不错的主意,
这能让作者明白为什么这个改动可以给他的项目带来好处,并且让他接受合并请求。
6.将新分支推送到 GitHub 的副本中
$ git push origin 【branchName】
- 到 GitHub 上查看分支并创建合并请求
网友评论