初始化配置

  1. #配置使用git仓库人员姓名
  2. git config --global user.name "your name come here"
  3. #配置使用git仓库的人员email
  4. git config --global user.email xxx@xxx.com
  5. #配置到缓存 默认15分钟
  6. git config --global cerdential.helper cache
  7. #修改缓存时间
  8. git config --global cerdential.helper cache --timeout=3600
  9. git config --global color.ui true
  10. git config --global alias.co checkout
  11. git config --global alias.ci commit
  12. git config --global alias.st status
  13. git config --global alias.br branch
  14. git config --global core.editor "mate -w"
  15. #列举所有配置
  16. git config -1
  17. #用户的git配置文件~/.gitconfig

获取git仓库

  1. #初始化一个仓库
  2. git init
  3. #clone远程仓库
  4. git clone git@xxx.git
  5. #添加远程仓库 origin 语法为 git remote add [shortname] [url]
  6. git reomte add origin git@xxx.git
  7. #查看远程仓库
  8. git remote -v

提交修改内容

  1. #添加当前修改的文件到暂存区
  2. git add .
  3. #自动追踪文件,包括已经手动删除的,状态为deleted
  4. git add -u
  5. #提交你的修改
  6. git commit -m ‘你的注释’
  7. #推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
  8. git push origin master
  9. #查看文件状态
  10. git status
  11. #跟踪新文件
  12. git add readme.txt
  13. #仅在暂存区删除,保留文件在当前目录,不在跟踪
  14. git rm -cached.txt readme
  15. #重命名文件
  16. git mv readme.txt readme
  17. #查看提交的记录
  18. git log
  19. #修改最后一次提交注释的,利用-amend 参数
  20. git commit --amend
  21. #忘记提交某些修改,下面的三条名lion过只会得到一个提交
  22. git commit -m "add readme.txt"
  23. git add readme_forgotten
  24. git commit -amend
  25. #假设你已经使用git add . ,将修改过的文件阿a,b提交到暂存区
  26. #现在你只想提交a文件,不想提交b文件,应该这样
  27. git reset HEAD b
  28. #取消对文件的修改
  29. git checkout --readme.txt

查看,切换,创建,删除分支

  1. #查看远程分支
  2. git branch -r
  3. #创建新的分支
  4. git branch <new_branch>
  5. #查看各分支最后提交的信息
  6. git branch -v
  7. #查看已经被合并到当前的分支
  8. git branch --merged
  9. #查看尚未被合并到当前的分支
  10. git branch --no-merged
  11. #切换到某个分支
  12. git checkout <branch>
  13. #创建新的分支,并且切换过去
  14. git checkout -b <new_branch>
  15. #基于branch创建新的分支
  16. git checkout -b <new_branch> <branch>
  17. #把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
  18. git checkout $id
  19. #把某次历史提交记录checkout出来,创建成一个分支
  20. git checkout $id -b <new_branch>
  21. #删除某个分支
  22. git branch -d <branch>
  23. #强制删除某个分支(未被合并的分支需要强制删除)
  24. git branch -D <branch>

查看提交记录

  1. #查看提交记录
  2. git log
  3. #查看该文件每次提交的记录
  4. git log <file>
  5. #查看每次详细修改内容的diff
  6. git log -p <file>
  7. #查看最近两次详细修改内容的diff
  8. git log -p -2
  9. #查看提交统计信息
  10. git log --stat

mac上可以使用tig代替diff和log,brew install tig

git基本的分支管理

  1. #创建一个分支
  2. git branch dev
  3. #切换工作目录到dev
  4. git checkout dev
  5. #将上面的命令合到一起,创建的分支并切换到dev
  6. git checkout -b dev
  7. #合并dev分支,当前工作目录为master
  8. git merge dev
  9. #合并完成后,没有冲突,删除dev分支
  10. git branch -d dev
  11. 拉去远程仓库的数据,语法为 git fetch [reomte-name]
  12. git fetch
  13. #fetch 会拉取最新的远程仓库数据,但不会自动到当前目录下,要自动合并
  14. git pull
  15. #查看远程仓库信息
  16. git remote show origin
  17. #建立本地的dev分支追踪远程仓库的develope分支
  18. git checkout -b dev origin/develope

git远程仓库管理

  1. #查看远程服务器地址和仓库名称
  2. git romote -v
  3. #查看远程服务器仓库状态
  4. git remote show origin
  5. #添加远程仓库地址
  6. git romote add origin git@xxx.git
  7. #设置远程仓库地址(用于修改远程仓库地址)
  8. git romote set-url origin git@xxx.com
  9. #删除远程仓库地址
  10. git remote rm <repository>

创建远程仓库

  1. #用带版本的项目创建纯版本仓库
  2. git clone --bare robbin-site robbin-site.git
  3. #将纯仓库上传到服务器上
  4. scp -r my_project.git git@git.csdn.net:~
  5. #在服务器上创建纯仓库
  6. mkdir robbon_site.git && cd robbon_site.git && git --bare init
  7. #设置远程仓库地址
  8. git romote add origin git@xxx.git
  9. #客户端首次提交
  10. git push -u origin master
  11. #首次将本地develope分支提交到远程develope分支,并且track
  12. git push -u origin develope
  13. #设置远程仓库的HEAD指向master分支
  14. git remote set-head origin master
  15. #也可以设置跟踪远程仓库和本地仓库 ### ~~~
  16. git branch --set-upstream master origin/master
  17. git branch --set-upstream develope origin/develope

git安装注意事项

mac电脑下载homeview
安装程序下一步 -> 下一步 -> 下一步
*注意选项:
use git from branch only 只能git branch使用
use git from the windows command prompt 只能用windows的操作窗口 win + r -> cmd git
—version 可查看到git
use git and optional unix tools from the windows cpmmand prompt (把linux命令集成到windows中)能用git 和 window命令窗口

LINUX基础命令

  1. #查看当前目录结构(-a包含隐藏文件)
  2. ls -l/-a
  3. #清屏
  4. clear
  5. #进入当前路径
  6. cd xxx[路径地址]
  7. #进入同级
  8. cd ./
  9. #进入上级
  10. cd ../
  11. #创建文件夹
  12. mkdir [文件夹名字]
  13. #创建空文件
  14. touch [文件名字]
  15. #向文件中插入或者管理一些内容
  16. vi
  17. #进入插入模式
  18. i
  19. #保存并退出内容的插入模式
  20. ESC + :WQ
  21. #向指定的文件中插入内容(有该文件就写入,如没有该文件会自动创建并写入)[每次会覆盖执行]
  22. echo xxx > xxx.txt
  23. #查看文件中的内容
  24. cat
  25. #拷贝文件
  26. cp
  27. #删除文件
  28. rm -r 递归删除 -f 强制删除(一旦删除无法还原)
  29. 例:删除依赖 rm node_mouldus -rf 删除所有 rm * 强制删除所有后缀为js rm *.js -rf

git的常规流程

  1. git分为三个区域:
  2. 工作区:代码开发
  3. 暂存区:暂存代码
  4. 历史区(暂存区):保存历史版本代码
  5. #创建git仓库
  6. git init
  7. #当前工作区修改的所有内容全部提交到暂存区
  8. git add ./-A
  9. #[可以指定提交的某个文件
  10. git add xxx.js]
  11. #暂存区提交到历史区,生成一个历史版本
  12. git commit -m ‘提交描述’ [可指定提交 git commit xxx.xx -m '指定提交某个文件']
  13. #[每次区域间进行提交后,都不会删除原有区域中的内容,这样保证下次提交,把区域对比出来不一样的内容提交,而不是所有的]
  14. #怎么查看当前修改的文件处于哪个区域?
  15. git status #红色:工作区 绿色:暂存区 看不见:已经提交到历史区,三区保持一致了
  16. #把暂存区的某个文件删除(场景:提交到暂存区的内容不好,我们可以删除)
  17. git rm --cached xxx.xx
  18. #把暂存区的文件全部删除
  19. git rm --cached . -r
  20. #如果在删除过程中发现从暂存区删除的文件在工作区被修改了,只有加上 -f 才能强制从暂存区把内容删除掉
  21. #场景:提交到暂存区一份,把工作区的修改了,但改的东西不好,想把暂存区内容撤回到工作区(覆盖新的内容)
  22. git checkout xxx.xx [暂存区内容没有消失,只是把工作区最新修改的信息覆盖了,让工作区和暂存区保持一致]
  23. #比较各区之间的区别
  24. #工作区vs暂存区
  25. git diff
  26. #工作区vs 历史区 master分支
  27. git diff master
  28. #暂存区vs历史区
  29. git diff --cached

git回滚

  1. #暂存区回滚到工作区
  2. git checkout .
  3. ##把上一个暂存区中的内容撤回到工作区
  4. #把最近的暂存区的内容删除掉
  5. git reset HEAD .
  6. #暂存区回滚到工作区
  7. git checkout .
  8. #历史区撤回到工作区
  9. git reset --hard 版本号[前7位即可]
  10. #查看历史操作信息
  11. history > xxx.txt
  12. #查看历史回退信息
  13. git reflog

git团队协作开发

  1. 一:基本开发流程
  2. 1)首先创建中央仓库,可基于gitHub/codding/gitLab/码云来创建
  3. (最好不要创建空仓库,因为空仓库中没有任何分支,只有提交一次历史信息才会生成master分支)
  4. 把开发者都列入仓库的开发群组中,这样每个开发者用自己的账号,都有权限操作这个仓库了
  5. [当然也可以不这样做,所有开发者用统一的账号也可以,为了防止不知道是谁提交的,
  6. 我们需要让每一个客户端在本读的git全剧配置中设置和当前使用代码管理网站相同的用户和邮箱
  7. git config --global user.name xxx ...]
  8. 2)创建客户端本地仓库(一个开发者就是一个仓库),还需要让本地仓库和远程仓库产生关联,
  9. 这样才能实现后续的信息同步
  10. git init 创建本地仓库
  11. git remote add origin ‘远程仓库地址’ 连接远程仓库
  12. git remote -v 查看连接信息 origin 是连接名称,一般都用这个名字,当然名字可以随便设置)
  13. git remote rm origin 移除本地仓库和远程仓库连接
  14. git remote update origin 更新远程仓库
  15. 有更简单的方式:只要把远程仓库克隆到本地,就相当于创建本地仓库,而且自动建立了连接,
  16. 并且把远程仓库中的内容也同步到了本地
  17. git clone ‘远程仓库地址’ ‘本地创建文件夹名称(不写默认是仓库名字)’
  18. 3)各自和中央服务器同步信息
  19. #把本地历史区的信息推送到中央服务器上(推送)
  20. git push origin master (每一次push之前最好都pull一下,如有冲突,在本地处理下,在提交)
  21. #把中央仓库的信息和本地仓库保持同步(拉取)
  22. git pull origin master
  23. 团队协作开发 存在潜在问题 代码冲突

团队协作解决冲突

无分支管理模式

  1. 提交项目先拉取
  2. git pull origin master
  3. git add .
  4. git commit -m '描述'
  5. git push origin master
  6. 同一行代码冲突:在提示的冲突命令行中同意即可
  7. ESC :wq (按enter键即可)
  8. 然后提交
  9. 不是同一行代码冲突:尝试合并失败,我们需要收到把代码进行合并,然后提交

单分支管理模式

  1. 每天第一件事先把master分支代码拉取到本地master分支,每个人在自己本地仓库中,先进行分支创建和切换
  2. git pull origin master
  3. 分支是指历史区的分支,创建分支就是创建不同的线路来管理历史版本
  4. git branch 查看当前分支
  5. * master 星代表当前在哪个分支上
  6. git branch dev 创建一个叫dev的分支(创建完成后,会把本地的master的内容同步到dev分支上)
  7. git checkout dev 切换到dev分支
  8. git checkout -b dev 创建并切换到这个分支
  9. 当工作区有新修改内容不想提交生成历史版本时:
  10. git stash 暂存文件
  11. git stash pop
  12. 分支已经有生成历史版本的,也有没开发完的,这时不能直接切换分支,需要先暂存内容
  13. 所以 使用场景为: 当工作区和暂存区还有没提交到历史版本的代码,要进行分支的切换,先进行 git stash进行暂存,在git checkout master切换分支,用git stash pop还原暂时存储的内容,最后合并分支 git merge dev [A分支merge B B合并到A分支]

important

  1. 常用:
  2. git clone “远程仓库地址” 把远程仓库克隆到本地(本地自动和远程建立连接,自动把远程中的信息同步到本地了,本地也是一个单独的仓库:建议远程仓库不要是空的,至少要有一个master分支)
  3. git pull origin master 把远程仓库master信息同步到本地仓库master
  4. git push origin master 把本地仓库master中的信息同步到远程仓库master
  5. 中(需要使用gitLab的用户密码来进行权限校验:一般都是租场在远程仓库中把组员的账号都放到小组中,这样组员用自己的账号也有权限操作仓库了。最好在本地的git配置中把用户名和邮箱修改为和gitLab账号相同的信息)
  6. 如有冲突:
  7. 1.进入到编辑框模式, i -> ESC -> :wq 即可
  8. 2.自己会把两份代码都保存到本地存储中,自己手动去选择要哪个,改完后重新提交
  9. git checkout -b xxx 创建分支并且切换到指定分支(可以本地master中的历史信息同步到新创建的分支中)
  10. git branch 查看分支
  11. git branch xxx 创建分支
  12. git checkout xxx 切换分支
  13. git branch -D xxx 删除分支
  14. git merge xxx xxx分支的信息合并到当前分支下
  15. git stash / git stash pop 暂存在切换分支时,有一部分信息并没有提交成为历史版本,为了防止信息的丢失,我们需要先使用stash保存,然后再j基于 stash pop 还原