*Git优势:本地库和远程库都有记录,防止数据丢失。*
*操作本地库:*
git init 初始化.git文件
签名用来区分不同开发人员,和登陆GitHub远程库的账号密码无关。一般,不同项目,设置系统级别就行了。
项目级别签名认证:设置保存在.git/config文件里面。
git config user.name xxx
git config user.email xxx
系统级别签名认证:设置保存在系统用户目录user/.gitconfig文件里面。
git config --global user.name xxx
git config --globa user.email xxx
git status 查看暂存区、本地库状态
touch a1.php 创建文件
vim a1.php 创建文件,并编辑文件
git add a1.php 添加文件到暂存区
git rm --cached a1.php 从暂存区移除文件
git commit -m ‘描述信息’ a1.php 从暂存区提交到本地库(可以不add,直接commit,后悔的话没法从暂存区撤销)
*查看版本*:git log(最详细)、git log --oneline(一行)、git reflog(一行、推荐使用这种)
*版本修改*:git reset --hard 复制的索引字符(还有另外两种方式、推荐这种)
版本修改hard、 mixed 、soft的区别:hard本地库、暂存区、工作区全都更改到该版本;
mixed本地库、暂存区;soft本地库。推荐直接hard。
*永久删除文件后(commit提交过删除文件),找回*:回退版本。
添加到暂存区删除文件找回(只add过,此时未生成新版本):git reset --hard HEAD 回退到最近一次记录的版本,或者其他版本,git reset --hard 其他版本索引
*比较文件*:git diff apple.txt 工作区和暂存区比较
git diff HEAD apple.txt 工作区和本地库比较
git diff HEAD^ apple.txt 工作区和上一版本本地库比较
不加文件名比较任意多个文件的不同。
*本地分支*:多线并进、相互独立master主干+其他
git branch -v:查看分支版本
git branch 分支名: 创建分支
git checkout 分支名:切换分支
某一分支1下执行:git merge 分支名2,将分支2合并到分支1
若有冲突:提示冲突文件,分支名变成,分支名|MERGING,打开工作区文件,提示冲突部分。确定如何解决问题,修改好文件后,git add、git commit结束merging状态。注意git commit不要带文件名。
删除本地某个分支:git branch -d 分支名
*本地库和远程库交互:*
创建本地库、创建远程库,文件名不要求一样
git remote add origin git地址:为git地址创建origin别名(fetch+push)
git remote -v:查看地址别名
git push origin 分支名1:由本地分支push到远程分支1,远程库无分支1,则为远程库创建分支1。需要登陆。凭据管理器可能会记住密码。
git clone 远程库地址:克隆master主分支。1.克隆2.创建远程地址别名origin3.初始化本地库
git clone -b <指定分支名> <远程仓库地址>克隆某一分支。
加入团队:未加入团队,不可git push,会报错。远程库settings发送邀请连接,同意。
pull=fetch+merge。先fetch查看,再merge更保险。也可直接pull。
git fetch 远程库地址名 远程分支名:只是下载远程分支到本地,不会更改本地工作区文件。
git checkout origin/master切换到下载的分支,查看内容后,git checkout master切换回原分支。确定可merge后,merge。*远程的origin/master分支,在本地的分支名为master。本地的分支名和远程仓库的分支名一一对应。*
git merge 远程库地址名/远程分支名。
git pull origin master:直接拉取远程库分支到本地分支。
若原先两人和远程库相同版本,一人修改版本,本地库push到远程库后,另外一个人也修改,但是无法push,必须先pull远程修改的最新版本,进入MERGING状态,再重新修改,add、commit,再push。
*跨团队协作*:fork成为自己的远程库、git clone自己的远程库、git push 到自己的远程库,因为不是项目成员,不可直接push到主团队。登陆到自己的远程库,new pull request、create pull request。主团队到自己的远程库,pull request查看,跨团队扣字交流,查看更改内容,确定merge pull request、confirm merge添加日志信息。主团队pull后,结束。
*使用SSH,Push免登陆*: git remote add origin_ssh ssh地址,之后使用origin_ssh。
****远程仓库回退版本:****自己的远程仓库分支回退:git reflog, git reset --hard Obfafd,紧接着强制推送到远程分支到当前版本:git push -f。注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支。