1.基本操作
1.1 创建版本库
在某个目录下执行 git init
可以把该目录变成可以管理的仓库。
1.2 添加文件到仓库
仓库建好后可以将文件添加到仓库,使用 git add <文件名>
将具体文件添加到仓库中,可以多次使用添加多个文件。也可以使用 git add -A
添加所有改变的文件。
1.3 提交文件到仓库
使用 git commit
将之前添加的文件提交到仓库中。一般配合参数 m 使用,git commit -m ‘message’
,message 即为提交的信息。
1.4 查看状态
git status
可以查看当前工作目录和暂存区的状态。当我们在某个目录下执行 git init
后,该目录下会出现一个隐藏的文件夹 .git
,这个文件夹是 git 的版本库,其他的可见区域是工作目录,在那个隐藏的版本库中还有一个暂存区。当我们执行 git add
的时候,文件被添加到版本库中的暂存区,执行 git commit
的时候,文件才被提交到当前分支。
当我对工作目录文件作出改动,执行 git status
时可以看到下面的信息:
1 | zhang:gittest zhang$ git status |
以上信息显示我修改了 test_git.txt 文件,我新建的文件 another_tset.txt 处于未跟综状态。当这两个文件都添加后,再执行 git status
显示如下信息:
1 | zhang:gittest zhang$ git status |
使用 git commit
提交:
1 | zhang:gittest zhang$ git status |
1.5 远程连接
可以通过 git remote
让本地的版本库与远程仓库比如 GitHub 连接。先在 GitHub 上建一个仓库,复制远程仓库的 url ,通过 git remote add git_test https://github.com/dongyingdepingguo/test_git.git
可以让本地仓库与远程仓库连接。其中 git_test
为远程仓库的名字,自己随意命名。
连接远程仓库时需要输入 GitHub 的用户名和密码,可以在用户根目录下编辑(没有就创建一个).git-credentials
文件,在其中添加内容 https://{username}:{password}@github.com
。这样以后再进行远程操作就不需要每次都输入用户名和密码。
2. git同时push到多个远程仓库
使用 git remote -v
可以看到远程仓库的情况:
1 | zhang:gittest zhang$ git remote -v |
可以看到 push
和 fetch
都来自同一个 远程库,当我们想把一个项目同时提交到多个远程仓库的时候,可以使用以下命令:
1 | git remote set-url --add git_test https://github.com/dongyingdepingguo/another_test_git.git |
这时再查看远程仓库:
1 | zhang:gittest zhang$ git remote -v |
3. 撤销已经push的内容
如果我不小心把代码 push 到 GitHub 上了,但 push 的内容又不是我想要的,我怎么退回呢?
- 使用
git reflog
查看想要退回的版本。 - 使用
git reset –soft HEAD~2
(2是要退回的版本) 退回到该版本,这种方式可以保证本地文件不变,但所有的改动都保存在暂存区,如果用的是git reset –hard HEAD~2
直接把本地文件也改到当前版本。 - 使用
git rm –cached xxxxx
清除暂存区中你不想改动但被改动的文件(xxxx是文件名)。 - 使用
git commit
提交 - 使用
git push 仓库名 分支名 –force
强制提交,如果不加 force 会提醒你当前分支版本低于远程分支版本,要用 force 覆盖。
4. git 从仓库中删除已被跟踪的文件
有些文件我们不愿意同步到 GitHub 中,可以将文件添加到 .gitignore 中。但有时候我们做着做着才发现这个文件中有些隐私,此时再添加到 .gitignore 中已经晚了,因为远程仓库已经在跟踪这个文件了,这时候怎么办?
- 把这个文件添加到 .gitignore 中。
- 然后执行
git rm –cached 文件名
或者git rm –cached -r 目录
。 - 最后执行
git add –all
、git commit
和git push
。