- git工作流程
- git的安装
1)安装git
2)安装乌龟
3)汉化乌龟 - 创建本地仓库
在一个空目录,打开git bash here, 输入命令 git init
删除并保留本地副本
选中目标文件,右键乌龟,删除并保留本地副本
这时候目标文件会有一个X删除标记,再提交,版本库里就没有了目标文件。
4. 将一个工程添加到本地仓库
- 将工程目录复制到 workspace(带有.git的文件夹)里面去
- 忽略.idea 和其他不用提交到仓库的文件夹
.gitignore 这个文件需要提交
5.使用github创建一个远程仓库
New respository
git bash here
1)ssh 模式
git remote add origin git@github.com:xxx/repo1.git
使用git bash 创建ssh 公钥与私钥
输入命令 ssh-keygen -t rsa
回车,会在用户目录下生成两个文件
a.id_rsa.pub b.id_rsa 其中id_rsa.pub是公钥,
打开github 头像 + settings SSH and GPG keys
复制公钥内容进去
可以使用命令 git push -u origin master 提交上去了
也可以使用乌龟来配置提交
2)https方式
需要用户名和密码验证
6. 从github clone到本地仓库(Code -> Clone with SSH or https)
可以选择 ssh或者https 任意一种
直接git clone git@github.com:xxx/repo1.git
- 解决冲突
a. 情景一
同一分支,B同学修改一文件已经push origin master了,A同学并不知道也没有pull,A同学也修改了同一文件,A在push origin master 的时候出现冲突,推送失败,这时候处理A同学处理步骤:
1)需要先pull远程代码:git pull origin/master (拉取远程仓库进行自动合并) 如果能自动合并,git会提示auto merge成功,这时可以直接git push origin master
2)如果不能自动merge,git会提示auto merge失败,需要手动解决冲突:
git status 查看冲突情况修改冲突
git status 查看冲突解决情况
git add .
git commit -m ‘解决冲突的注释说明’
git push origin master
比如
=======这一段就是,就是B同学修改的内容,
2+21:21
>>>>>>> b6f98f9237d1c91f9628477bf2ddb500c8f89f20
<<<<<<< HEAD 这一段就是,就是A同学修改的内容,
1+21:21
=======
1 20:53
2+21:00
1+21:01
<<<<<<< HEAD
1+21:21
=======
2+21:21
>>>>>>> b6f98f9237d1c91f9628477bf2ddb500c8f89f20
A同学手动解决冲突如下:
1 20:53
2+21:00
1+21:01
1+21:21
2+21:21
8.分支相关
查看所有分支,包括远程 分支
git branch -a
如何拉去远程分支(比如拉去dev分支)
第一种方式
查看所有分支情况
git branch -a
* masterremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/master在本地创建dev分支,并切换到dev分支git branch devgit checkout dev直接pull远程dev分支git pull origin dev
第二种方式
我想从远程仓库里拉取一条本地不存在的分支时git checkout -b 本地分支名 origin/远程分支名git checkout -b dev origin/dev如果不成功也可以先执行git fetch origin dev然后再git checkout -b dev origin/dev
- 从git仓库,恢复误删的文件(工作区)
直接从本地把文件checkout出来就可以了,用不着从远程服务器上pull下来
因为,所有的历史版本你的本地都有的。
具体做法
git checkout file
同时恢复多个被删除的文件:
git ls-files -d | xargs -i git checkout {}