Git学习教程

最近系统学习一下Git,总结一下期间用到的Git命令。以便以后查阅,部分命令是针对于Mac操作系统,其他系统可能有细微差别。

基本常用命令

1. ls -a

  • 作用:查看隐藏文件

2. pwd

  • 作用:命令用于显示当前目录

3. rmdir 文件夹路径

  • 作用:删除空文件夹

4. rm -rf 文件路径

  • 作用:删除文件和文件夹 。-r 就是向下递归,不管有多少级目录,一并删除。-f 就是直接强行删除,不作任何提示的意思

5. touch 文件名

  • 作用:新建一个文件

6. mkdir 目录名

  • 作用:新建一个目录

7. ssh-keygen -t rsa -C “youremail@example.com”

  • 作用:创建ssh key秘钥对
  • 生成文件路径 ~/.ssh

8. pbcopy < 文件名

  • 作用:复制内容 把任意文件的内容读入剪贴板

9. echo “内容” >> 文件名

  • 作用:在一个文件写入内容,文件没有则创建。

10. open

  • 作用:命令用于打开文件、目录或执行程序。

11. open .

  • 作用:打开当前目录。

Git常用命令

1. git init

  • 作用:Git仓库初始化。把当前目录变成Git可以管理的仓库

2. git status (git status -s)

  • 作用:Git仓库当前的状态

3. git diff 文件名 (git diff)

  • 作用:查看具体区别在哪里

4. git add -文件名 (git add -a)

  • 作用:把某一个文件添加到暂存区。git add -a 添加所有文件到暂存区

5. git commit (git commit -m “提交log”)

  • 作用:把文件提交到仓库,以及添加提交日志

6. git log (git log –pretty=oneline)

  • 作用:显示从最近到最远的提交日志
  • git log –pretty=oneline –abbrev-commit 查看commit id

    7. git reflog

  • 查看命令历史

8.了解HEAD

  • Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交affd8dc…5058b(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

9. git reset –hard HEAD~N (git reset –hard commit_id)

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

10. git checkout –file

  • 单独撤销某一个文件修改,恢复到上一次提交时的状态
    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
      • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

11. git remote add origin 远端仓库地址 (ps:git remote add origin https://git.coding.net/Dely/GitStudy.git)

  • 本地仓库关联远程仓库

12. git remote show origin

  • 检测本地仓库和远端仓库建立连接成功

13. ssh -T git@github.com

  • 检测和github连接成功

14. git push -u origin master

  • 第一次推送master分支的所有内容

15. git push origin 分支名

  • 每次本地提交后,只要有必要,就可以使用命令推送最新修改,如果远端没有这个分支会创建一个新的远端分支

16. git branch (git branch -a)

  • git branch 查看本地分支; git branch -a 查看本地和远端分支

17. git branch 分支名

  • 本地仓库新建分支

18. git checkout 分支名

  • 切换分支

19. git checkout commit_id (git checkout HEAD~N或git checkout tag名)

  • 切换到某一个版本

20. git checkout -b 分支名

  • 本地仓库创建一个分支,并且切换到新的分支上
  • 当前分支前面会标一个*号

21. git merge 分支名

  • 合并某分支到当前分支上

22. git merge –no-ff -m “合并log” 分支名 (git merge –no-ff 分支名)

  • –no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward (默认模式)合并就看不出来曾经做过合并。

23. git branch -d 分支名

  • 删除本地分支
  • git branch -D 分支名 强制删除没有合并的分支

24. git push [远程名] :[分支名]

  • 删除远程分支

25. git push origin –delete 分支名

  • 删除远程分支

26. git tag tag名

  • 打一个新标签,默认标签是打在最新提交的commit上的

27. git tag -a tag名 -m “标签信息”

  • 打一个新标签,并且指定标签信息

28. git show tag名

  • 可以看到标签相关信息

29. git push origin tag名

  • 推送一个本地标签到远端

30. git push origin –tags

  • 可以推送全部未推送过的本地标签

31. git tag -d tag名

  • 删除本地一个标签

32. git push origin :refs/tags/

  • 删除一个远程标签

33. git push origin –delete tag

  • 删除一个远程标签

34. git pull origin –tags

  • 拉取远端tag

35. git pull (git pull origin develop)

  • 拉取远端分支

36. 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

  • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
  • git stash
  • git stash pop

37. git remote remove origin

  • 删除本地和远端联系

38. git clone 远端仓库地址

  • 从远端克隆一个本地库