Git与Github常用命令

工作中经常会使用到git命令来进行代码版本管理,总结了一些常用场景下的命令,在此分享出来。

托管自己编写的代码

步骤

1
2
3
4
5
git init
git add .
git commit -m "first commit"
git remote add origin git@github.com:my/test.git
git push -u origin master

步骤说明

  1. 首先在GitHub上创建一个仓库,把地址复制下来,如:https://github.com/my/test.git

  2. 打开GitBashcd到要提交的项目根目录下,输入git init命令初始化仓库,此时在项目文件夹下会出现.git隐藏文件夹

  1. 使用命令git add .添加所有文件到暂存区。在修改代码之后,可以单独使用git add 文件名(后面是你修改过的文件) 添加指定修改的文件到暂存区

  2. git commit -m "first commit",提交代码。"first commit"部分为本次提交的更新说明

  3. 关联远程仓库:git remote add origin https://github.com/my/test.git(后面是你的仓库地址)

  4. 我们可以通过命令git status来查看是否还有文件未提交,如果有红色文字出现,说明还有文件未提交。

  5. git push -u origin master (推送到远程仓库)。

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时,只要做了提交就可以使用命令git push origin master进行推送。

可能出现的错误

一、错误信息

1
2
3
4
5
6
7
8
9
10
my@my MINGW64 /e/gitProjects/text (master)
$ git push origin master
To git@github.com:my/text.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:my/text.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

二、问题分析

出现这种问题的原因一般都是代码仓库存在本地没有的文件。

github上查看远程repository,会发现有一个README.md文件(本地代码中没有),而出现错误的原因是github中的README.md文件不在本地代码目录中。

也就是说我们需要先将远程代码库中的任何文件先pull到本地代码库中,才能push新的代码到github代码库中。

三、解决问题

方法一

  1. 将远程代码库中的代码pull到本地代码库,并且执行合并merge

    1
    $ git pull --rebase origin master
  2. 再次push代码:

    1
    $ git push origin master

我们看到本地代码已经成功的提交到远程代码中,至此问题解决。

方法二

在创建仓库时,不要勾选生成README.md文件。

方法三
在创建仓库时,如果勾选生成README.md文件,可以复制项目地址,在想提交的项目根目录下,使用命令git clone git@github.com:my/test.git,然后再进行上述的第三步以及之后的操作。

修改fork的代码之后提交

如何在github上面将他人的项目拷贝到自己的本地,修改代码之后重新上传到自己的项目主页,同时通知原项目开发者。

步骤

1
2
3
4
5
6
git clone "刚才fork下来后项目的地址"
git remote add upstream "项目原地址"
git fetch upstream
git add .
git commit -m "更新说明"
git push "fork后的地址"

步骤说明

  1. 在任意一个github项目上点击Fork到自己的主页
  2. clone到本地

    1
    git clone '刚才fork下来后项目的地址'
  3. 在刚才clone下来的文件夹内,添加与原始库的关联,命名为upstream,此地址是原项目开发者的项目主页上的clone的地址,这是专门用来与主开发者保持相同进度的方法:

    1
    git remote add upstream "项目原地址"

从原始库中抓取最新的更新,我们需要使用是git fetch upstream命令。这命令会自动选择更改过的代码文件进行更新。

1
git fetch upstream

  1. 在本地修改完文件测试完成之后,将代码提交到我们自己的fork出来的项目主页。

    1
    2
    3
    git add .
    git commit -m "更新说明"
    git push 'fork后的地址'
  2. 在项目主页代码目录如图所示的位置,点击绿色的按钮,然后就可以比较你的版本和源中代码的差别,然后就可以选择发送一个Pull request给主开发者,添加修改的原因描述。然后就等待主开发者去merge了。

image

多人协作

步骤

1
2
3
4
5
6
7
8
9
git clone 项目地址
git checkout -b 分支名
git add .
git commit -m "更新说明"
git push origin 分支名
git checkout master
git pull origin master
git merge 分支名
git push origin master

步骤说明

  1. 首先clone代码到本地仓库

    1
    git clone '项目地址'
  2. 如果分支存在则只切换分支,若不存在则创建并切换到指定分支,

    1
    git checkout -b 分支名

如果只是查看分支,可以使用git branch命令,不需带任何参数。

  1. 提交对新分支的更改到远程仓库

    1
    2
    3
    git add .
    git commit -m "更新说明"
    git push origin 分支名
  2. 使用git checkout master切回到master分支

  3. 如果master分支有修改,使用
    1
    git pull origin master

更新远程仓库的修改到本地仓库

  1. 合并分支到master,并提交到远程仓库
    1
    2
    git merge 分支名
    git push origin master

补充

可能会用到的命令

1
2
3
4
5
6
7
8
9
10
git branch       //不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记
git branch -r //查看远程版本库分支列表
git branch -a //查看所有分支列表,包括本地和远程
git branch dev //创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
git branch -d dev //删除dev分支,如果在分支中有一些未merge的提交,那么会删除分支失败
git branch -D dev //强制删除dev分支
git branch -m oldName newName //给分支重命名

git checkout 文件名 //放弃单个文件的修改
git checkout . //放弃当前目录下的修改

附录

Git 基础 - 撤消操作

vim 基础操作

Git 教程

Learn Git Branching


感谢打赏,错误之处欢迎指正交流(`・ω・´) !~~



文章目录
  1. 1. 托管自己编写的代码
    1. 1.1. 步骤
    2. 1.2. 步骤说明
    3. 1.3. 可能出现的错误
      1. 1.3.1. 一、错误信息
      2. 1.3.2. 二、问题分析
      3. 1.3.3. 三、解决问题
  2. 2. 修改fork的代码之后提交
    1. 2.1. 步骤
    2. 2.2. 步骤说明
  3. 3. 多人协作
    1. 3.1. 步骤
    2. 3.2. 步骤说明
    3. 3.3. 补充
  4. 4. 附录
|