git命令总结

Linus Torvalds —— Just For Fun

HEAD头指针

1.获取帮助

  • git help
  • git –help

    2.建立仓库

    (工作平台)
  • git init
  • git add <文件名>( 跟踪该文件)(添加到暂存区)
  • git commit -m“ ….”(添加到git仓库)
    git commit 不加参数则直接打开vim编译与.gitignore格式相同,+’-m’则直接在命令行中输入提交信息
    如果+ “ -a”参数则可以跳过add 直接一步操作,跳过使用暂存区
    如 git commit -a -m”跳过暂存区”
  • git push [远程仓库名] [远程分支]

    3. git 别名

  • 如 git config –global alias.ci commit ,这输入 git commit 时只需要 git ci

    4.查看状态

  • git status
  • git diff
    查看工作区与已暂存的文件的区别,更新了哪些,也就是修改之后还没有暂存起来的变化内容
  • git log (-p查看不同,-num 查看最近几次 -3,-2)
  • git reflog 来查看引用日志
  • git remote show origin(查看origin仓库的更多信息,分支跟踪等信息)
  • git show [commit id]--查看某次提交修改了什么

    5. .gitignore

    • 所有空行或者以 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式可以以(/)开头防止递归。
    • 匹配模式可以以(/)结尾指定目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的glob 模式是指 shell 所使用的简化了的正则表达式。星号()匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z,a/b/z 或 a/b/c/z等。

###6.撤销操作

  • use “git checkout – …” to discard changes in working
    如文件readme
    命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    1. 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

      1. 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

      总之,就是让这个文件回到最近一次git commit或git add时的状态。

  • use “git reset HEAD …” to unstage
    对于上面的第二种,如果已经add到暂存区,可以先use “git reset HEAD …” ,然后再git checkout – .使他完全撤销更改

    版本回退
  • 用git log / git reflog查看commit id

  • git reset –hard [commit id] / git reset –hard [HEAD^] (一个^代表上一个提交)

    7.删除文件

  • git rm
    删除工作区和git仓库中的文件

  • git rm –cached
    只取消跟踪,本删除本地工作区文件

    8.远程仓库

  • git remote 列出远程服务器的简写 (-v详细)

  • git remote add 添加远程仓库

    • git clone [url] [name] (可添加自定义仓库名) 克隆,在当前目录下建立一个文件夹
  • git fetch [remote-name]抓取远程仓库的所有数据
    如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。当准备好时你必须手动将其合并入你的工作。

  • git pull 会抓取并自动合并到当前分支

  • git remote show origin(查看origin仓库的更多信息)

  • git remote rename [原] [新] 远程仓库重命名

  • git remote rm 远程仓库删除

git分支 (重点)

注意,git还有一个指针HEAD,指向当前分支的指针(也就是当前分支的别名)
-git branch 创建分支
-git checkout
切换分支  git checkout -b <>创建分支并切换到这个分支上

在你这么做之前,要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止 Git 切换到该分支。最好的方法是,在你切换分支之前,保持好一个干净的状态。

  • git merge 将当前分支与name 分支合并(如果时直接上游将快进,不会用冲突)
  • git branch -d 删除分支

2018-08-23 00-24-35 的屏幕截图.png
master和hotfix直接合并,快进
2018-08-23 00-31-51 的屏幕截图.png
master和iss53为和并提交

合并冲突

  • git status 查看冲突文件及位置
    1
    2
    3
    4
    5
    6
    7
     <<<<<<< HEAD:index.html
    <div id="footer">contact : email.support@github.com</div>
    =======
    <div id="footer">
    please contact us at support@github.com
    </div>
    >>>>>>> iss53:index.html
    上面HEADB表示当前分支的文件内容,下面表示合并分支的内容
  • git mergetool
    第一次使用要设置: git config merge.tool vimdiff 参见
    这个命令使用图形化界面来合并冲突
  • git add 标记合并的文件
  • git commit 合并完成后输入
    然后显示一个文件,可加如详细信息

分支管理

  • git branch 显示当前所有分支

  • git branch -v 查看分支及其最后一次提交

    远程分支

    (remote)/(branch) 形式命名
    git clone是会自动建立远程分支指针,并以远程的master分支为基础建立本地master分支每次 git fetch d都会更新远程分支指针,本地只能切换到远程分支查看,而不能操作,也就是只要不和远程服务器连接,远程指针就不会移动,但是可以git checkout -b (remote)/(branch)这样以远程分支建立本地分支进行操作
    2018-08-23 00-48-50 的屏幕截图.png

    拉取操作
  • git fetch <远程仓库名>拉取数据并移动远程仓库指针
    当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容。它只会获取数据然后让你自己合并。然而,有一个命令叫作 git pull 在大多数情况下它的含义是一个 git fetch 紧接着一个git merge 命令。

  • git merge origin/serverfix 将这些工作合并到当前所在的分支
    2018-08-23 00-50-28 的屏幕截图.png

  • git push origin <本地分支的名字>
    建立远程分支,还本地分支名字一样

  • git push origin serverfix:serverfix,
    它会做同样的事 - 相当于它说,“推送本地的 serverfix 分支,将其作为远程仓库的 serverfix 分支”可以通过这种格式来推送本地分支到一个命名不相同的远程分支。如果并不想让远程仓库上的分支叫做 serverfix,可以运行 git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支

  • git checkout -b serverfix origin/serverfix
    git checkout -b [branch] [remotename]/[branch]
    fetch到新的远程分支后不会在本地自动建立分支,只会有一个的只读的远程分支,可以执行改命令,会给你一个用于工作的本地分支,并且起点位于 origin/serverfix。

  • git checkout –track origin/serverfix创建一个跟踪分支(git pull /git push自动识别,)

  • git checkout -b [branch] [remotename]/[branch] 跟踪分支
    git remote show origin(可查看

  • git push origin –delete [remote branch] 删除远程分支

最后,一个远程仓库版本回退的操作

  • git push -f(加上-f 强制执行)
    现在本地master分支上回退版本,然后加上 -f 强制推到远程仓库

参考:《Pro Git》

,
© 2020 WPY's Android Tour All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero