Git 命令行
Publish by https://www.leachchen.com/
Git命令行比打开客户端操作更快捷,持续更新。
远程仓库相关命令
- 克隆项目
git clone https://github.com/leach-chen/leach-chen.github.io.git
- 查看远程仓库
$ git remote -v
- 添加远程仓库
$ git remote add [name] [url]
- 删除远程仓库
$ git remote rm [name]
- 修改远程仓库
$ git remote set-url –push[name][newUrl]
- 拉取远程仓库
$ git pull [remoteName] [localBranchName]
- 添加更新
git add . //.代表添加文件夹下所有文件
- 提交更新
git commit -m “first commit” //引号里面的为注释
- 推送远程仓库
$ git push [remoteName] [localBranchName]
- 仓库迁移
A:先从源仓库克隆:
a:git clone --bare git://github.com/username/project.git
b:cd project.git
c:在新的地址上创建仓库newproject.git
d:git push --mirror git@example.com/username/newproject.git
上述bare和mirror前面是两个横杠,上面地址有两种方式一种是http方式,这种每次都要输入账号密码,一种是SSH方式,配置了SSH方式后不用每次都输入账号密码
HTTP:http://xxx.com/android/demo.git
SSH:git@xxx.com:android/demo.git
B:避免每次输入密码可以添加ssh key
1:ssh-keygen -t rsa -C 'xxx@xxx.com' 然后一路回车(-C 参数是你的邮箱地址),
2:然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator),复制其中的内容
3:打开gitlab,找到Profile Settings-->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮
C:切换项目git路径:
git remote set-url origin git@example.com/username/newproject.git
- 免密码
方式一(该方式设置了我不知道怎么取消记住密码):
git remote set-url origin https://yourname:password@leach-chen/leach-chen.github.io.git @后面是仓库地址
方式二(该方式设置了,删除.git-credentials文件,即可取消记住密码):
在Git bash命令行里面输入:touch .git-credentials
然后会在 :C:\Users\你的用户名 目录下生成.git-credentials文件,打开该文件
输入:https://yourname:password@github.com,@后面跟的是域名
然后执行:git config –global credential.helper store
记住密码(默认15分钟):git config –global credential.helper cache
自定义存储时间:git config credential.helper ‘cache –timeout=3600’ - 设置用户名及邮箱
git config –global user.name “Your Name”
git config –global user.email you@example.com
分支(branch)操作相关命令
- 查看本地分支
$ git branch
- 查看本地分支及映射
git branch -a
- 查看远程分支
$ git branch -r
- 创建本地分支
$ git branch [name] —-注意新分支创建后不会自动切换为当前分支
- 切换分支
$ git checkout [name]
- 创建新分支并立即切换到新分支
$ git checkout -b [name]
- 删除分支
$ git branch -d [name] —- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
- 合并分支
$ git merge [name] —-将名称为[name]的分支与当前分支合并
- 创建远程分支(本地分支push到远程)
$ git push origin [name]
- 删除远程分支
$ git push origin :heads/[name]
-
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是’Everything up-to-date’,发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin 1. master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
- 如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
$ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支 $ git push origin test:test // 提交本地test分支作为远程的test分支
- 如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
版本(tag)操作相关命令
- 查看版本
$ git tag
- 创建版本
$ git tag [name]
- 删除版本
$ git tag -d [name]
- 查看远程版本
$ git tag -r
- 创建远程版本(本地版本push到远程)
$ git push origin [name]
- 删除远程版本
$ git push origin :refs/tags/[name]
- 推送所有tag
git push origin –tags
- tag迁出branch:
git checkout tagname git checkout -b new_branch_name
git stash暂存相关命令
- 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash
- 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复
git stash pop
- 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
git stash list
- 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了
git stash clear:
git rebase 使用
当前分支问题develop,从master拉取最新代码 git pull –rebase origin master 或者 git rebase develop 先将develop分支的代码checkout出来,作为工作目录 然后将master分支从develop分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了 如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成 如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)。
工具
SourceTree & git bash & Git desktop & 参考