git笔记

git学习笔记

参考文档(廖雪峰官方文档)https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000

简介: Git是一些命令行工具的集合,可以用来跟踪、记录文件的变动,经常用于开源代码。比如你可以进行旧版本恢复、比对、分析、合并等等。这个过程被称之为版本控制

要提交代码之前,先git pull --rebase 把remote master上的代码更新到本地,可能会有冲突,产生冲突的话,在对应文件处会有<<<<和>>>>来标记出来,然后进去解决冲突,然后git add .添加到暂存区,再输入git rebase --continue,继续解决下一处冲突,直至解决完所有冲突即可。

然后就直接git push origin local-branch-name即可push到远程,但是在合作的时候,不能直接推到远程master上,得先输入git push origin HEAD:refs/for/master%r=xxx(xxx填reviewer的名字),然后代码就会进入code review的阶段,等review完成之后,就可以去开发机所在的网站上,在代码管理器发布版本,然后tce上升级即可。

 

常用命令:

git config  –global user.name   修改姓名

git config  –global user.email   修改邮箱

ssh-keygen   产生密钥对,然后cd ~/.ssh切换到密钥目录下面

git clone ssh://....   将远程仓库克隆在本地

git stash 隐藏工作区,可用于新建bugfix分支之前隐藏工作区,避免将开发一半的功能commit,修复完成bug后,再切换回来git stash pop弹出工作区

git init 在本地创建git仓库

git status 查看当前有哪些文件产生修改,没有提交的文件

git add . 将所有文件添加到暂存区

git commit -m'comment' 提交代码到本地仓库

git reset head^  将head重置到上一个版本

git checkout -- * 撤销没有在暂存区的修改

git branch 查看当前分支

git branch name 创建新的分支

git checkout namne 切换到其它分支

git merge name 将分支合并到当前分支

git diff 查看修改  git diff test.txt   git diff head head^,直接写git diff是查看与暂存区对比

git log 查看head及以前的日志    git log --graph --pretty=oneline可以查看分支的图形化关系

git reflog 查看所有的日志操作记录

git remote add origin https://github.com/tugenhua0707/testgit.git  与远程仓库产生链接

git branch –d name 删除分支

git pull  --rebase 更新代码

git remote 查看远程库的信息  创建并切换分支

​git checkout -b dev​

git revert 撤销某次的提交,并且产生一次新的commit,比如只有一个test.txtx的文件

,内容为111,新增加1行222,然后commit,之后执行git revert head,则还原为111

git rm filename 删除文件,等价于 rm file,git add .两步操作

​git checkout -b dev origin/dev​ 将远程dev分支创建到本地dev分支

 

git多人协作(重点):

本地的git仓库和远程(例如github)是按照ssh协议传输文件的,ssh使用非对称加密算法(rsa)来保证传输安全。非对称加密要有一个密钥,分别称为公钥和私钥,先用ssh-keygen在本地产生密钥对,cd ~./ssh ,然后就能找到对应密钥对,rsa.pub是公钥,把里面的内容copy到github->settings->ssh key中,这样就ok了(这样才能使用ssh方法clone项目)

以后每次git push origin master 就可以将本地master分支推送到远程master分支上

bug分支:当前在dev分支上开发了一半,接受了fix bug issue-1任务,可以先git stash隐藏工作区,这样git status就是干净的,然后git checkout master切换到主分支,再git checkout -b issue-1创建并切换到bug分支,然后修复了bug,切换到主分支,然后git merge issue-1,然后git branch -d issue-1即可,再切换回dev分支,git stash pop就可以恢复隐藏的工作区

 

多人协作一般流程:

  1. 首先,可以试图用​git push origin <branch-name>​推送自己的修改;
  1. 如果推送失败,则因为远程分支比你的本地更新,需要先用​git pull​试图合并;
  1. 如果合并有冲突,则解决冲突,并在本地提交;
  1. 没有冲突或者解决掉冲突后,再用​git push origin <branch-name>​推送就能成功!

 

 

补充:

 

head是指向分支的,分支再指向commit,都是指针的形式

 

git log是最近到最远commit的日志记录。(即head,head^,head~2,head~3...的日志),可以加git log --pretty=oneline 这样可以只输入简要的日志信息。从远程仓库clone代码下来后,用git log就能看到所有之前的commit记录,如果用git reflog记录本地的所有对版本造成改变的命令操作等

 

git的版本号是sha-1计算出来的一个比较大的哈希

 

head表示当前所在版本,上一个版本为head^,再上一个版本为head^^(head~2)... 

 

origin表示远程仓库

 

切换分支后工作区变改变到对应分支上(貌似是这样)

 

合并分支有个fast-forward快进模式,意思是只移动当前分支的指针,所以速度很快

 

git merge branchname 合并如果产生冲突,先git status查看哪里冲突,修改后 git commit即可

 

git还可以对某处commit打标签,git tag,具体使用方法可以参考https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001376951758572072ce1dc172b4178b910d31bc7521ee4000

没有更多推荐了,返回首页