Sanakey

Git与Github常用命令
工作中经常会使用到git命令来进行代码版本管理,本人总结了一些常用场景下的命令,在此分享出来。
扫描右侧二维码阅读全文
02
2018/07

Git与Github常用命令

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

git简易教程

托管自己编写的代码

步骤

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隐藏文件夹
  3. 使用命令git add .添加所有文件到暂存区。在修改代码之后,可以单独使用git add 文件名(后面是你修改过的文件) 添加指定修改的文件到暂存区
  4. git commit -m "first commit",提交代码。"first commit"部分为本次提交的更新说明
  5. 关联远程仓库:git remote add origin https://github.com/my/test.git(后面是你的仓库地址)
  6. 我们可以通过命令git status来查看是否还有文件未提交,如果有红色文字出现,说明还有文件未提交。
  7. git push -u origin master (推送到远程仓库)。

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

可能出现的错误

一、错误信息

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
$ git pull --rebase origin master
  1. 再次push代码:
$ git push origin master

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

方法二

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

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

修改fork的代码之后提交

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

步骤

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

步骤说明

  1. 在任意一个github项目上点击Fork到自己的主页
  2. clone到本地
git clone '刚才fork下来后项目的地址'
  1. 在刚才clone下来的文件夹内,添加与原始库的关联,命名为upstream,此地址是原项目开发者的项目主页上的clone的地址,这是专门用来与主开发者保持相同进度的方法:
git remote add upstream "项目原地址"

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

git fetch upstream
  1. 在本地修改完文件测试完成之后,将代码提交到我们自己的fork出来的项目主页。
git add .
git commit -m "更新说明"
git push 'fork后的地址'
  1. 在项目主页代码目录如图所示的位置,点击绿色的按钮,然后就可以比较你的版本和源中代码的差别,然后就可以选择发送一个Pull request给主开发者,添加修改的原因描述。然后就等待主开发者去merge了。

多人协作

步骤

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代码到本地仓库
git clone '项目地址'
  1. 如果分支存在则只切换分支,若不存在则创建并切换到指定分支,
git checkout -b 分支名

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

  1. 提交对新分支的更改到远程仓库
git add .
git commit -m "更新说明"
git push origin 分支名
  1. 使用git checkout master切回到master分支
  2. 如果master分支有修改,使用
git pull origin master

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

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

补充

可能会用到的命令

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 branch -m old_local_branch_name new_local_branch_name   //重命名git本地分支
git remote set-url origin git@192.168.1.18:mStar/OTT-dual/K3S/supernova  //git 修改远程仓库 remote origin

附录

Git 基础 - 撤消操作

vim 基础操作

Git 教程

Learn Git Branching

Last modification:November 3rd, 2019 at 04:00 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment

reimu.png