首页 > 代码库 > git学习

git学习

1.创建一个空目录:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前目录

2.git init命令把这个目录变成Git可以管理的仓库

3.git add把文件添加到仓库,放在暂存区

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

5.git diff是查看与上一版本difference

6.git commit提交文件

!!正确的流程是:第一次修改 -> git add -> 第二次修改 -> git add -> git commit

 

7. git log查看历史提交记录

    git log -1  显示最近一次的提交

    可加上 --pretty=oneline参数使记录显示得更简洁

 git log --pretty=oneline --abbrev-commit 查看每次提交的commit id

8.git reset --hard HEAD^   用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

 git reset HEAD file可以把暂存区的修改撤销掉,退回到工作区

9.cat<file>可以查看文件内容

10.git reflog用来记录你的每一次命令

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

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

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

 

12.rm <file>删除工作区的某文件或者直接系统操作删除

   然后如果确实是要删除该文件,那就用命令git rm删掉,并且git commit,这样就从版本库中删除了

   如果删错了,可以用git checkout -- <file>从版本库中恢复到工作区(仅限上一次操作??),会丢失最近一次提交后你修改的内容。

 

13.要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git,(如果报错,先输入$ git remote rm origin)

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

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

命令git clone把远程克隆到本地库

 

14.$git checkout -b dev   创建dev分支,然后切换到dev分支

 相当于$ git branch dev   //创建分支

    $ git checkout dev   //切换到分支

    这两条指令合并

$git branch -d dev 删除dev分支

15.git branch  列出所有分支,当前分支前面会标一个*

16.git merge <name>  合并某分支到当前分支

17.git log --graph --pretty=oneline --abbrev-commit  查看分支的合并情况

18.git merge --no-ff -m "XXX" <分支的name>   --no-ff参数,表示禁用Fast forward,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息,删除分支后,不会丢掉分支信息

19.git stash 把当前工作现场“储藏”起来,可以去处理其他分支工作,等以后恢复现场后继续工作

    git stash list 查看保存的“工作现场”,有0,1,2等排序

    git stash apply stash@{0}恢复“第0个”工作现场,但是恢复后,stash内容并不删除,需要再用git stash drop来删除stash;

    或者用git stash pop,恢复工作现场的同时把stash内容也删了。

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

21.git remote -v  查看远程库详细的信息

22.克隆别人的远程库时,只有master,如果要在他的dev分支工作,用指令git checkout -b dev origin/dev

23.用git push origin branch-name提交,

    如果你的提交和别人的提交有冲突,用git pull试图合并,如果不行,

    就先用git branch --set-upstream dev origin/dev 指令来设置devorigin/dev的链接,

    然后用指令 git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送。

24.git tag <标签name>可以为当前分支打标签

  git tag查看所有标签

    git tag <标签name> <commit id> 为某次提交打标签   

  git tag -a <标签name> -m"说明文字" <commit id>  这样能完整地打出关键的信息

    git show <tagname>查看标签信息

25.git tag -d <tagname> 删除标签

   git push origin <tagname>  标签推送到远程 

  git push origin --tags    全部标签推送到远程

  删除远程标签:先删除本地的,然后用指令git push origin :refs/tags/<tagname> 删除远程的。

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

 内容举例如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

27.$ git config --global alias.st status  定义st=status,简化GIT代码

    $ git config --global alias.unstage  ‘reset HEAD‘  定义unstage=reset HEAD

   加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用

28.听说git config --global alias.lg "log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit"有奇效

29.大功告成

git学习