Git 命令行

Publish by https://www.leachchen.com/

Git命令行比打开客户端操作更快捷,持续更新。

远程仓库相关命令

  1. 克隆项目

    git clone https://github.com/leach-chen/leach-chen.github.io.git

  2. 查看远程仓库

    $ git remote -v

  3. 添加远程仓库

    $ git remote add [name] [url]

  4. 删除远程仓库

    $ git remote rm [name]

  5. 修改远程仓库

    $ git remote set-url –push[name][newUrl]

  6. 拉取远程仓库

    $ git pull [remoteName] [localBranchName]

  7. 添加更新

    git add . //.代表添加文件夹下所有文件

  8. 提交更新

    git commit -m “first commit” //引号里面的为注释

  9. 推送远程仓库

    $ git push [remoteName] [localBranchName]

  10. 仓库迁移
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
  1. 免密码

    方式一(该方式设置了我不知道怎么取消记住密码):
    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’

  2. 设置用户名及邮箱

    git config –global user.name “Your Name”
    git config –global user.email you@example.com

分支(branch)操作相关命令

  1. 查看本地分支

    $ git branch

  2. 查看本地分支及映射

    git branch -a

  3. 查看远程分支

    $ git branch -r

  4. 创建本地分支

    $ git branch [name] —-注意新分支创建后不会自动切换为当前分支

  5. 切换分支

    $ git checkout [name]

  6. 创建新分支并立即切换到新分支

    $ git checkout -b [name]

  7. 删除分支

    $ git branch -d [name] —- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

  8. 合并分支

    $ git merge [name] —-将名称为[name]的分支与当前分支合并

  9. 创建远程分支(本地分支push到远程)

    $ git push origin [name]

  10. 删除远程分支

    $ git push origin :heads/[name]

  11. 我从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分支了。

  12. 如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

    $ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支 $ git push origin test:test // 提交本地test分支作为远程的test分支

  13. 如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

    $ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

版本(tag)操作相关命令

  1. 查看版本

    $ git tag

  2. 创建版本

    $ git tag [name]

  3. 删除版本

    $ git tag -d [name]

  4. 查看远程版本

    $ git tag -r

  5. 创建远程版本(本地版本push到远程)

    $ git push origin [name]

  6. 删除远程版本

    $ git push origin :refs/tags/[name]

  7. 推送所有tag

    git push origin –tags

  8. tag迁出branch:

    git checkout tagname git checkout -b new_branch_name

git stash暂存相关命令

  1. 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

    git stash

  2. 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复

    git stash pop

  3. 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复

    git stash list

  4. 清空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 & 参考

Leach Chen

Leach Chen

I am an Android developer.I will add description latter.