Skip to content

Commit

Permalink
wiki
Browse files Browse the repository at this point in the history
  • Loading branch information
wgy352561072 committed Mar 14, 2019
1 parent efde0e9 commit 9a60d03
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions 2019-03/wgy352561072.txt
Original file line number Diff line number Diff line change
@@ -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> commit_id是由git自动生成的,通过git log命令获取.
假如从最新版本回退到了之前的版本,现在后悔了,要再回退到最新版本。但是git log命令已经获取不到.该commit_id,使用git reflog命令记录每一次的命令,可以找到需要的commit_id。
工作区和暂存区
工作区就是文件所在的文件夹,暂存区在隐藏文件夹.git中。
git add把文件从工作区添加到暂存区。
git commit把暂存区的所有文件提交到当前分支。
撤销修改
git checkout -- <file> 把文件在工作区的修改全部撤销

文件修改后还没添加到暂存区,撤销修改后,回到和仓库一样的状态;
文件修改后已添加到暂存区,之后又作了修改,撤销修改后,回到和暂存区一样的状态。
git reset HEAD <file>把已经添加到暂存区的修改撤销掉,重新放回工作区。

连接远程仓库
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 <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

解决冲突
使用git merge后,可能会出现冲突。
先解决冲突,再使用git add git commit命令进行提交。
储藏
git stash save <message> 将修改储藏起来。

默认情况下,会储藏以下文件:

添加到暂存区的修改(staged changes)
git跟踪单并未添加到暂存区的修改(unstaged changes)
不储藏以下文件:

在工作区中的新文件(untracked files)
被忽略的文件(ignored files)
git stash save -u <message> 可以 stash untracked files

git stash save -a <message> 可以 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 <name>强行删除。

多人开发

在向远端推送前,先使用git pull origin <branch-name>拉取对应分支最新的代码
再使用git push origin <branch-name>推送到远端
如遇冲突,解决冲突后,在进行操作
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=origin/<branch-name> <branch-name> 。
rebase 变基
TODO
tag 标签
git tag <name>默认标签会打在最新提交的commit上。

git tag 查看所有的标签。

若需要在之前的commit上打tag, 先使用git log --pretty=oneline --abbrev-commit找到历史提交的commit id,然后git tag <name> <commit-id>。

标签不是按时间顺序列出,而是按字母排序的。

可以用git show <tagname>查看标签信息。

创建tag时,也可以添加说明,用-a指定标签名,-m指定说明文字:

git tag -a <name> -m <message> <commit-id>
标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

git tag -d <name> 删除指定标签。

git push origin <tag-name> 单个推送标签到远程

创建的标签都只存储在本地,不会自动推送到远程。

git push origin --tags一次性推送全部尚未推送到远程的本地标签。

删除远程标签的话,先从本地删除:

git tag -d <name>
然后从远程删除:

git push origin :refs/tags/<name>

0 comments on commit 9a60d03

Please sign in to comment.