一般来说,HTTP和SSH的方式GIT都支持,但也不绝对,如果HTTP不行,就换SSH。反之亦然。
如果是自定义目录,则可能如下:
git clone [email protected]:username/GitTest.git my_gittest
指定repository的克隆,这种方式会把这个repository下的所有branches都创建一遍,但只有一个当前活跃的分支是被check out下来的。
git remote remove <repository-name>
git remote rename <old> <new>
包括被修改的文件,没有被追踪的文件在这里会显示出来。
git status
Stage被修改的文件:
git add project/src/main/webapp/css/tab.css
git status -- project/src/main/webapp/css/tab.css
git log -- project/src/main/webapp/css/tab.css
git diff -- project/src/main/webapp/css/tab.css
git reset<paths>
paths默认是HEAD,也可以自定为其它文件名和路径。
比如git reset -- frotz.c
另外,对某个文件使用git reset会使某个刚被添加的文件从被追踪记录中去除,是git add的反向命令。
git commit –m "commit messages"
git commit –a或者 git commit –all
git reset --soft commits
commits格式: HEAD、 HEAD^、HEAD~2,分别代表最近的三个提交。
index的内容是指被staged的改动。
git add project/src/main/*.css
working tree的叶节点就是有改动(但没有加入index,就是没有被staged)的文件。
git stash
git rm -- a.css
git rm --cached -- a.css
git rm -r folder
git rm -r -f folder
git pull origin master
解释: origin是一个repository名字,master是一个分支。
git branch
git branch --remotes
git branch -a
git branch <branchname>
这还只是本地创建分支,本地创建成功后,还需要git push提交到远程服务器。
git branch --set-upstream-to=origin/<branch>
git branch (-d | -D) <branchname>
-D与-d的区别是,-D有强制删除的意思,忽略merge状态。
git branch (-d | -D) -r origin/<branchname>
这个命令并不能删除真正的远程分支,只是删除本地的远程分支,下次git fetch/pull又会重新从真正的远程拿下来。
要删除真正的远程分支,还得登陆github,在github上删除真正的远程分支。
git branch (-m | -M) [<oldbranch>] <newbranch>
git config --global push.default current
push.default的值有以下可能: nothing,matching, upstream, current。
如果不配置,每次就得手动写成这样:
git push origin my-branch
git config user.name Linus Yan git config user.email [email protected]
git config credential.https://github.example.com.username linus
密码部分稍复杂,需要保存,保存方式有两种:
git config --global credential.helper 'store --store=~/.git-credentials'
如果是单个项目,但使用的是global设置:
git config credential.helper 'store'
.git-credentials文件的内容:
格式:https://user:[email protected]
下面这个例子用的是token取代pass(因为使用了2FA):
https://linus:[email protected]
git merge topic
因为git是分布式系统,所以本地和服务器上的历史可能不一致,因此需要把服务器上的和本地的进行合并。
topic指的就是本地分支上一个命名的commit。
git merge --abort
使用前提:使用git merge前,不能有没有提交的改动。否则git无法还原。
git checkout <branchname> git pull
首先用git checkout换掉当前工作分支,然后再用git pull拿取服务器上最新的代码。
有时候直接git pull无效,尝试使用如下命令:
git pull origin <branchname>
git checkout <branchname> git pull
首先checkout另一个分支到本地并拿到最新代码,然后回到当前分支
git merge<branchname>
再用merge就可以了。
假设当前分支是topic:
A---B---C topic
/
D---E---F---G master
// topic为副分支,master为主分支
git rebase master topic之后将是:
A'--B'--C' topic
/
D---E---F---G master
git remote set-url origin git://github.scm.corp.ebay.com/my-org/my-repo.git