赞
踩
阿里镜像:http://npm.taobao.org/mirrors/git-for-windows/
下载完成后安装一直选择下一步即可
Git Bash:Linux & Unix风格的命令行(推荐使用)
Git CMD:Windows风格的命令行
- #查看配置
- git config -l
- #查看系统配置
- git config --system --list
- #查看当前用户配置
- git config --global --list
相关配置文件:
- Git\etc\getconfig:在Git安装目录下的 gitconfig文件 ===》系统配置
- C:\User\Administrator\.gitconifg:当前登录用户的gitconfig文件===》全局(global)配置
Git在每次提交时,都会使用到设置的用户名和邮箱信息
- #设置用户名
- git config --global user.name "xxxxx"
- #设置邮箱
- git config --global user.email "xxxxx"
global为全局配置,Git总是将使用该信息来处理操作。若在特定场景下需要使用不同的用户名和email地址,可以使用该命令去掉 --global。
两种方式的比较:
1. https方式:每次都需要输入密码和用户名
2. ssh方式:使用SSH密钥避免繁琐的登录问题
- #进入 C:\Users\Administrator\.ssh 目录
- #生成公钥
- ssh-keygen -t rsa
git clone xxx
- #从远程仓库克隆项目至工作台
- git clone xxxx
-
- #工作台上对项目进行修改后,提交到暂存区
- git add .
-
- #将暂存区的文件,提交至本地仓库
- git commit -m "消息内容"
-
- #将本地仓库上的文件,提交至远程仓库
- git push
- untracked:未跟踪,此文件未加入到git库,不参与版本控制
- unmodify:文件已加入到git库,未修改,文件内容与本地库的文件快照完全一致
- modified:文件已加入到git库,经过修改,文件内容与本地库的文件快照不一致
- staged:暂存状态
查看四种文件状态
- #查看指定文件状态
- git status [filename]
-
- #查看所有文件状态
- git status
四种状态的切换
- 在工作区新建一个文件 xxx.txt,此时的文件状态为 untracked(未跟踪)
- 执行git add . ,此时文件状态为 staged(暂存状态)
- 执行git commit -m "消息内容",此时文件会存到本地仓库
- 对该文件进行修改,再次git status,文件进入modified(文件与仓库不一致)
- 再次执行git add . 并 commit ,文件进入unmodify状态(文件与仓库完全一致)
- 执行git push,将文件push到远程仓库中,可以在远程仓库查看新增的文件
实际上很多时候,不希望把某些文件加入到版本控制中,一般在项目中都会有.gitignore文件
- #忽略所有 .txt 结尾的文件
- *.txt
-
- #忽略除 aaa.txt 除外的所有 .txt 结尾的文件
- !aaa.txt
-
- #忽略项目根目录的文件,不包括abc目录
- /abc
-
- #忽略 zzz/目录下的所有文件
- zzz/
-
- #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
- doc/*.txt
- 新建项目,绑定Git(将克隆下来的远程仓库的git文件目录拷贝至项目中即可)
- 修改文件,用IDEA操作(add至暂存区 =》 commit至本地仓库 =》 push至远程仓库)
几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。
使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。
- #列出所有本地分支
- git branch
-
- #列出所有远程分支
- git branch -r
-
- #新建一个分支,但仍停留在当前分支
- git branch [branch-name]
-
- #新建一个分支,并切换到该分支
- git checkout -b [branch-name]
-
- #合并指定分支到当前分支
- git merge [branch]
-
- #删除分支
- git branch -d [branch-name]
-
- #删除远程分支
- git push origin --delete [branch-name]
- git branch -dr [remote/branch]
一旦某分支有了独立内容,就需要将其合并回主分支
本地提交
System.out.println("hello world");
其他提交
System.out.println("world hello");
假设两者修改同一个文件后合并时发现这一行不一致,git无法选择保留或丢弃本地提交和其他提交,只能报冲突让人为处理。
- // master
- System.out.println("hello1");
-
- // dev1
- System.out.println("hello1");
-
- // dev2
- System.out.println("hello2");
- // merge 后
- System.out.println("hello2");
master:主分支,为dev1和dev2的公共祖先
dev1:开发者1
dev2:开发者2
当前时dev1没有进行修改,而dev2进行了修改,git会自动把结果合并为dev2的代码
- // master
- System.out.println("hello1");
-
- // dev1
- System.out.println("hello2");
-
- // dev2
- System.out.println("hello3");
而如果dev1和dev2都进行了修改,此时会产生合并冲突,git无法合并,需要人为进行合并
即人为选择dev1的修改还是dev2的修改
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。