1 Git教程:https://gitee.com/progit/
2 配置信息
1.直接看配置文件
/etc/gitconfig(windows路径为安装目录/etc),使用git config --system时读写的就是这个文件。~/.gitconfig(windows路径一样),使用git config --global时读写的就是这个文件。
2.检查已有的配置信息:git config --list。
3.检查某个环境变量的设定:git config user.name。
3 远程仓库
1 查看当前配置的远程仓库
git remote:列出每个远程仓库的简短名字,单个远程仓库一般默认名为origin。git remote -v:显示所有远程仓库对应的克隆地址。
(-v -verbose 冗长的,啰嗦的)
2 从远程仓库抓取数据
git clone 【https://...】:克隆git fetch 【remote-name】:从远程仓库中拉取本地仓库没有的数据,运行完成后可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支。(git fetch origin)git pull:如果设置了某个分支用于跟踪某个远程仓库的分支,可以使用该命令自动抓取数据,然后将远程分支自动合并到本地仓库的当前分支。git push 【remote-name】【branch-name】:将本地仓库的数据推送到远程仓库。(git push origin master)
常用命令
git status:查看当前处于什么分支。
git checkout 【branchName】:切换到分支【branchName】。
git branch:查看当前项目所有的本地分支。
git branch 【branchName】:创建新分支【branchName】。
git branch -d 【branchName】:删除一个不包含未合并工作的分支。git branch -D 【branchName】:强制删除一个分支。
git checkout -b 【branchName】:创建新分支【branchName】并切换到该分支。
git fecth:将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git merge 【branchName】:将本地分支【branchName】的内容合并到当前所在本地分支。
git merge origin/【branchName】:将远程仓库中分支【branchName】的内容合并到当前分支对应的远程仓库分支。
git add .:将所有修改内容添加到暂存区。
git commit -m 【message】:将暂存区内容提交到本地仓库,并附带提交信息【message】。
状态
Untracke**d:未跟踪,此文件在文件夹中,但并没有加入到git库, 不参与版本控制。 通过git add 状态变为Staged。
Unmodif**y:文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致。 这种类型的文件有两种去处, 如果它被修改, 而变为Modified。 如果使用git rm移出版本库, 则成为Untracked文件。
Modified:**文件已修改, 仅仅是修改, 并没有进行其他的操作。 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。
Staged:**暂存状态。 执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。 执行git reset HEAD filename取消暂存,文件状态为Modified。
★案例:更新远程permission仓库
需求
现在共有四条分支:
【branch origin/master】
【branch origin/permission】
【branch master】
【branch permission】
需要将 origin/master的内容先拉取到master,
然后将本地master合并到本地permission,
再将本地permission内容推到origin/permission。
0 首先备份所有后端代码
1 从 origin/master 拉取到 本地master:
- 【branch permission】:git add .
 - 【branch permission】:git commit -m未合并master
 - 【branch permission】:git checkout master
 - 【branch master】:git status
 
On branch master. Your branch is ahead of ‘origin/master’ by 1 commit. (use “git push” to publish your local commits)
- 【branch master】:git pull
 - 【branch master】:git status
 
On branch master. Your branch is ahead of ‘origin/master’ by 2 commit. (use “git push” to …)
- 【branch master】:git checkout permission
 
2 将本地master merge 本地permission:
- 【branch permission】:git status
 
On branch permission. Your branch is ahead of ‘origin/permission’ by 3 commit. (use “git push” to …)
- 断开VPN,确保不会误操作污染远程分支
 - 【branch permission】:git merge master
 
3 将本地permission 推到 origin/permission:
- 【branch permission】:git status
 
On branch permission. Your branch is ahead of ‘origin/permission’ by 3 commit. (use “git push” to …)
You have unmerged paths.
(fix conflicts and run “git commit”)
              (use “git merge —abort” to abort the merge)
- 【branch permission】:处理冲突(<<<>>>master)
 
fe部分保留master的改动,后端部分保留permission的改动
- 【branch permission】:git add .
 - 【branch permission】:git commit -m合并了master分支
 - 【branch permission】:git status
 
On branch permission. Your branch is ahead of ‘origin/permission’ by 15 commit. (use “git push” to …)
发现本地master分支和本地permission分支的部分文件存在明显的差异,但第二步merge过程并没有标记或覆盖这些差异。下图为本地master merge 到本地permission后本地master分支(左)和本地permission分支(右)的对比:
 
 
 
修改后:
         modified:   bigdata-web-base-fe/package.json
                modified:   bigdata-web-base-fe/src/store/UserService.ts
                modified:   bigdata-web-base-fe/webpack.config.js
- 【branch permission】:git add .
 - 【branch permission】:git commit -m修改了master没能把变化merge到pemission的三个文件
 
3 files changed, 5 insertions(+), 8 deletions(-)
- 【brach permission】:git push
 - 【branch origin/permission】:检查远程permission分支,三个文件被修正
 
本地分支push到远程分支时有冲突的内容直接本地覆盖远程而不是产生conflict
