From 9a60d03e5050aba25e10acff8c36003b56608d7d Mon Sep 17 00:00:00 2001 From: wgy352561072 <352561072@qq.com> Date: Thu, 14 Mar 2019 15:04:29 +0800 Subject: [PATCH] wiki --- 2019-03/wgy352561072.txt | 129 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 2019-03/wgy352561072.txt diff --git a/2019-03/wgy352561072.txt b/2019-03/wgy352561072.txt new file mode 100644 index 000000000..23cdb8910 --- /dev/null +++ b/2019-03/wgy352561072.txt @@ -0,0 +1,129 @@ +git仓库的创建 +git init 初始化git仓库,自动创建master分支。 +touch readme.md 创建readme文件. +git status 查看仓库当前文件的状态. +git add readme.md 如果添加的文件比较多,可以直接使用git add . +git commit -m "add readme file" 提交readme文件. +git版本回退 +git log查看提交记录. +git reset --hard commit_id是由git自动生成的,通过git log命令获取. +假如从最新版本回退到了之前的版本,现在后悔了,要再回退到最新版本。但是git log命令已经获取不到.该commit_id,使用git reflog命令记录每一次的命令,可以找到需要的commit_id。 +工作区和暂存区 +工作区就是文件所在的文件夹,暂存区在隐藏文件夹.git中。 +git add把文件从工作区添加到暂存区。 +git commit把暂存区的所有文件提交到当前分支。 +撤销修改 +git checkout -- 把文件在工作区的修改全部撤销 + +文件修改后还没添加到暂存区,撤销修改后,回到和仓库一样的状态; +文件修改后已添加到暂存区,之后又作了修改,撤销修改后,回到和暂存区一样的状态。 +git reset HEAD 把已经添加到暂存区的修改撤销掉,重新放回工作区。 + +连接远程仓库 +1、生成SSH key + +2、比如在gitlab上,上传自己的SSH Key + +3、新建仓库(repository),按照页面提示,使用 + +​ git remote add origin ssh://xxxxx.com/xx/demo.git命令,将本地与远程仓库关联。 + +​ git push -u origin master把本地代码推送到远程库上。 + +4、由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 + +​ git pull origin master + +​ git push origin master + +分支创建和合并 +查看分支:git branch + +创建分支:git branch + +切换分支:git checkout + +创建+切换分支:git checkout -b + +合并某分支到当前分支:git merge + +删除分支:git branch -d + +解决冲突 +使用git merge后,可能会出现冲突。 +先解决冲突,再使用git add git commit命令进行提交。 +储藏 +git stash save 将修改储藏起来。 + +默认情况下,会储藏以下文件: + +添加到暂存区的修改(staged changes) +git跟踪单并未添加到暂存区的修改(unstaged changes) +不储藏以下文件: + +在工作区中的新文件(untracked files) +被忽略的文件(ignored files) +git stash save -u 可以 stash untracked files + +git stash save -a 可以 stash 当前目录下所有修改 + +git stash list 储藏的列表。 + +git stash apply将储藏的内容恢复,stash中内容并不删除,使用git stash drop来删除。 + +git stash pop将储藏的内容回访,同时删除stash中内容。 + +git stash apply stash@{0}储藏列表中存在多个stash,恢复指定的stash。 + +实际开发 +每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。 + +在dev分支新建一个feature/play_music分支: + +git checkout -b feature/play_music +touch play_music.js +git add play_music.txt +git commit -m 'Add play music' +git checkout dev +git merge feature/play_music +git branch -d feature/play_music // 非必须进行的一步 +如果删除一个没有被合并过的分支,可以通过git branch -D 强行删除。 + +多人开发 + +在向远端推送前,先使用git pull origin 拉取对应分支最新的代码 +再使用git push origin 推送到远端 +如遇冲突,解决冲突后,在进行操作 +如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=origin/ 。 +rebase 变基 +TODO +tag 标签 +git tag 默认标签会打在最新提交的commit上。 + +git tag 查看所有的标签。 + +若需要在之前的commit上打tag, 先使用git log --pretty=oneline --abbrev-commit找到历史提交的commit id,然后git tag 。 + +标签不是按时间顺序列出,而是按字母排序的。 + +可以用git show 查看标签信息。 + +创建tag时,也可以添加说明,用-a指定标签名,-m指定说明文字: + +git tag -a -m +标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。 + +git tag -d 删除指定标签。 + +git push origin 单个推送标签到远程 + +创建的标签都只存储在本地,不会自动推送到远程。 + +git push origin --tags一次性推送全部尚未推送到远程的本地标签。 + +删除远程标签的话,先从本地删除: + +git tag -d +然后从远程删除: + +git push origin :refs/tags/ \ No newline at end of file