Git 常用命令 - 不断更新中

一、git clone

git clone 支持本地和远程repository的克隆,其格式如下:

本地克隆:

  • git clone /path/to/repo.git/
  • git clone file:///path/to/repo.git/

如: 1). git clone [email protected]:swang6/test.git 

        2). git clone [email protected]:swang6/test.git test_rename  : 重命名为test_rename  

远程克隆repository:

  • git ssh://[user@]host.xz[:port]/path/to/repo.git/
  • git git://host.xz[:port]/path/to/repo.git/
  • git http[s]://host.xz[:port]/path/to/repo.git/
  • git ftp[s]://host.xz[:port]/path/to/repo.git/
  • git rsync://host.xz/path/to/repo.git/

Git clone的参数很多,但是常用的就只有几个:

1. 最简单直接的命令

        git clone xxx.git

 

扫描二维码关注公众号,回复: 1145438 查看本文章

2. 如果想clone到指定目录

       git clone xxx.git "指定目录"   

 

3. clone时创建新的分支替代默认Origin HEAD(master)

     git clone -b [new_branch_name]  xxx.git

 

4. clone 远程分支

  git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,需要使用checkout命令。

       可以如下:

 

  1). 查看所有分支(包括隐藏的)  git branch -a 显示所有分支,如:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

    2).  在本地新建同名的("wsheng_dev")分支,并切换到该分支

git checkout -t origin/dev 该命令等同于:
git checkout -b wsheng_dev origin/dev

如果你用的命令是git checkout origin/dev:可以快速切换到这个分支。但是不会在本地建立这个分支。

 

二、git add:

        git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。

        1. git add <path>, 如git add .

        我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录。git不仅能判断出<path>中修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。

        2. gti add -u

        git add -u [<path>]: 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。省略<path>表示.,即当前目录。

        3. git add -A

        git add -A: [<path>]表示把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。

省略<path>表示.,即当前目录

       

三、git remote

怎样修改 origin的URL

      git remote -v

      git remote rm origin

      git remote add origin [new urls]

 

四、git stash

      在git pull时如果失败,并提示需要commit本地的changes,那么除了执行git add -A, git commit操作之外还可以用git stash 将本地的changes相当于先"隐藏"起来。

      然后再用git pull 做merge,另外可以使用git stash list查看当前stash的list:对于每一个stash都有其对应的一个index。

       最后使用git stash apply stash@{index} 如git stash apply stash@{0}进行恢复,当然在没有进行多次stash的时候,直接用git stash apply进行恢复。每次新加的stash都是在stash@{0}的位置。stash在使用git stash apply@{0}恢复后,还是会存在于git stash list中的。可以用$git stash clear清除所有暂存。

       如果只想删除某个stash,可以使用git stash drop stash@{inde}删除,如git stash drop stash@{0}

    

五、版本(tag)操作相关命令

查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本 push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]

 

六、Git 忽略ssl

可在git命令行执行: git config --global http.sslVerify false

 

七、 I have an already initialized git repo that I added a .gitignore file to, how can I refresh the file index so the files I want ignored get ignored?

First commit any outstanding code changes, and then, run this command:

git rm -r --cached .

This removes any changed files from the index(staging area), then just run:

git add .

Commit it:

git commit -m ".gitignore is now working"

git rm --cahced {ignore file}

 如果要将某个文件或者文件夹添加到gitignore中,如果该文件或者文件夹已经提交过,则必须使用

git rm --cahced {ignore file}, 这样即可立即通过git status观察到.gitignore中被过滤的文件的变化。

可配合使用git rm --cached * , git reset等操作。

  注意需要git push  

 八、使用Git 打 diff/patch 并应用该diff和Patch

1. 将所有的改动打成patch / diff

git diff > new.diff

2. 将某个文件(file2)的改动打成patch /diff

git diff file2 > file2.diff

3. 引用diff

git apply new.diff

 

九、怎样撤销commit的内容。

1、git reset HEAD~N 其中N是你想回滚到第几个Commit之前

比如你想撤销最近一次的提交,则使用git rest HEAD ~1

 

如果想要了解git reset的更多常用操作,参照博客:

http://josh-persistence.iteye.com/admin/blogs/2101428

 

Git在提交之前撤销add操作:

在使用git add后,发现有很多文件是不想添加到git库中的,比如说一些需要忽略的文件在git add之前忘记在.gitignore文件中设置需要忽略的文件或文件夹了。

由于此时还没有提交所以不存在HEAD版本,不能使用 git reset HEAD命令。

解决办法:

撤销全部git add的文件 :

git rm -r --cached .

 

撤销文件夹target中的全部文件

git rm -r --cached target/

 

撤销添加的文件file

git rm  --cached file

 

十、git push --all提交新创建的branch

 如果要将本地新添加的branch,如maui这个branch提交到remote,则使用git push是不行的,必须使用

git push --all.

 

十一、恢复对所有文件的更改: git checkout -- *           git checkout *

 

十二、Tortoise git 做merge。如果将Branch A的内容merge到master上。

先git checkout master

然后右击project,在Tortoise git中选择merge并选择From为A。

最后再在master上执行git push操作。

 

十三、Git中删除branch

 1、删除local的branch

git branch -D {branchname}

 -D将直接删除该branch,如果使用-d,如果git发现当前要删除的branch和origin fork来的branch没有进行merge,则提示不能删除,需要进行merge。

 

2. 删除remote的branch

git branch -rd origin/{branchname}

以删除远程branch的josh 为例: 即以git branch -rd origin/josh为例子 :

1) git branch -rd origin/josh

注意: 使用该命令成功删除josh这个branch后,如果使用git branch -a查看,仍旧可以查看到josh的存在

如果使用git push进行提交该删除操作后再使用git branch -a后可以看到josh已经不存在。

但是如果通过url去远程查看时,josh这个branch还存在。

 

2) git push origin --delete josh

执行该命令后,无论是通过git branch -a还是在远程查看,josh这个branch都被删除了。

 

 十四:linux上安装git

sudo apt-get install git-core

 

 

 

猜你喜欢

转载自josh-persistence.iteye.com/blog/1885403