git命令学习
本地操作
git 本地提交流程
本地库初始化命令 git init
设置用户签名
项目/仓库级别 (只在当前项目有效) 信息保存在当前项目的 .git/config 文件内
git config user.name zhangsan
git config user.email lisi@qq.com
系统用户级别(登录当前系统用户级别)信息保存在当前用户根目录的.gitconfig文件内,cd ~ , cat .gitconfig
git config --global user.name zhangsan
git config --global user.email lisi@qq.com
如果两个级别的都有设置,优先采用项目级别
本地项目操作 查看项目状态
创建文件
将文件提交到暂存区
将文件从暂存区撤回
将文件从暂存区提交到本地库
修改文件 再看看
使用 git add 再使用git commit 提交更新文件,或者直接使用 git commit -a -m "your words" 提交更新文件,区别是 后者无法撤回文件
查看代码版本记录
git log
git --pretty=oneline
git --online
git reflog
版本的前进与后退
1 基于索引值 git reset --hard d4114bf
2 使用^(这个命令只能往后退)
git reset --hard HEAD^(一个^表示后退一步,两个表示后退两步)
3 使用~
git reset --hard HEAD~n (后退n步)
#hard,soft,mixed 的区别
比较命令
此时 修改的数据还未提交 ,使用git diff aaa.txt 命令 比较的是工作区与暂存区的比较
git diff HEAD aaa.txt 工作区与本地库之间的比较
$ git diff HEAD^ aaa.txt 工作区和本地库的上一个版本比较
分支管理
git branch -v 查看分支
git branch test 创建分支 test
git checkout test 切换分支
合并分支,1 切换到 被合并的分支,2 执行 git merge 分支名 命令,执行完之后 两个分支就是同一个版本了
分支合并时的冲突处理
当分支里 同一个文件的相同行的修改不一致时,git拿不定主意,自动合并会失败(同一文件的不同行有修改时 git可以自动合并),转为程序员手动合并,(关于冲突 不管是分支之间的冲突(就像下面演示的例子), 还是分支之内的冲突(多人基于同一个分支:比如test 开发),解决思路都是, 现将最新版的文件更新到本地 ,本地解决冲突 之后再做提交,再推送到仓库即可)
制造冲突,
我们将master的内容合并到test 上去,可以看到有冲突
test分支处理冲突后再次提交
此时冲突已经解决 ,但是master和test版本不一致,我们再将test的内容合并到master上去,再看一下文件内容,问题已经解决了
远程操作
在github上新建一个项目(本地也建立一个 并创建初始化文件, 并commit)
git remote -v 查看别名
git remote add origin https://github.com/Teemo-Java/Test-Code.git 设定别名
git push origin master 向远程仓库推送
新建文件夹 并克隆项目
可以看出来 ,git clone 命令有三个效果,1克隆项目 , 2 设定别名 , 3 初始化本地库
git fetch 与git merge 与git pull命令
现在远程分支的文件已经被修改了
我们使用git fetch抓取,发现本地文件并没有变(是因为fetch命令只帮我们下载了仓库文件 并没有修改工作区文件)
我们切换到远程仓库,可以看到我们将要拉取的内容看看文件
我们切换到自己仓库的分支 在进行merge操作,新的内容就可以看到了
此时我们再在线上修改文件 然后执行git pull,看看效果
然后执行git pull 命令,可以看到 文件是直接被修改的
从上面可以看出来 git fetch +git merge = git pull,一般我们如果为了保险 可以先fetch 看看没有什么问题再合并,而 如果变动比较简单 我们可以直接用pull
SSH 与HTTP 方式
上面我们所有的操作都是基于HTTP方式来做的,我们也可以使用ssh来操作,使用ssh操作的好处是不用填写密码, 步骤是 我们首先在自己电脑里面生成一个ssh key, ssh-keygen -t rsa -C xx@qq.com,将生成的公钥id_rsa.pub 内容复制到自己git账号里面的 ssh keys里面去,然后我们就可以使用ssh的方式来操作啦,
使用ssh方式操作时,需要为ssh地址设置一个别名,然后后面所有的操作都对这个新的别名操作即可。
posted on 2019-04-09 18:34 Advance_Man 阅读(315) 评论(0) 编辑 收藏 举报