Git常用命令

330 阅读4分钟

[git init]-命令可以把这个目录变成Git可以管理的仓库


[git add <file>]-把文件添加到仓库


[git commit -m "Message"]-把文件提交到仓库

  • git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

[git status]-命令可以让我们时刻掌握仓库当前的状态


[git diff]-查看具体修改了什么内容


[git diff HEAD -- <file>]-查看工作区和版本库里面最新版本的区别


[git log]-命令显示从最近到最远的提交日志

  • 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline 参数

[git reset]-把当前版本回退到上一个版本

  • 好了,现在我们启动时光穿梭机,准备把readme.txt回退到上一个版本

  • 首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

  • 现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:[git reset --hard HEAD^]

  • 从旧版本回到新版本命令:[git reset --hard commit_id]


[git reflog]-查看命令历史,以便确定要回到未来的哪个版本。


[git checkout -- <file>]-丢弃工作区的修改

  • 文件在工作区的修改全部撤销,这里有两种情况:
  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
  • 总之,就是让这个文件回到最近一次git commit或git add时的状态。

[git reset HEAD <file>]-可以把暂存区的修改撤销掉(unstage),重新放回工作区

  • git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

[git rm <file>]-用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删。


关联远程仓库

  • [git remote add origin \github.com/your_accoun…]-关联一个远程仓库

  • [git remote add origin git@github.com:Your_account/Project_name.git]-关联一个远程仓库

  • [git push -u origin master]-第一次推送master分支的所有内容

  • [git push origin Slave_name]-把本地Slave_name分支的最新修改推送至GitHub


推送与拉取

  • [git push -u origin master-第一次推送master分支的所有内容

  • [git push origin Slave_name]-把本地Slave_name分支的最新修改推送至GitHub

  • [git clone git@github.com:Your_account/Project_name.git] -拉取远程master分支内容

  • [git pull origin Slave_name]-把远程Slave_name分支的内容拉取到本地


从远程库克隆

  • [git clone https//github.com/your_account/Project_name.git]-从远程克隆仓库到本地
  • [git clone git@github.com:Your_account/Project_name.git]-从远程克隆仓库到本地

分支管理

  • [git checkout -b Slave_name]-相当于以下两条命令

    • [git branch Slave_name]-创建分支Slave_name

    • [git checkout Slave_name]-切换到分支Slave_name

  • [git branch]-查看当前分支

  • [git merge Slave_name]-命令用于合并 Slave_name 分支到当前分支

    • 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
  • [git branch -d Slave_name]-命令用于删除Slave_name分支

  • [git switch -c Slave_name]-创建并切换到新的分支

    • [git switch master]-直接切换到已有的master分支

  • [git log --graph]-查看分支合并图


BUG分支

  • [git stash]-可以把当前工作现场”储藏”起来,等以后恢复现场后继续工作。

  • [git stash list]-查看被“储藏“起来的工作现场。

  • [git stash apply]-恢复被“储藏“起来的工作现场。

  • [git stash drop]-恢复工作现场后删除stash中的内容。

  • [git stash pop]-恢复的同时把stash内容也删除

  • [git cherry-pick commit_id]-把bug提交的修改(commit)“复制”到当前分支,避免重复劳动。


[git branch -D Slave_name]-强制删除一个尚未提交的分支


[git remote ] -查看远程仓库的信息,详细参数可在后面加[-v]


标签管理

  • [git tag <tagname> <HEAD>]-给当前分支打标签

    • 最后参数默认为HEAD,也可以指定成commit id;  
    • [git tag -a <tagname> -m "Version 0.1 released"]-指定标签信息
  • [git tag]-查看所有标签

  • [git push origin <tagname>]-推送一个本地标签。

  • [git push origin --tags]-可以推送全部未推送过的本地标签。

  • [git tag -d <tagname>]-可以删除一个本地标签。

  • [git push origin :refs/tags/<tagname>]-删除一个远程标签。