git

https://www.liaoxuefeng.com/wiki/896043488029600/902335212905824学习笔记
Git是目前世界上最先进的分布式版本控制系统。
Git跟踪并管理的是修改,而非文件。所以快
设置用户名git config --global user.name "Your Name"
设置邮箱git config --global user.email "[email protected]"

本地仓库

git init创建本地仓库。生成的.git目录是git的版本库。默认会创建一个master分支,如果没有创建其他分支,以下操作都是基于master分支。
git add 把文件修改添加到暂存区,可以多次add不同文件。在当前仓库创建一个readme.txt文件,git add readme.txt并添加到仓库,
git commit -m 把暂存区的所有内容提交到当前分支。git commit -m '初始化'这样就可以追踪到文件变化了。
每次的修改都要先add到暂存区,再commit到分支。

image.png

git log查看历史提交版本记录。git log --pretty=oneline查看简化的历史提交版本记录
git reset --hard HEAD^回退到上一个版本(上一次commit提交的版本),HEAD指向的是当前版本,上一个版本HEAD^,上上个版本HEAD^^,往上3个版本HEAD~3。如果版本回退了,在用git log查看就看不到当前版本之后的提交记录了,再想回到之前最新的版本,需要找到那条提交记录commit_id。
git reflog 查看每一次的提交记录。和git log有区别
git reset --hard commit_id回到某个版本
git status查看仓库状态,工作区是否有修改没有添加到暂存区,是否有修改没有提交到分支等
git diff HEAD -- 查看当前工作区和版本库中(暂存区和分支)的内容区别。
git checkout -- 放弃工作区的改变。1. 如果修改还未add到暂存区,就会回到和版本库一样的状态,2. 如果add后发生了修改,就会回到add后的状态。简而言之就是把工作取到的内容恢复到和版本库一样。
git reset HEAD 撤销暂存区的添加,撤销上一次的add
撤销add,撤销修改记录,回退版本。
当删除文件时,可以用git rm ,和git add 效果一样

撤销:

  1. 撤销commit
  • 撤销git commit,撤销git add,保留编辑器改动代码git reset --mixed git reset
  • 撤销gitcommit,不撤销git add,保留编辑器改动代码git reset --soft
  • 撤销gitcommit,撤销git add,删除编辑器改动代码git reset --hard
  1. 撤销add。add了还没提交,就使用git reset HEAD 回到提交前
  2. 撤销工作区的修改。
  • 如果没有add和commit,就使用git checkout -- git checkout .放弃工作区的修改
  • git clean -xdf 删除git没有追踪的文件(编译构建生成的中间文件,可以用此命令删除)

远程仓库

建立远程仓库,如github
git remote add origin [email protected]:della526/gitlearn.git把远程仓库地址关联到本地,并起个名字origin,之后在本地就可以通过origin代替一连串的远程地址。
git remote -v查看远程库信息,可以pull抓取和push推送的远程地址。如果没有推送权限就看不到push地址。
git remote rm origin删除远程仓库origin的关联。此处删除并不是删除远程库,只是删除和远程库的关联。
git push -u origin master 把当前本地版本库中当前分支的内容push到远程仓库origin的master分支。第一次push时,加上-u,之后再push推送时就直接git push不用再加<远程仓库名字> 和<远程仓库分支>了。
git push origin <分支名>对当前分支推送到远程分支
当不指定分支名直接git pushgit pull失败时,可以这样设置一下关联你指定要推送对的远程分支git branch --set-upstream-to=origin/dev dev

分支

git branch dev本地创建分支dev
git checkout dev 本地切换到/检出dev分支 新版本 git switch
git checkout -b dev加上-b相当于做了两件事情,创建dev分支并切换到该分支。创建dev分支并切换到该分支。新版本git switch -c
git branch查看分支,及当前分支.带*号的就是当前所在分支。

image.png

add并commit提交dev的修改内容。然后切换到 master分支。
git merge dev,把dev分支的提交内容合并到当前分支(master)。
git branch -d dev删除dev分支
git branch -D dev强行删除分支,没有被合并过的分支需要强行删除
因为创建、合并、删除分支特别快,所以在做某个任务时,检验使用分支,合并后删除分支
sourcetree中提示超前一个版本的,意思是本地版本比远程版本更新一个版本。
如果两分支在merge时发生冲突(如修改了 同一个文件同一处代码),先处理冲突,把冲突文件处理为我们想要的内容 ,再add和commit。
git log --graph --pretty=oneline --abbrev-commit查看分支合并情况。更详细内容git log --graph
image.png

git checkout -b dev origin/dev创建和远程dev相关联的本地分支dev,新来的小伙伴从远程库clone时,只能看得到master分支,他要修改dev上的内容,就得创建个本地dev分支,并且和远程dev相关联。然后add,commit提交,push推送git push origin dev
注意,的多人合作的项目,在push前先pull远程最新的代码git pull origin dev,若拉下后有冲突,先解决冲突,再add提交,push推送。

  1. 合并方式
    1、git merge默认采用Fast-forward快速合并,直接把HEAD指向被合并分支的提交,不会产生新的提交。在这种模式下,删除分支后,会丢掉分支信息,后续就看不出来是否做过合并。
    2、--no-ff强制禁用Fast forward模式,会产生新的提交。需要输入提交信息git merge --no-ff -m '提交信息' dev。即使删除被合并的分支,后续也能看到合并记录。
    image.png

    在实际开发中,master一般用于发布正式版本,dev用来开发,属于不稳定版本 ,RD创建各自的任务分支,然后合并到dev。
    image.png
  2. 储藏
    git stash储藏当前修改,如果有新增文件,必须先add再stash,stash之能存储在版本库中的文件。(场景:当前分支没做完不想提交,但又必须切到另一个分支去修改)。
    git stash list查看stash列表,在列表中找到你要取出的储藏的对应索引。
    git stash apply stash@{索引}取出储藏的修改内容,删掉该条stashgit stash drop stash@{index}
    或者直接使用git stash pop stash@{索引}(该命令做了两个操作“取出储藏和删除储藏”)。
    image.png
  3. git cherry-pick commit_id把某个分支的‘修改提交’合并到当前分支。
    当某个bug分支提交后,再合并到master,删除bug分支。此时想在dev分支也把这个bug提交的内容 合并过来,但又不想把整个master的内容合过来。此时先通过git reflog找到bug提交的commit_id,然后执行git cherry-pick commit_id,就合到dev分支了。

你可能感兴趣的:(git)