# git common cmd **Repository Path**: langjhowe/git-common-cmd ## Basic Information - **Project Name**: git common cmd - **Description**: 用于学习 git 操作 和 记录 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-03 - **Last Updated**: 2022-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git Common CMD #### 介绍 记录git 命令行常用操作 推荐一个比较全面详尽的 [*Git教程*](https://www.yiibai.com/git/git_add.html) - - - ### 常用的操作 ##### 一、本地切换到新建分支,并推送到远端 1. `git branch` 建议先用git branch 先查看分支,跟着前面的分支命名 参数tips: *`-a`* 显示本地和远程分支(有时候太多分支并不能看到全部) *`-r`* 显示远端分支 2. `git checkout -b branch_name` 不带 ***-b*** 时任何参数是切换存在的分支 3. `git push origin local_branch:remote_branch` 推送到远端 *`local_branch`* :本地已经创建的分支名 *`remote_branch`* :推到远端的分支名(不存在则会创建) tips:如果remote_branch为空,则是清除远端分支 - - - ##### 二、本地建立的仓库 推送 到远端已经创建的仓库 1. `git init`(初始化目录为git目录)在目标文件夹下执行 2. `git remote add origin git@....../xxxxx.git` 关联git远端的仓库地址 3. `git pull origin master` 先同步下把远端origin master主干的代码拉下来 只是`git pull`终端会提示,提示设置拉取的关联的分支 ``` There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/ master ``` 一般的话`git pull origin master`即拉取并设置关联主干分支,(当前仓库下的git pull 都是拉取主干的代码) 如果需要拉取并关联某分支下的代码,则使用`git branch --set-upstream-to=origin/ master` 例如:设置拉取的分支名为 example_branch 的分支 `git branch --set-upstream-to=origin/example_branch` 4. `git add .` 把本地建立的项目 全部 暂存 5. `git commit -m 'first commit' -n` tips:
没有参数 *`-m`* 时,会进入vim编辑器;
按下字母键i或a或o,此时进入到可编辑状态,这时就可以输入你的注释;
当你输入完之后,按下 *`Esc`* 键就可退出编辑状态,回到一般模式。
最后就是怎么退出vim编辑器并提交commit, 有两种方法:
输入两字大写字母```ZZ```(记住是大写)
输入```:wq```或```:wq!```(强行退出)
6. 如果在第3步只用了`git pull origin master`,实际上只是设置了拉取,推送还未实现(`git branch ...`则设置了),如果使用`git push`命令,则会提示 ``` fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master ``` 执行以下操作 `git push --set-upstream origin master` 推到主干上 `git push --set-upstream origin example_branch` 推到分支名为 example_branch 的分支 * * * ##### 三、git无法pull仓库 出现 refusing to merge unrelated histories (原因:因为他们是两个不同的项目,要把两个不同的项目合并) 执行`git pull origin master --allow-unrelated-histories` *** ##### 四、远端回滚到某个commit代码 1. 通过 `git log` 找到commit_id 参数tips: *`-number`* 查看最近number次的记录 例如 `git log -3` 查看最新3条git commit 记录 *`(--pretty=format:"%H %s")`* 格式化查看 commit 信息 `%H` 完整commit_id `%s`提交的message信息 2. `git reset --hard commit_id` 回滚到某次commit 3. `git push origin HEAD --force` 强推到远端 ***** ##### 五、从一个git仓库迁移到另外一个git仓库 1. 先登录远程git服务修改仓库名称。 ```git clone --bare git://xxx/xxx/xxx.git``` 2. 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe。 3. 以镜像推送的方式上传代码到 GitCafe 服务器上。 ``` cd project.git git push --mirror git@gitcafe.com/username/newproject.git ``` 4. 删除本地代码 ``` cd .. rm -rf project.git ``` 5. 到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。 ``` git clone git@gitcafe.com/username/newproject.git ``` 这种方式可以保留原版本库中的所有内容。 注意: 一旦推送,暂找不到恢复原仓库记录 > [从一个git仓库迁移到另外一个git仓库--CrazyLiuXP](https://www.jianshu.com/p/3ac62052ebec)