工程协作工具(一)git

【一】git安装
 
1.window安装
 
https://git-scm.com/downloads下载windows版本,安装即可
 
工程协作工具(一)git_第1张图片
 
打开git bash
 
输入初始化的用户名和密码
$ git config --global user.name "jiangzengkui"
$ git config --global user.email " [email protected]"
 
如果不初始化,则
【二】基本操作命令集
注意都是在git bash窗口里操作的,不是dos
 
 
git init
.初始化  git init
cd到存放仓库的目录,执行 git init命令,生成一个.git的隐藏文件夹
git add
把文件放入暂存区
git add .  当前目录的所有未暂存的文件暂存起来,*表示所有文件
git  add a.txt b.txt、
 
  两个文件
git add documentation/*.txt 添加 documentation 目录及其子目录下所有 *.txt 文件的内容
git commit -m
把暂存区的文件提交到本地仓库
git commit -m "这里写的是备注"
git log
显示commit的历史信息
工程协作工具(一)git_第2张图片
git reset
git reset --hard head^         回退到上一个版本
git reset --hard head^^        回退到上上个版本
git reset  --hard head~100      回退到之前100个版本
 
2.回滚到指定版本
git reset --hard  版本id  
版本id是commitId,写前几位即可
工程协作工具(一)git_第3张图片
eg:
 $  git reset --hard  bc999ea9f0
 
注意回退是已经commit的版本,可以回退也可以前进
git reflog
显示执行过得所有命令集,与关闭窗口无关,
工程协作工具(一)git_第4张图片
找到一次操作的commitID就可以用git reset 回到这一步了
git status
查看文件没有被 commit的文件状态git操作状态(包含没有add和commit的文件)
eg:
   工程协作工具(一)git_第5张图片
两个文件
a1.txt文件,表示是commit后又被修改过,状态为:modiffied
index.html 表示是没有任何操作,才新增的,状态为:untracked
 
 
工作区/暂存区
工程协作工具(一)git_第6张图片
git的规则是add进入暂存区stage,commit则进去版本库
git diff
比较
文件对比
1.  git diff  filepath 工作区与暂存区比较
  git diff 是所有文件对比
  git  diff f1.txt  制定文件对比
2. git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较
3. git diff --staged 或 --cached  filepath 暂存区与HEAD比较
4. git diff branchName filepath  当前分支的文件与branchName 分支的文件进行比较
5. git diff commitId filepath 与某一次提交进行比较
git checkout
 
git reset HEAD  
场景1:
把工作区的内容恢复到上个暂存区的状态【没有add】,就是丢弃工作区的修改
场景2:
当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改
分两步,第一步用命令 git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:
已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退 一节,不过前提是没有推送到远程库。
git rm
删除文件
先git rm 文件名  在commit就可以了
工程协作工具(一)git_第7张图片
 
git show
1.查看最新的commit
git show
2.查看指定commit hashID的所有修改:
git show commitId
3.查看某次commit中具体某个文件的修改:
git show commitId fileName
 
 
 
 
 
 
 
本地已有仓库添加到远程仓库
 
场景: 先有本地库,后有远程库的时候,如何关联远程库。
 
在github上创建一个空远程仓库
 
获得提示如下
工程协作工具(一)git_第8张图片
 
1.创建一个本地新仓库与远程仓库关联
 
echo "# wetest" >> README.md
git init
git add README.md
git commit -m "first commit"
 
#和远程的仓库对接   jiangzengkui是账号,wetest.git是具体仓库地址
git remote add origin [email protected] :jiangzengkui/wetest.git
 
#把本地的推送到远程的master分支上
由于远程库是空的,我们第一次推送 master 分支时,加上了 -u 参数,Git不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。
 
 
 
origin master
 
以后本地修改后,要提交到远程仓库,用git push  origin master就可以了,不需要加 -u
2.如果本地已经有个仓库,需要把本地仓库和远程一个空仓库关联
 
关联远程库:git remote add origin(可修改) branch_Name(为空时默认为master) url
关联之后可以用git remote -v 来检查是否关联成功
git remote add origin [email protected]:jiangzengkui/wetest.git
git push -u origin master
 
注意:本地工作区目录名和远程仓库名没有必然联系

小结

(1)要关联一个远程库,使用命令 git remote add origin git@server-name:path/repo-name.git
(2)关联后,使用命令 git push -u origin master 第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,
而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
 
$ git push origin
上面命令表示,将当前分支推送到 origin主机的对应分支。 
如果当前分支只有一个追踪分支,那么主机名都可以省略。 
$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候 -u选项会指定一个默认主机,这样后面就可以不加任何参数使用 git push。
$ git push -u origin master 上面命令将本地的 master分支推送到 origin主机,同时指定 origin为默认主机,后面就可以不加任何参数使用 git push了。
 不带任何参数的 git push,默认只推送当前分支,这叫做 simple方式。此外,还有一种 matching方式,会推送所有有对应的远程分支的本地分支。 Git 2.0版本之前,默认采用 matching方法,现在改为默认采用 simple方式。
 
 
从远程仓库克隆到本地仓库
 
 
已经有远程仓库,需要clone到本地,形成本地仓库
1.打开远程仓库,获得clone地址
工程协作工具(一)git_第9张图片
 
2.执行方法 $ git clone 获得的地址
 
工程协作工具(一)git_第10张图片
 
则在本地git_data文件夹中建立了一个sex的仓库
 
cd sex
进入本地仓库,以后修改就可以用git push origin master 推送到远程仓库了
 

小结

要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone 命令克隆。
Git支持多种协议,包括 https ,但通过 ssh 支持的原生 git 协议速度最快。
 
 
分支与合并
 
 
git branch
创建分支名
git branch 分支名
git checkout
切换到分支
git checkout  -b
创建并切换到分支
 
git merge
在当前分支下,把指定分支名合并到当前分支
git branch -d
删除指定分支
git branch
查看有哪些分支,当前分支加*
 
 
 

Git Bash运行命令后,一直出现冒号:,怎么退出

按Q退出
 
 
常见错误:
工程协作工具(一)git_第11张图片
 
原因:
Permission denied (publickey) 没有权限的publickey ,出现这错误一般是以下两种原因
  • 客户端与服务端未生成 ssh key
  • 客户端与服务端的ssh key不匹配
找到问题的原因了,解决办法也就有了,重新生成一次ssh key ,服务端也重新配置一次即可。
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(工程协作)