基础操作
初始化仓库
如果打算使用 Git 来对现有的项目进行管理,需要在项目目录中执行如下命令:
git init
该命令将创建一个名为.git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。这一命令仅仅是做了一个初始化的操作,项目中的文件并没有被跟踪。
git add .
该命令来实现对所有文件的跟踪,git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。git add 命令是一个多功能命令,可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
git commit -m "提交描述"
该命令实现对文件修改的提交
git clone [url]
克隆 git 仓库
git clone https://github.com/libgit2/libgit2
该命令会在当前目录下创建一个名为"libgit2"的目录,并在这个目录下初始化一个.git 文件夹,从远程仓库拉取下所有数据放入.git 文件夹,然后从中读取最新版本的文件的拷贝。
git clone https://github.com/libgit2/libgit2 mylibgit
自定义本地仓库名称为 mylibgit
跟踪新文件和暂存已修改文件
git add
命令用来跟踪新文件和暂存已修改文件。
# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录的所有文件到暂存区
git add *
# 添加每个变化前,都会要求确认。对于同一个文件的多处变化,可以实现分次提交
git add -p
如上图所示:
只要在 Changes to be committed
这行下面的,就说明是已暂存状态。
出现在 Changes not staged for commit
这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区,要暂存这次更新,需要运行 git add
命令。
来看一个更直观的图:
- 上图中绿色的文件是已经暂存的,即被
git add
了,可以使用git reset HEAD index.js
恢复到没有被 add 的状态; - 上图中红色的文件是未暂存的,仅仅是当前工作区的修改,可以使用
git checkout -- README.md
放弃当前工作区的修改;
在提交文件之前首先要添加文件到分支中,很多人只知道: git add .
。如果有文件删除,会发现这些删除的文件并没有被附加进去,怎么?
#方式一
git add --all .
#方式二
git add -A .
- –all 参数,顾名思义,添加所有文件(change|delete|add)
- -A 参数,添加修改过和删除过的文件(change|delete)
- 不加 参数,添加修改过和添加的文件(change|add)
提交文件
# 提交暂存区到仓库区
git commit -m "comment"
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m "comment"
# 提交工作区自上次 commit 之后的变化,直接到仓库区
git commit -a
# 提交时显示所有 diff 信息
git commit -v
# 使用一次新的 commit,替代上一次提交。如果代码没有任何新变化,则用来改写上一次 commit 的提交信息
git commit --amend -m [message]
# 重做上一次 commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ...
# 如果没有删除过文件,可以合并添加和提交文件为一步
git commit -am "add and commit"
远程提交
首次推送
# 添加当前目录的所有文件变更到暂存区
git add .
# 提交暂存区到仓库区
git commit -m [message]
# 为远程 Git 更名为 origin
git remote add origin git@github.com:abcd/tmp.git
# 推送此次修改,这是首次推送需要加上-u,之后推送就可以直接 git push origin master,origin 是远程 Git 名字,这个可以自己定义,不过一般是用 origin,master 是默认的分支,如果不在 master 分支提交需要写清楚分支名称
git push -u origin master
将代码更改提交到远程仓库上:
# 将 master 提交到 origin 上
git push origin master
这一步操作可能会出现很多的问题,比如:
a) origin 为一个多人开发的库,别人在你提交之前已经向 origin 上提交过一次(或者多次),那么此时你的版本是落后于远程服务器版本的,你需要先拉去线上最新的代码:
# 拉去远程分支到 master
git pull origin master
b) 执行 a) 之后,有可能也会有提醒:存在冲突,需要合并分支;
c) 如果你很自信,觉得线上的版本是存在问题,你这个版本没有问题,你可以强制提交你的代码:
git push -u origin master -f
这里需要特别注意,加了 -f
参数,线上之前的修改就会被删掉,请谨慎使用!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论