GIT 是面向修改的
git配置身份
git config --global user.name "Stephen_Yangs"
git config --global user.email "ys.stephen@outlook.com"
初始化资源库
创建资源库 mkdir RepositoryName
进入资源库 cd RepositoryName
常看资源库的位置 pwd
资源库初始化 git init
添加资源
##在资源库内手动添加相关的文件,以供GIT管理
添加文件资源 git add fileName //此时通过git status 发现修改的文件从红色变为绿色,表示文件进入暂存区
添加所有变化资源 git add -A //该文件是新添的
添加所有的资源 git add -u //修改的,还是被删除的
资源提交 git commit -m "log说明" //注意每次Commit会产生一个CommitID
查看当前Git状态 git status
查看git资源的变化 git diff
查看状态,查看命令,历史操作
shou various type of objects git show
查看git提交日志 git log //注意该指令只能用来查看git提交历史
回退到上一个版本 git reset --hard HEAD^
查看指定资源内部内容 cat fileName
跳转到指定版本 git reset --hard commitID
查看git命令历史 git reflog //注意该指定被用来查看git命令历史
撤销操作
##Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
##git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
查看工作区和版本库里面最新版本的区别 git diff HEAD -- readme.txt
撤销修改 git checkout fileName (这是针对丢弃工作区的修改)
#######存在两种情况:1 文件修改后还未放入暂存区,此时撤销修改将恢复到和版本库一样
###################2 放入暂存区做了文件修改,撤销修改将恢复到暂存区一样内容
撤下暂存区的修改 git reset HEAD fileName (这是针对丢弃暂存区的修改)
文件移除、提交
文件删除 rm fileName
确定要删除 git rm fileName
删除后的提交工作 git commit -m "log说明"
###小提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。
#一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout – fileName
#git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
---------------------------------------------------------------------------------------------
#你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的
创建SSH Key ssh-keygen -t rsa -C "emailName@xxx.com"
创建远程仓库github
##github 在github上创建远程库 git@github.com:Stephen-Yangs/Architecture.git
关联github上的一个远程库 git remote add origin git@github.com:Stephen-Yangs/Architecture.git //ssh方式
关联github上的一个远程库 git remote add origin https://github.com/Stephen-Yangs/Architecture.git //https方式
查看当前git的远程仓库版本 git remote -v https://github.com/Stephen-Yangs/Architecture.git
移除远程仓库关联 git remote rm origin
资源仓库内容推送 git push -u origin master //首次
#由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
首次推送之后可以简写命令为 git push origin master
以后每次推送之前都先需要update : git pull origin master
克隆资源库
从远程克隆(资源库)到本地 git clone git@github.com:Hubery-Yang/YS-BBS.git
###使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
分支管理
如果文件名带空格,命令行里面这样写 fileNameFirst" "fileNameLast
创建并且切换到branchName分支 git checkout -b branchName
##git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
创建分支 git branch branchName
切换分支 git checkout branchName
查看所有分支 git branch //结果中,当前分支有一个*
合并指定分支到当前分支 git merge branchName //这个合并使用了默认的Fast Forward模式
合并完成后,就可以放心地删除branchName分支了 git branch -d branchName
//Fast Forward模式下的merge,当我们删除分支后,通过git log并不能查看到分支的合并记录
合并分支,并且禁用Fast Forward模式 git merge --no-ff -m "merge with no Fast Forward" branchName//注意禁用Fast Forward模式下,合并需提交操作,所以有命令里面包含了-m "log说明"
//禁用了Fast Forward模式下的merge,当我们删除分支后,通过git log依旧可以查看到分支的合并记录
分支冲突解决
两个分支对同一内容作了修改,系统不能确定该保存那一份,此时需要人为确定
#人为对冲突部分进行解决(人为判断取舍),Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
#然后通过一个分支进行添加,提交。最后进行两个分支的合并
#当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
#解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
查看分支合并图 git log --graph
Bug分支,存储当前工作,去其他分支上干事
存储当前分支上的工作 git stash
恢复有隐藏工作的分支上工作 git stash apply
丢弃隐藏工作内容 git stash drop
//上面两个操作可以用一个命令解决 git statsh pop
查看隐藏工作列表 git stash list
由于你可以多次stash,所以恢复指定的stash: git stash apply stash{0}
丢弃一个没有被合并过的分支,git branch -D branchName 强行删除
多人协作+远程仓库–远程仓库的默认名称是origin
#当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了
查看远程库的信息 git remote
查看远程库的信息信息 git remote -v
#本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支 git push origin branchName 如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branchName origin/branchName,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branchName origin/branchName;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
为git分支打上标签,方便查找
打标签 git tag tagName
对指定提交记录打上标签 git tag tagName commitID
查看标签 git tag
查看标签信息 git show tagName
创建带有说明的标签,用-a指定标签名,-m指定说明文字 git tag -a tagName -m "log说明" commitID
删除指定标签 git tag -d tagName
将标签推送到远程 git push origin tagName
推送全部tag到远程 git push origin --tags
删除远程标签 git push origin :refs/tags/tagName
git log/git reflog命令退出方式
英文编辑环境下 按下Q按键