Skip to content

Latest commit

 

History

History
162 lines (93 loc) · 5.41 KB

pompeygao.md

File metadata and controls

162 lines (93 loc) · 5.41 KB

git仓库的创建

  1. git init 初始化git仓库,自动创建master分支。
  2. touch readme.md 创建readme文件.
  3. git status 查看仓库当前文件的状态.
  4. git add readme.md 如果添加的文件比较多,可以直接使用git add .
  5. git commit -m "add readme file" 提交readme文件.

git版本回退

  1. git log查看提交记录.
  2. git reset --hard <commit_id> commit_id是由git自动生成的,通过git log命令获取.
  3. 假如从最新版本回退到了之前的版本,现在后悔了,要再回退到最新版本。但是git log命令已经获取不到.该commit_id,使用git reflog命令记录每一次的命令,可以找到需要的commit_id

工作区和暂存区

  1. 工作区就是文件所在的文件夹,暂存区在隐藏文件夹.git中。
  2. git add把文件从工作区添加到暂存区。
  3. git commit把暂存区的所有文件提交到当前分支。

撤销修改

git checkout -- <file> 把文件在工作区的修改全部撤销

  1. 文件修改后还没添加到暂存区,撤销修改后,回到和仓库一样的状态;
  2. 文件修改后已添加到暂存区,之后又作了修改,撤销修改后,回到和暂存区一样的状态。

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>

解决冲突

  1. 使用git merge后,可能会出现冲突。
  2. 先解决冲突,再使用git add git commit命令进行提交。

储藏

  1. 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 当前目录下所有修改

  2. git stash list 储藏的列表。

  3. git stash apply将储藏的内容恢复,stash中内容并不删除,使用git stash drop来删除。

    git stash pop将储藏的内容回访,同时删除stash中内容。

    git stash apply stash@{0}储藏列表中存在多个stash,恢复指定的stash

实际开发

  1. 每添加一个新功能,最好新建一个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>强行删除。

  2. 多人开发

    • 在向远端推送前,先使用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 标签

  1. git tag <name>默认标签会打在最新提交的commit上。

  2. git tag 查看所有的标签。

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

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

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

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

    git tag -a <name> -m <message> <commit-id>
    

    标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

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

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

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

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

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

    git tag -d <name>
    

    然后从远程删除:

    git push origin :refs/tags/<name>