Git学习笔记之常用命令

一. 创建仓库。

  1. 创建repository.
    在这个仓库中的所有文件都可以被Git管理起来,每个文件的修改,删除都能够追踪,并能在某一时刻还原之前的版本。
    创建方法:
    1. 安装Git后,可在要创建仓库的文件夹上选择右键选项中的Git Bash Here.则该文件夹即为本地仓库。
    2. 通过命令行,选择一个合适的地方,创建一个空目录。
$ mkdir learngit
$ cd learngit
$ pwd
/e/learngit
`pwd`命令为显示当前目录。
  1. git init 命令将其变成Git可管理的仓库。
    创建完毕后,文件夹中增加了一个.git文件(通常处于隐藏状态 可通过ls -ah命令进行查看)该文件用来跟踪管理版本库。
    在这里插入图片描述
  2. 用notepad++编写一个readme.txt 文件,放到刚刚创建的本地仓库文件夹中。
    将该文件放到Git仓库的步骤:
    1. git add 将文件添加到仓库。
    2. git commit 将文件提交到仓库。
      ** 注意:git commit 后通常用-m "xxx"指令输入本次提交的说明 **
      在这里插入图片描述

注:提交文件需要add,commit两部的原因:commit可以一次提交多个文件,所以可多次add不同的文件,一并commit。

二. 版本控制。

  1. git status命令查看仓库当前状态(文件是否被修改)。
    eg:更改readme.txt中的内容
Git is a distributed version control system.
Git is free software.

在这里插入图片描述
eg:若文件无更改。
在这里插入图片描述
该命令可查看文件是否发生了改变,但不能查看具体更改了什么内容。

  1. git diff <filename>可查看具体更改了什么内容。
    在这里插入图片描述

  2. git log查看历史版本。
    在这里插入图片描述注:每个记录的第一行都是版本号可通过他来实现版本跳转。

  3. git reset --hard commit _idgit reset --hard HEAD^版本回退
    使用commit_id时只需打出前几位。
    使用HEAD时上几个版本就加几个^ 回退版本较多时,比如前100个版本可写成HEAD~100。

  4. git reflog查找回退前的版本(恢复到新版本)。
    在这里插入图片描述

  5. git checkout -- filename撤销修改(把文件在工作区的修改全部撤销)
    1. 文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
    2. 文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    git reset HEAD filename撤销错误的修改(文件已被修改并提交到暂存区)
    将暂存区的修改回退回工作区后,若要继续丢弃工作区的修改则用以上的第一个方法。但是,如果修改已经被提交到版本库,则无法彻底删除。
    - 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
    - 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

  6. git rm删除文件
    将文件从版本库中删除并commit

git rm filename
git commit -m "message"

三. 分支管理—创建与合并分支

  1. git checkout -b <name>创建name分支并切换到该分支

在这里插入图片描述

  1. git branch <name>创建name分支
  2. git checkout <name>切换到name分支
  3. git branch查看分支情况和当前的HEAD分支
  4. git merge <name>合并name分支到当前分支
    在这里插入图片描述
  5. git branch -d <name>删除name分支

四. 分支管理—解决冲突

冲突就是两个分支在同一位置采用了不同的写法,导致合并时Git发生冲突,无法快速合并,需要解决冲突后再进行合并。
发生冲突
在合并发生冲突时,直接查看文件内容就可以看到冲突的位置和内容,对应进行修改解决冲突即可。查看文件内容的命令cat filename
冲突发生的位置
git log --graph可查看分支图。
在这里插入图片描述五. 分支管理—分支管理策略

  1. 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    git merge --no-ff命令可禁用Fast forward进行合并
git checkout -b dev
git add readme.txt 
git commit -m "add merge"
git checkout master
git merge --no-ff -m "merge with no-ff" dev
  1. Bug分支
    使用情景:master上已经发布了文件的1.0版本,dev分支上正在开发该文件的2.0版本,但发现1.0版本上有bug需要回到master分支上去修复,但此时dev分支上的2.0版本还未完成,需要先将该工作保存下来再回到master修复漏洞。
    git stash指令可以保留当前工作现场,需要回到该现场时用git stash pop,也可用git stash apply来恢复现场但是该指令恢复后并未删除shash的内容,需要再用git stash drop来删除stash内容。
    git stash的内容一定是已经add过的,若未add过则会丢失。建议在保存现场之前先用git status查看是否有未被追踪过的文件(新建的没有add过)
    git stash list可查看刚才保存的工作现场。
  2. 强行删除分支
    git branch -D <name>丢弃一个没有被合并过的分支。

六.创建关联远程库

  1. 在github中新建仓库,进入仓库查看SSH,在Bash中运行以下命令以关联该仓库 git remote add origin SSH
  2. git push -u origin master第一次将master中的内容推送到远程库。
  3. git push origin master 推送本地的最新修改

七.多人协作

  1. 远程库:
    git remote查看远程库信息
    git remote -v查看更详细的远程库信息
  2. 推送分支
    git push origin branchname将该分支的所有本地信息提交到远程库。
  3. 抓取分支
    git clone SSH可以在从远程库中克隆到本地。
    若新修改的分支推送到远程库时发生冲突,说明远程分支比本地更新,此时则需要git pull从远程库中抓取远程的新提交,试图合并,若有冲突则修改后再用git push origin branchname推送。
    注:若git pull提示no tracking information,说明本地分支与远程分支的链接关系没有创建,用git branch --set-upstream-to <branch-name> origin/<branch-name>解决。

猜你喜欢

转载自blog.csdn.net/qq_41701363/article/details/86680122