Git 使用教程

发布 : 2018-01-10 分类 : Notes 浏览 :

一. Windows上安装Git

访问官网https://git-scm.com/download/win下载对应版本的安装包。
安装完成后,从 开始菜单 —> Git —> Git Bash,打开命令行工具。
为了确认是否安装成功,我们执行 version 命令,如果正常显示Git的版本号就表示Git已经成功安装了。

1
git --version

输出:git version 2.9.0.windows.1

二. 创建远程代码库

推荐使用Github远程代码库,访问Github官网,注册一个账号并登录,然后创建一个代码仓库。
Github针对免费用户只能创建公共的代码仓库,收费用户才能创建私有仓库。
当然也可以使用其他的远程代码库,比如微软的Visual Studio Team Services,或者BitBucket,还有国内的Coding

三. 配置Git

在使用Git之前,我们对Git做一个初始配置,我们需要设置用户名和电子邮箱。以便之后我们提交了代码后,Git能跟踪和标记是谁做了修改。
在命令行工具中,依次执行如下命令进行设置:

1
2
git config --global user.name "<使用者名字>"
git config --global user.email "<电子邮箱>"

注意:替换掉命令中的<使用者名字><电子邮箱>,注意保留命令中的双引号。强烈推荐您使用与远程代码库中相同的用户名和电子邮箱
配置完成后,我们也可以执行以下命令进行查看:

1
2
git config --global user.name
git config --global user.email

Windows上的控制台遇到中文名称的时候会显示为类似”\346\226\260\350\246…”这样的字符,执行以下命令让它显示出正确的中文:

1
git config --global core.quotepath off

四. 创建一个本地代码库

在Windows上,我们创建一个本地文件夹,比如D:\GitHub\my_project,将my_project文件夹作为本地代码库。
在命令行中执行以下命令,导航到my_project目录:

1
cd D:\GitHub\my_project

再执行以下命令来初始化当前目录为本地Git代码库:

1
git init

Git会在my_project文件夹内创建一个名为.git的隐藏文件夹,那就是你的本地代码库。
注意:之后对该本地仓库执行的所有命令都必须在my_project目录下

五. 将修改的文件添加到缓存区

当我们新增或编辑了代码库my_project中的文件,我们需要将文件添加到缓存区。
在命令行中执行以下命令:

1
git add .

最后的“.”符号的意思是仓库下的“所有文件、文件夹和子文件夹”。
假如我们只想要把特定文件添加到源代码控制中去,我们可以显示的指定它们,使用命令git add <filename>

1
git add my_file, my_other_file

六. 提交文件改动

使用如下命令,将改动提交到本地HEAD区,此时还并没有同步到远程代码库:

1
git commit -m "代码提交信息"

输入提交信息时,如果需要输入中文,则使用 -m 参数
注意:提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。

现在我们随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:

1
git status

七. 回滚到之前的提交状态

在某些时候,你可能想要回到之前的代码版本。首先,你需要找到你想回到哪个版本。要看所有的提交记录:

1
git log

这会输出你的提交的历史记录,像这样:

1
2
3
commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate:   Mon Nov 4 12:52:11 2013 -0700    changes the frontpage layout
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate: Mon Nov 4 11:40:33 2013 -0700 adds my new feature
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate: Mon Nov 4 10:37:28 2013 -0700 initial commit

如果你想回到“adds my new feature”这个提交,简单地用提交的ID做签出(checkout)(我通常只用到ID开头的9个字符)

1
git checkout 085bb3bcb

你也可以签出到一个新的分支,像这样:

1
git checkout -b my_previous_version 085bb3bcb

八. 推送到远程代码库

在第一次你想推送一个本地代码库到远程代码库时,你需要把它添加到你的项目配置里。

1
git remote add origin https://your_username@github.com/your_username/name_of_remote_repository.git

注意:这里的“origin”只是一个习惯。它是你的远程代码库的别名,但是你可以用其他任何你喜欢的词。你甚至可以有多个远程代码库,你只需要给它们起不同的别名。
之后执行如下命令以将这些改动提交到远端仓库:

1
git push origin master

可以把master换成你想要推送的任何分支。
注意:此时可能会提示要求输入远程代码库的用户名和密码。

九. 克隆远程代码库

如果远程代码库中已经有一份代码,需要将代码拷贝到本地(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目)

1
git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下:

1
git pull origin master

十. 创建分支

建立分支是你创建代码的独立版本的动作,独立于你的主干分支。默认地,每次你提交到Git的文件都会被储存到master(主干)分支。
比如说,我们想要向项目里添加一个新的功能,但是有可能最后会放弃这个功能,此时就想要能够回滚到添加新功能之前的版本。这就是你创建分支的时候了。
通过如下命令创建并同时切换到你新建的分支

1
git checkout -b new_feature

或者,可以先创建一个分支然后手动切换

1
2
git branch new_feature
git checkout new_feature

查看项目下所有的分支

1
git branch

注意:你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。

十一. 合并分支

当你对你的新功能满意了的时候,你想要把它加到主干分支上。
首先将新功能分支上的修改进行提交:

1
2
git add .
git commit -m "adds my new feature"

然后移到主干分支:

1
git checkout master

通过如下命令进行合并:

1
git merge new_feature

此时,你的主干分支中就包含了新功能分支中的最新修改了。

十二. 丢弃分支

相反,如果打算丢弃你在分支里做的修改,我们还是先将新功能分支中的修改进行提交:

1
2
git add .
git commit -m "feature to be discarded"

然后,就可以不用理会这个新功能分支了,再切换到主干分支:

1
git checkout master

现在,你的代码处于你创建分支之前的状态了,因为主干分支中并没有包含新功能分支的任何修改。

十三. 删除一个分支

在主干(master)分支上执行如下命令,删除新功能分支:

1
git branch -d new_feature

假如新功能分支的修改已经合并到主分支了,它将会删除新功能分支。假如新功能分支没有合并,将会得到一个错误信息。
我们想要强制删除一个未合并的分支(通常你不想保留的修改),需要在上面的命令中附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:

1
git branch -D new_feature

十四. 查看状态

我们可以通过以下命令来查看Git状态:

1
git status

将会显示是否还有文件未提交。
我们也可以比较某个文件,查看该文件到底修改了什么内容:

1
git diff readme.txt

十六. 别名

Git允许你为你常用的命令创建快捷方式(别名)。例如,如果你不想每次都输入git commit -m "some comment",而是输入git c "some comment",你可以向你的git全局配置里添加一个别名来实现,像这样:

1
git config --global alias.c 'commit -m'

您也可以参考如下配置:

1
2
3
4
5
6
7
8
git config --global alias.c 'commit -m'
git config --global alias.co 'checkout'
git config --global alias.cob 'checkout -b'
git config --global alias.br 'branch'
git config --global alias.m 'merge'
git config --global alias.a 'add .'
git config --global alias.s 'status'
git config --global alias.dbr 'branch -d'

十七. 常见问题

error: failed to push some refs to

当要push代码到git时,出现提示:

1
2
3
4
5
6
7
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to '_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.

原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。
有2个选择方式:

  • 1.强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
1
git push -f
  • 2.先把git的东西fetch到你本地然后merge后再push
1
2
git fetch
git merge

这2句命令等价于

1
git pull

本文作者 : 王海
原文链接 : https://blog.whai.me/2018/01/10/git-shi-yong-jiao-cheng/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹