前言
关于git的命令都是通过git bush来输入的
一般的git命令必须以git开头!例如下面的命令
git config --list
所有配置
git三区
工作区 (working) .git上一层目录(项目的目录)
暂存区
.git
内部一部分是暂存区
本地仓库
.git
内部的一般是本地仓库
git add 文件
作用: 1. 让git跟踪这个文件 2. 把文件添加到暂存区
git commit
文件
-m 用双引号扩上注释内容
可以跟上提交的文件名,如果不指定文件名,则提交所有在暂存区里的所有文件
把文件提交到本地仓库
忽略文件
忽略所有的
.a 文件 .a
但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a>
只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO. 不递归的忽略
/TODO
忽略任何目录下名为 build 的文件夹 递归的忽略
build/
忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/.txt
忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
版本控制
git reset --hard HEAD^
(有几个^就回退几个版本)
git reset --hard HEAD~1
(数字代表回退版本个数)
git reset --hard
版本号
git log
只记录提交记录. 当前版本以前
git reflog
显示所有的记录(提交, 版本回退, 前进)
使用本地仓库中的文件, 覆盖工作区的文件 --
可以省略
git checkout -- a.txt
git rm --cache d.txt
放弃跟着文件
在git中, 只要提交过的文件, 任何的误删都可以回复
暂存区和工作区的区别:
git diff a.txt
工作区和本地仓库的区别:
git diff HEAD a.txt
暂存区和本地仓库的区别:
git diff --cached a.txt
分支
有哪些分支
git branch -v
创建新的分支
git branch dev
切换分支
git checkout dev
合并分支
把dev合并到master
1. 先切换到master git checkout master
2. git merge dev
合并的冲突:
如果两个分支, 修改了同一行, 则会产生冲突(master|MERGING)
修改冲突文件, 一定要和同事商量
告诉git 冲突解决完毕
github
是一个中央仓库.
github | 码云
代码推送到github, 两种方式
1. https 每次都需要密码
2. ssh 配置免密登录, 不需要每次输入密码
- 在本地生产秘钥
- 把公钥copy到github
推送仓库:
1. 现在github创建一个仓库
2. 在本地添加远程地址
it remote add
远程代号 远程地址
3. 推送
git push -u
远程代码 本地分支
协作开发
团队内开发
新人入职:
-
先clone整个仓库
git clone …
关于远程的配置以及包含 -
更新 fetch
只把远程的分支拉来, 但是没有merge
get fetch origin master
-
把远程分支(origin/master)合并到本地分支
git merge origin/master
-
推送
注意:
2和3可以合并为一个命令:
git pull 等价于: fetch+merge
团队间合作
- fock 求他人的项目到本人的仓库
- 更新代码
- 请求作者合并代码
合作开发如何尽量避免冲突:
1. 尽量每个人只更改自己的文件的代码
2. 找leader负责公共文件
减少冲突:
1. 每天上班第一件事, 先更新代码到最新的版本
2. 每次提交代码前, 先pull
git push --forch