一、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
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