Git常用命令

1、创建与修改用户名和邮箱地址:

  $ git config --global user.name "username"

  $ git config --global user.email "email"

2、查看用户名和邮箱地址:

  $ git config user.name

  $ git config user.email

3、显示当前目录

  $ pwd

4、把当前目录变成Git可以管理的仓库

  $git init

5、Git添加文件需要add、commit一共两步

  例子:

  $ git add file1.txt

  $ git add file2.txt file3.txt

  $ git commit -m "add 3 files."

  $ git add .   (添加所有修改)

  如果文件只是修改没有新添加的可直接通过参数 $ git commit -a -m "注释····"    来提交

6、让我们时刻掌握仓库当前的状态

  $ git status

7、Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

  $ git diff readme.txt

8、git log命令显示从最近到最远的提交日志

  $ git log

  退出按英文健Q;

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

  $ git log --pretty=oneline

10、在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

  每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支;

  HEAD严格来说不是指向提交,HEAD指向的就是当前分支。

11、回退到上一个版本

  $ git reset --hard HEAD^

  回到指定commit id的版本 

  $ git reset --hard 1094a   //1094a id前几位

12、查看文件

   $ cat <file>

13、查看历史命令

  $ git reflog

14、概念:理解工作区与暂存区,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支;

  Git跟踪并管理的是修改,而非文件,每次修改,如果不用git add到暂存区,那就不会加入到commit中

15、用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

16、git checkout -- file 可以丢弃工作区的修改:

  $ git checkout -- readme.txt

  命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

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

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

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

  $ git checkout .   撤销对工作区所做的一切更改,这样以前所有的修改就都没有,慎用!

17、用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

  $ git reset HEAD readme.txt

  $ git reset HEAD .  撤销了前面所做的所有的add操作

18、删除文件git rm <file>

  $ git rm test.txt

  现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
  另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- test.txt
  git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

19、添加远程库

  $ git remote add origin git@github.com:yangzishan/mydoc.git

20、git查看远程仓库信息

  $ git remote -v 

21、把本地库的所有内容推送到远程库上

  $ git push -u origin master

  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令;

  此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

22、从远程库克隆

  $ git clone git@github.com:yangzishan/mydoc.git

  Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

23、创建分支dev,然后切换到dev分支

  $ git checkout -b dev

  git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

  $ git branch dev  (创建分支)
  $ git checkout dev   (切换分支)

24、查看分支

  $ git branch

  git branch命令会列出所有分支,当前分支前面会标一个*号。

  $ git branch -a   //查看远程分支

25、合并分支

  $ git merge dev

  git merge命令用于合并指定分支到当前分支

26、删除dev分支

  $ git branch -d dev

27、因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

28、查看编辑 $ vi

29、解决合并分支冲突:

  当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
  解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

30、看到分支合并图

  $ git log --graph  

31、合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

  例:准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward

  $ git merge --no-ff -m "merge with no-ff" dev

  因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

32、储藏当前分支的工作 stash功能

  $ git stash

  查看用 $git stash list

  工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

  一是用$ git stash apply恢复,但是恢复后,stash内容并不删除,你需要用$ git stash drop来删除;

  另一种方式是用$ git stash pop,恢复的同时把stash内容也删了:

33、如果要丢弃一个没有被合并过的分支,可以通过 $ git branch -D <name>强行删除。

34、推送分支

  $ git push origin branch-name

35、创建远程origindev分支到本地

  $ git checkout -b dev origin/dev

  在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

36、从远程抓取分支

  $ git pull

  建立本地分支和远程分支的关联,使用git branch --set-upstream-to origin/branch-name; 

37、创建标签

  首先,切换到需要打标签的分支上:然后就可以打一个新标签:

  $ git tag v1.0

  查看所有标签:

  $ git tag

  默认标签是打在最新提交的commit上的,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

  方法是找到历史提交的commit id,然后打上就可以了:$ git tag v0.9 f05fsdf3

  查看标签信息

  $ git show <tagName>

  还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

  $ git tag -a v1.0 -m "version 1.0" <commitid>

  删除本地库标签

  $ git tag -d v1.0

  推送标签到远程

  $ git push origin <tagname>

  一次向推送尚未推送到远程的本地标签

  $ git push origin --tags

  删除远程标签: 先从本地删除,然后

  $ git push origin :refs/tags/<tagname>

38、删除已有的远程库:

  $ git remote rm origin

39、一个本地库可以关联多个远程库,只要远程库的名字不一样即可

40、配置,让Git显示颜色,会让命令输出看起来更醒目:

  $ git config --global color.ui true

41、忽略某些文件时,需要编写.gitignore;

  在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件;

  使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

  .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

42、配置别名;比如用st代替status

  $ git config --global alias. st status

  --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

 43 、生成 创建SSH Key

  $ ssh-keygen -t rsa -C "youremail@example.com"

  

原文地址:https://www.cnblogs.com/zishan/p/9112160.html