From 493d99529ba46a61c6dea63402c8f53e531b3682 Mon Sep 17 00:00:00 2001 From: jhtest2 Date: Fri, 29 Mar 2019 11:11:45 +0800 Subject: [PATCH] miaowu --- miaowu.txt | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 miaowu.txt diff --git a/miaowu.txt b/miaowu.txt new file mode 100644 index 0000000..6bcab6b --- /dev/null +++ b/miaowu.txt @@ -0,0 +1,131 @@ +创建版本库,通过git init命令把目录变成git可以管理的仓库,添加文件到gi他仓库: +mkdir learngit +cd learngit +git init +ls -ah +编写一个readme.txt文件 +git add readme.txt +git commit -m "wrote a readme file" + + +修改文件,git status查看仓库当前的状态,git diff查看做了什么修改: +git status +git diff +git add readme.txt +git status +git commit -m "add distributed" +git status + + +版本回退,git log查看历史记录,git reset回退,git reflog查看每一次命令的记录: +git log +git log --pretty=oneline +git reset --hard HEAD^ +cat readme.txt +git reset --hard aed427 +git reflog + + +管理修改,必须先把工作区的修改git add放入到暂存区之后才能git commit进行提交,否则不会进行提交。 +git diff HEAD -- readme.txt 查看工作区和版本库里面最新版本的区别 + + +当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. +当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想放弃修改,分两步,第一步用命令git reset HEAD ,就回到了工作区,第二部丢弃工作区的修改。 + + +Changes not staged for commit 还没提交暂存的更改 +Changes to be committed 要提交的更改 + + +删除文件: +rm test.txt +git rm test.txt +git commit -m "remove test.txt" 文件就从版本库中删除了 + + +删错了要从版本库恢复: +git checkout -- test.txt 用版本库里的版本替换工作区的版本 + + +创建远程仓库 +创建ssh key: +在用户主目录下进入.ssh目录查看是否有id_rsa和id_rsa.pub这两个文件,如果没有, +ssh-keygen -t rsa -C "jhtest2@163.com" +登陆github,将公钥id_rsa.pub上传 + + +关联远程库: +git remote add origin git@github.com:Mkeystest/learngit.git +关联后第一次推送master分支的所有内容: +git push -u origin master +之后推送最新修改: +git push origin master + + +要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆: +git clone git@github.com:Mkeystest/gitskills.git +git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快 + + +查看分支:git branch +创建分支:git branch +切换分支:git checkout +创建+切换分支:git checkout -b +合并某分支到当前分支:git merge +删除分支:git branch -d + + +Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容 +当Git无法自动合并分支时,就必须首先解决冲突,手动编辑Git合并失败的文件,解决冲突后再提交,合并完成 +git log --graph + + +--no-ff普通方式合并,合并后的历史有分支,能看出来曾经做过的合并: +git merge --no-ff -m "merge with no-ff" dev + + +查看详细分支历史: +git log --graph --pretty=oneline --abbrev-commit + + +修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除。当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,再git stash pop回到工作现场 +git stash 可以把当前工作现场“储藏”起来 +git stash apply 恢复之前的工作现场 +git stash drop 删除stash的内容 +git stash pop 恢复到之前工作现场的同时把stash内容也删了 +git stash list 查看stash内容 +可以多次stash,恢复的时候先用git stash list查看,然后恢复指定的stash,用命令: +git stash apply stash@{0} + + +删除还没有被合并的分支需要-D强行删除: +git branch -D feature-vulcan + + +因此,多人协作的工作模式通常是这样: +首先,可以试图用git push origin 推送自己的修改; +如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; +如果合并有冲突,则解决冲突,并在本地提交; +没有冲突或者解决掉冲突后,再用git push origin 推送就能成功! +如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。 +这就是多人协作的工作模式,一旦熟悉了,就非常简单。 + + +查看远程库信息,使用git remote -v +本地新建的分支如果不推送到远程,对其他人就是不可见的 +从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; +在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; +建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; +从远程抓取分支,使用git pull,如果有冲突,要先处理冲突 + + + + + + + + + + + -- Gitee